include/vcl/ctrl.hxx | 5 --- include/vcl/dialog.hxx | 1 include/vcl/layout.hxx | 1 include/vcl/menu.hxx | 2 - include/vcl/outdev.hxx | 41 +++++++++++++------------- vcl/inc/svdata.hxx | 2 - vcl/source/app/svdata.cxx | 2 - vcl/source/control/button.cxx | 5 +-- vcl/source/control/ctrl.cxx | 31 +------------------ vcl/source/outdev/text.cxx | 9 +---- vcl/source/window/dialog.cxx | 30 ------------------- vcl/source/window/menu.cxx | 41 -------------------------- vcl/source/window/menubarwindow.cxx | 36 ++++++---------------- vcl/source/window/menubarwindow.hxx | 6 --- vcl/source/window/menufloatingwindow.cxx | 10 +----- vcl/source/window/syswin.cxx | 13 +------- vcl/source/window/window.cxx | 11 ------ vcl/source/window/winproc.cxx | 21 +++++-------- vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 9 ----- vcl/unx/gtk/window/gtksalframe.cxx | 2 - vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 2 - 21 files changed, 52 insertions(+), 228 deletions(-)
New commits: commit bd99573a0c01b05baa66631cf36ab3acf75d1041 Author: Andras Timar <[email protected]> Date: Sun Apr 23 16:30:40 2017 +0200 Revert "tdf#92630 Enable auto-accelerator behaviour for gtk" This reverts commit e982c60bb8ca5d3c3ca66e0810cf459c444aa3aa. Change-Id: I3c903b519180f524aabb6060d0afef3b9b5cb143 diff --git a/include/vcl/ctrl.hxx b/include/vcl/ctrl.hxx index b85f561ce254..6741a229dd4d 100644 --- a/include/vcl/ctrl.hxx +++ b/include/vcl/ctrl.hxx @@ -41,9 +41,6 @@ protected: private: bool mbHasControlFocus; - bool mbFont; - bool mbForeground; - bool mbShowAccelerator; Link<> maGetFocusHdl; Link<> maLoseFocusHdl; @@ -185,8 +182,6 @@ public: OutputDevice* GetReferenceDevice() const; vcl::Font GetUnzoomedControlPointFont() const; - void SetShowAccelerator (bool val); - bool GetShowAccelerator (void) const; }; #endif // INCLUDED_VCL_CTRL_HXX diff --git a/include/vcl/dialog.hxx b/include/vcl/dialog.hxx index 1325231d1914..2dc4cc38ee49 100644 --- a/include/vcl/dialog.hxx +++ b/include/vcl/dialog.hxx @@ -107,7 +107,6 @@ public: private: bool ImplStartExecuteModal(); static void ImplEndExecuteModal(); - bool ImplHandleCmdEvent ( const CommandEvent& rCEvent ); public: // Dialog::Execute replacement API diff --git a/include/vcl/layout.hxx b/include/vcl/layout.hxx index 7e4b6d5ce2cd..90d0f2d5ff73 100644 --- a/include/vcl/layout.hxx +++ b/include/vcl/layout.hxx @@ -786,7 +786,6 @@ inline bool isContainerWindow(const vcl::Window &rWindow) { WindowType eType = rWindow.GetType(); return eType == WINDOW_CONTAINER || eType == WINDOW_SCROLLWINDOW || - eType == WINDOW_TABCONTROL || eType == WINDOW_TABPAGE || (eType == WINDOW_DOCKINGWINDOW && ::isLayoutEnabled(&rWindow)); } diff --git a/include/vcl/menu.hxx b/include/vcl/menu.hxx index 6636c8f8886d..57e6f0faf2f2 100644 --- a/include/vcl/menu.hxx +++ b/include/vcl/menu.hxx @@ -44,7 +44,6 @@ class HelpEvent; class Image; class PopupMenu; class KeyEvent; -class CommandEvent; class MenuFloatingWindow; namespace vcl { class Window; } class SalMenu; @@ -444,7 +443,6 @@ class VCL_DLLPUBLIC MenuBar : public Menu MenuBar* pMenu, const css::uno::Reference<css::frame::XFrame> &rFrame); SAL_DLLPRIVATE static void ImplDestroy(MenuBar* pMenu, bool bDelete); SAL_DLLPRIVATE bool ImplHandleKeyEvent(const KeyEvent& rKEvent, bool bFromMenu = true); - SAL_DLLPRIVATE bool ImplHandleCmdEvent(const CommandEvent& rCEvent); protected: diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 16723fd4eaf1..dbd57e6ad339 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -160,29 +160,30 @@ typedef std::vector< Rectangle > MetricVector; // Flags for DrawText() enum class DrawTextFlags { - NONE = 0x00000000, - Disable = 0x00000001, - Mnemonic = 0x00000002, - Mono = 0x00000004, - Clip = 0x00000008, - Left = 0x00000010, - Center = 0x00000020, - Right = 0x00000040, - Top = 0x00000080, - VCenter = 0x00000100, - Bottom = 0x00000200, - EndEllipsis = 0x00000400, - PathEllipsis = 0x00000800, - MultiLine = 0x00001000, - WordBreak = 0x00002000, - NewsEllipsis = 0x00004000, - WordBreakHyphenation = 0x00008000 | WordBreak, - CenterEllipsis = 0x00010000, - HideMnemonic = 0x00020000, + NONE = 0x0000, + Disable = 0x0001, + Mnemonic = 0x0002, + Mono = 0x0004, + Clip = 0x0008, + Left = 0x0010, + Center = 0x0020, + Right = 0x0040, + Top = 0x0080, + VCenter = 0x0100, + Bottom = 0x0200, + EndEllipsis = 0x0400, + PathEllipsis = 0x0800, + MultiLine = 0x1000, + WordBreak = 0x2000, + NewsEllipsis = 0x4000, + // in the long run we should make text style flags longer + // but at the moment we can get away with this 2 bit field for ellipsis style + CenterEllipsis = EndEllipsis | PathEllipsis, + WordBreakHyphenation = 0x8000 | WordBreak, }; namespace o3tl { - template<> struct typed_flags<DrawTextFlags> : is_typed_flags<DrawTextFlags, 0x3ffff> {}; + template<> struct typed_flags<DrawTextFlags> : is_typed_flags<DrawTextFlags, 0xffff> {}; } // Flags for DrawImage(), these must match the definitions in css::awt::ImageDrawMode diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index 46b3f67ce230..5e3282a246ec 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -281,8 +281,6 @@ struct ImplSVNWFData /// entire drop down listbox resembles a button, no textarea/button parts (as currently on Windows) bool mbDDListBoxNoTextArea:1; - bool mbEnableAccel:1; // whether or not accelerators are shown - bool mbAutoAccel:1; // whether accelerators are only shown when Alt is held down }; struct BlendFrameCache diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx index 035229011f02..86171b3a7738 100644 --- a/vcl/source/app/svdata.cxx +++ b/vcl/source/app/svdata.cxx @@ -86,8 +86,6 @@ ImplSVData::ImplSVData() memset( this, 0, sizeof( ImplSVData ) ); maHelpData.mbAutoHelpId = true; maNWFData.maMenuBarHighlightTextColor = Color( COL_TRANSPARENT ); - maNWFData.mbEnableAccel = 1; - maNWFData.mbAutoAccel = 0; } ImplSVGDIData::~ImplSVGDIData() diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 9795aee3d11a..f8820aaf30e6 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -504,9 +504,8 @@ void Button::ImplDrawAlignedImage(OutputDevice* pDev, Point& rPos, if (bDrawText) { - Rectangle aTOutRect( aTextPos, aTextSize ); - ImplSetFocusRect( aTOutRect ); - DrawControlText( *pDev, aTOutRect, aText, nTextStyle, pVector, pDisplayText ); + ImplSetFocusRect(Rectangle(aTextPos, aTextSize)); + pDev->DrawText(Rectangle(aTextPos, aTextSize), aText, nTextStyle, pVector, pDisplayText); } else { diff --git a/vcl/source/control/ctrl.cxx b/vcl/source/control/ctrl.cxx index c3c75444c4f4..fa7090ba1f1c 100644 --- a/vcl/source/control/ctrl.cxx +++ b/vcl/source/control/ctrl.cxx @@ -36,9 +36,6 @@ using namespace vcl; void Control::ImplInitControlData() { mbHasControlFocus = false; - mbFont = false; - mbForeground = false; - mbShowAccelerator = false; mpControlData = new ImplControlData; } @@ -380,16 +377,6 @@ void Control::ImplDrawFrame( OutputDevice* pDev, Rectangle& rRect ) pDev->OutputDevice::SetSettings( aOriginalSettings ); } -void Control::SetShowAccelerator(bool bVal) -{ - mbShowAccelerator = bVal; -}; - -bool Control::GetShowAccelerator() const -{ - return mbShowAccelerator; -} - ControlLayoutData::~ControlLayoutData() { if( m_pParent ) @@ -445,27 +432,15 @@ void Control::ImplInitSettings(const bool, const bool) void Control::DrawControlText( OutputDevice& _rTargetDevice, Rectangle& _io_rRect, const OUString& _rStr, DrawTextFlags _nStyle, MetricVector* _pVector, OUString* _pDisplayText ) const { - OUString rPStr = _rStr; - DrawTextFlags nPStyle = _nStyle; - - bool accel = ImplGetSVData()->maNWFData.mbEnableAccel; - bool autoacc = ImplGetSVData()->maNWFData.mbAutoAccel; - - if (!accel || (autoacc && !mbShowAccelerator)) - { - rPStr = GetNonMnemonicString( _rStr ); - nPStyle &= ~DrawTextFlags::HideMnemonic; - } - if ( !mpControlData->mpReferenceDevice || ( mpControlData->mpReferenceDevice == &_rTargetDevice ) ) { - _io_rRect = _rTargetDevice.GetTextRect( _io_rRect, rPStr, nPStyle ); - _rTargetDevice.DrawText( _io_rRect, rPStr, nPStyle, _pVector, _pDisplayText ); + _io_rRect = _rTargetDevice.GetTextRect( _io_rRect, _rStr, _nStyle ); + _rTargetDevice.DrawText( _io_rRect, _rStr, _nStyle, _pVector, _pDisplayText ); } else { ControlTextRenderer aRenderer( *this, _rTargetDevice, *mpControlData->mpReferenceDevice ); - _io_rRect = aRenderer.DrawText( _io_rRect, rPStr, nPStyle, _pVector, _pDisplayText ); + _io_rRect = aRenderer.DrawText( _io_rRect, _rStr, _nStyle, _pVector, _pDisplayText ); } } diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index 17bbb93c835f..173aa5278b3b 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -2242,9 +2242,6 @@ void OutputDevice::DrawCtrlText( const Point& rPos, const OUString& rStr, } } - bool accel = ImplGetSVData()->maNWFData.mbEnableAccel; - bool autoacc = ImplGetSVData()->maNWFData.mbAutoAccel; - if ( nStyle & DrawTextFlags::Disable && ! pVector ) { Color aOldTextColor; @@ -2281,8 +2278,7 @@ void OutputDevice::DrawCtrlText( const Point& rPos, const OUString& rStr, SetTextColor( GetSettings().GetStyleSettings().GetDisableColor() ); DrawText( rPos, aStr, nIndex, nLen, pVector, pDisplayText ); - if ( !(GetSettings().GetStyleSettings().GetOptions() & StyleSettingsOptions::NoMnemonics) && !pVector - && accel && (!autoacc || !(nStyle & DrawTextFlags::HideMnemonic)) ) + if ( !(GetSettings().GetStyleSettings().GetOptions() & StyleSettingsOptions::NoMnemonics) && !pVector ) { if ( nMnemonicPos != -1 ) ImplDrawMnemonicLine( nMnemonicX, nMnemonicY, nMnemonicWidth ); @@ -2294,8 +2290,7 @@ void OutputDevice::DrawCtrlText( const Point& rPos, const OUString& rStr, else { DrawText( rPos, aStr, nIndex, nLen, pVector, pDisplayText ); - if ( !(GetSettings().GetStyleSettings().GetOptions() & StyleSettingsOptions::NoMnemonics) && !pVector - && accel && (!autoacc || !(nStyle & DrawTextFlags::HideMnemonic)) ) + if ( !(GetSettings().GetStyleSettings().GetOptions() & StyleSettingsOptions::NoMnemonics) && !pVector ) { if ( nMnemonicPos != -1 ) ImplDrawMnemonicLine( nMnemonicX, nMnemonicY, nMnemonicWidth ); diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx index df77652c023d..4ce15de79aab 100644 --- a/vcl/source/window/dialog.cxx +++ b/vcl/source/window/dialog.cxx @@ -585,31 +585,6 @@ IMPL_LINK_NOARG(Dialog, ImplAsyncCloseHdl) return 0; } -bool Dialog::ImplHandleCmdEvent( const CommandEvent& rCEvent ) -{ - if (rCEvent.GetCommand() == CommandEventId::ModKeyChange) - { - const CommandModKeyData *pCData = rCEvent.GetModKeyData (); - - Window *pGetChild = firstLogicalChildOfParent(this); - while (pGetChild) - { - Control *pControl = dynamic_cast<Control*>(pGetChild->ImplGetWindow()); - if (pControl && pControl->GetText().indexOf('~') != -1) - { - if (pCData && pCData->IsMod2()) - pControl->SetShowAccelerator(true); - else - pControl->SetShowAccelerator(false); - pControl->Invalidate(INVALIDATE_UPDATE); - } - pGetChild = nextLogicalChildOfParent(this, pGetChild); - } - return true; - } - return false; -} - bool Dialog::Notify( NotifyEvent& rNEvt ) { // first call the base class due to Tab control @@ -653,11 +628,6 @@ bool Dialog::Notify( NotifyEvent& rNEvt ) } } - else if (rNEvt.GetType() == MouseNotifyEvent::COMMAND) - { - if (ImplHandleCmdEvent( *rNEvt.GetCommandEvent())) - return true; - } } return nRet; diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx index e5af0093e4ae..12b9681aa42a 100644 --- a/vcl/source/window/menu.cxx +++ b/vcl/source/window/menu.cxx @@ -2022,12 +2022,6 @@ void Menu::ImplPaint(vcl::RenderContext& rRenderContext, aTmpPos.Y() += nTextOffsetY; DrawTextFlags nStyle = nTextStyle | DrawTextFlags::Mnemonic; - const Menu *pMenu = this; - while (!pMenu->IsMenuBar() && pMenu->pStartedFrom) - pMenu = pMenu->pStartedFrom; - if (pMenu->IsMenuBar() && (static_cast<MenuBarWindow*>(pMenu->pWindow.get()))->GetMBWHideAccel()) - nStyle |= DrawTextFlags::HideMnemonic; - if (pData->bIsTemporary) nStyle |= DrawTextFlags::Disable; MetricVector* pVector = bLayout ? &mpLayoutData->m_aUnicodeBoundRects : NULL; @@ -2608,37 +2602,6 @@ bool MenuBar::ImplHandleKeyEvent( const KeyEvent& rKEvent, bool bFromMenu ) return bDone; } -bool MenuBar::ImplHandleCmdEvent( const CommandEvent& rCEvent ) -{ - bool bDone = false; - const CommandModKeyData* pCData; - - // No keyboard processing when system handles the menu or our menubar is invisible - if( !IsDisplayable() || - ( ImplGetSalMenu() && ImplGetSalMenu()->VisibleMenuBar() ) ) - return bDone; - - // check for enabled, if this method is called from another window... - MenuBarWindow* pWin = static_cast<MenuBarWindow*>(ImplGetWindow()); - if ( pWin && pWin->IsEnabled() && pWin->IsInputEnabled() && ! pWin->IsInModalMode() ) - { - if (rCEvent.GetCommand() == CommandEventId::ModKeyChange) - { - pCData = rCEvent.GetModKeyData (); - if (pWin->nHighlightedItem == ITEMPOS_INVALID) - { - if (pCData && pCData->IsMod2()) - pWin->SetMBWHideAccel(false); - else - pWin->SetMBWHideAccel(true); - pWin->Invalidate(INVALIDATE_UPDATE); - } - return true; - } - } - return false; -} - void MenuBar::SelectItem(sal_uInt16 nId) { if (pWindow) @@ -2922,10 +2885,6 @@ sal_uInt16 PopupMenu::ImplExecute( vcl::Window* pW, const Rectangle& rRect, Floa if ( !pSFrom && ( PopupMenu::IsInExecute() || !GetItemCount() ) ) return 0; - // set the flag to hide or show accelerators in the menu depending on whether the menu was launched by mouse or keyboard shortcut - if( pSFrom && pSFrom->IsMenuBar()) - ((static_cast<MenuBarWindow*>(pSFrom->pWindow.get())))->SetMBWHideAccel(!(static_cast<MenuBarWindow*>(pSFrom->pWindow.get())->GetMBWMenuKey())); - delete mpLayoutData, mpLayoutData = NULL; ImplSVData* pSVData = ImplGetSVData(); diff --git a/vcl/source/window/menubarwindow.cxx b/vcl/source/window/menubarwindow.cxx index 99a5adfa8318..fb542a474b12 100644 --- a/vcl/source/window/menubarwindow.cxx +++ b/vcl/source/window/menubarwindow.cxx @@ -133,7 +133,6 @@ MenuBarWindow::MenuBarWindow( vcl::Window* pParent ) : nSaveFocusId = 0; bIgnoreFirstMove = true; bStayActive = false; - SetMBWHideAccel(true); ResMgr* pResMgr = ImplGetResMgr(); @@ -384,7 +383,6 @@ void MenuBarWindow::PopupClosed( Menu* pPopup ) void MenuBarWindow::MouseButtonDown( const MouseEvent& rMEvt ) { mbAutoPopup = true; - SetMBWMenuKey(false); sal_uInt16 nEntry = ImplFindEntry( rMEvt.GetPosPixel() ); if ( ( nEntry != ITEMPOS_INVALID ) && !pActivePopup ) { @@ -409,18 +407,7 @@ void MenuBarWindow::MouseMove( const MouseEvent& rMEvt ) if ( rMEvt.IsLeaveWindow() ) { if ( nRolloveredItem != ITEMPOS_INVALID && nRolloveredItem != nHighlightedItem ) - { - // there is a spurious MouseMove generated after a menu is launched from the keyboard, hence this... - if (nHighlightedItem != ITEMPOS_INVALID) - { - bool hide = GetMBWHideAccel(); - SetMBWHideAccel(true); - Invalidate(); //HighlightItem( nRolloveredItem, false ); - SetMBWHideAccel(hide); - } - else - Invalidate(); //HighlightItem( nRolloveredItem, false ); - } + Invalidate(); //HighlightItem( nRolloveredItem, false ); nRolloveredItem = ITEMPOS_INVALID; return; @@ -457,9 +444,6 @@ void MenuBarWindow::ChangeHighlightItem( sal_uInt16 n, bool bSelectEntry, bool b if( ! pMenu ) return; - // always hide accelerators when updating the menu bar... - SetMBWHideAccel(true); - // #57934# close active popup if applicable, as TH's background storage works. MenuItemData* pNextData = pMenu->pItemList->GetDataFromPos( n ); if ( pActivePopup && pActivePopup->ImplGetWindow() && ( !pNextData || ( pActivePopup != pNextData->pSubMenu ) ) ) @@ -840,12 +824,18 @@ bool MenuBarWindow::HandleKeyEvent( const KeyEvent& rKEvent, bool bFromMenu ) { if( pActivePopup ) { - // hide the menu and remove the focus... + // bring focus to menu bar without any open popup mbAutoPopup = false; + sal_uInt16 n = nHighlightedItem; + nHighlightedItem = ITEMPOS_INVALID; + bStayActive = true; + ChangeHighlightItem( n, false ); + bStayActive = false; KillActivePopup(); + GrabFocus(); } - - ChangeHighlightItem( ITEMPOS_INVALID, false ); + else + ChangeHighlightItem( ITEMPOS_INVALID, false ); if( nCode == KEY_F6 && rKEvent.GetKeyCode().IsMod1() ) { @@ -857,8 +847,7 @@ bool MenuBarWindow::HandleKeyEvent( const KeyEvent& rKEvent, bool bFromMenu ) } } - bool accel = ImplGetSVData()->maNWFData.mbEnableAccel; - if ( !bDone && ( bFromMenu || (rKEvent.GetKeyCode().IsMod2() && accel) ) ) + if ( !bDone && ( bFromMenu || rKEvent.GetKeyCode().IsMod2() ) ) { sal_Unicode nCharCode = rKEvent.GetCharCode(); if ( nCharCode ) @@ -868,9 +857,6 @@ bool MenuBarWindow::HandleKeyEvent( const KeyEvent& rKEvent, bool bFromMenu ) if ( pData && (nEntry != ITEMPOS_INVALID) ) { mbAutoPopup = true; - SetMBWMenuKey(true); - SetMBWHideAccel(true); - Invalidate(INVALIDATE_UPDATE); ChangeHighlightItem( nEntry, true ); bDone = true; } diff --git a/vcl/source/window/menubarwindow.hxx b/vcl/source/window/menubarwindow.hxx index 06dbcab59645..0ebb19a65b35 100644 --- a/vcl/source/window/menubarwindow.hxx +++ b/vcl/source/window/menubarwindow.hxx @@ -80,8 +80,6 @@ private: bool mbAutoPopup; bool bIgnoreFirstMove; bool bStayActive; - bool mbHideAccel; - bool mbMenuKey; VclPtr<DecoToolBox> aCloseBtn; VclPtr<PushButton> aFloatBtn; @@ -147,10 +145,6 @@ public: virtual Rectangle GetMenuBarButtonRectPixel(sal_uInt16 nId) SAL_OVERRIDE; virtual void RemoveMenuBarButton(sal_uInt16 nId) SAL_OVERRIDE; virtual bool HandleMenuButtonEvent(sal_uInt16 i_nButtonId) SAL_OVERRIDE; - virtual void SetMBWHideAccel (bool val) { mbHideAccel = val; } - virtual bool GetMBWHideAccel (void) const { return mbHideAccel; } - virtual void SetMBWMenuKey (bool val) { mbMenuKey = val; } - virtual bool GetMBWMenuKey (void) const { return mbMenuKey; } }; #endif // INCLUDED_VCL_SOURCE_WINDOW_MENUBARWINDOW_HXX diff --git a/vcl/source/window/menufloatingwindow.cxx b/vcl/source/window/menufloatingwindow.cxx index 990d64c008f0..5ff6cc225c52 100644 --- a/vcl/source/window/menufloatingwindow.cxx +++ b/vcl/source/window/menufloatingwindow.cxx @@ -19,7 +19,6 @@ #include "menufloatingwindow.hxx" #include "menuitemlist.hxx" -#include "menubarwindow.hxx" #include <svdata.hxx> #include <vcl/decoview.hxx> @@ -1109,13 +1108,8 @@ void MenuFloatingWindow::KeyInput( const KeyEvent& rKEvent ) sal_Unicode nCharCode = rKEvent.GetCharCode(); sal_uInt16 nPos = 0; sal_uInt16 nDuplicates = 0; - MenuItemData* pData = (nCharCode && pMenu) ? - pMenu->GetItemList()->SearchItem(nCharCode, rKEvent.GetKeyCode(), nPos, nDuplicates, nHighlightedItem) : NULL; - bool accel = ImplGetSVData()->maNWFData.mbEnableAccel; - Menu *men = pMenu; - while (men && !men->IsMenuBar()) - men = men->pStartedFrom; - if ( men && pData && (static_cast<MenuBarWindow*>(men->pWindow.get()))->GetMBWMenuKey () && accel ) + MenuItemData* pData = (nCharCode && pMenu) ? pMenu->GetItemList()->SearchItem( nCharCode, rKEvent.GetKeyCode(), nPos, nDuplicates, nHighlightedItem ) : NULL; + if ( pData ) { if ( pData->pSubMenu || nDuplicates > 1 ) { diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx index 1c79c882dc4a..9399ffdde01c 100644 --- a/vcl/source/window/syswin.cxx +++ b/vcl/source/window/syswin.cxx @@ -126,8 +126,7 @@ void SystemWindow::dispose() bool SystemWindow::Notify( NotifyEvent& rNEvt ) { // capture KeyEvents for menu handling - if (rNEvt.GetType() == MouseNotifyEvent::KEYINPUT || - rNEvt.GetType() == MouseNotifyEvent::COMMAND) + if ( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) { MenuBar* pMBar = mpMenuBar; if ( !pMBar && ( GetType() == WINDOW_FLOATINGWINDOW ) ) @@ -136,15 +135,7 @@ bool SystemWindow::Notify( NotifyEvent& rNEvt ) if( pWin && pWin->IsSystemWindow() ) pMBar = static_cast<SystemWindow*>(pWin)->GetMenuBar(); } - bool bDone(false); - if (pMBar) - { - if (rNEvt.GetType() == MouseNotifyEvent::COMMAND) - bDone = pMBar->ImplHandleCmdEvent(*rNEvt.GetCommandEvent()); - else - bDone = pMBar->ImplHandleKeyEvent(*rNEvt.GetKeyEvent(), false); - } - if (bDone) + if ( pMBar && pMBar->ImplHandleKeyEvent( *rNEvt.GetKeyEvent(), false ) ) return true; } diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index d8c7846031e2..0a01a14f4530 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -1920,17 +1920,6 @@ void Window::SimulateKeyPress( sal_uInt16 nKeyCode ) const void Window::KeyInput( const KeyEvent& rKEvt ) { - KeyCode cod = rKEvt.GetKeyCode (); - bool accel = ImplGetSVData()->maNWFData.mbEnableAccel; - bool autoacc = ImplGetSVData()->maNWFData.mbAutoAccel; - - // do not respond to accelerators unless Alt is held */ - if (cod.GetCode () >= 0x200 && cod.GetCode () <= 0x219) - { - if (!accel) return; - if (autoacc && cod.GetModifier () != 0x4000) return; - } - NotifyEvent aNEvt( MouseNotifyEvent::KEYINPUT, this, &rKEvt ); if ( !CompatNotify( aNEvt ) ) mpWindowImpl->mbKeyInput = true; diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index f1750c1e52fe..e708e18e82c2 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -2178,22 +2178,17 @@ static void ImplHandleSalKeyMod( vcl::Window* pWindow, SalKeyModEvent* pEvent ) // #105224# send commandevent to allow special treatment of Ctrl-LeftShift/Ctrl-RightShift etc. - // find window - first look to see if the system window is available - vcl::Window* pChild = pWindow->ImplGetWindowImpl()->mpFirstChild; + // find window + vcl::Window* pChild = ImplGetKeyInputWindow( pWindow ); + if ( !pChild ) + return; - while ( pChild ) + // send modkey events only if useful data is available + if( pEvent->mnModKeyCode != 0 ) { - if ( pChild->ImplGetWindowImpl()->mbSysWin ) - break; - pChild = pChild->ImplGetWindowImpl()->mpNext; + CommandModKeyData data( pEvent->mnModKeyCode ); + ImplCallCommand( pChild, CommandEventId::ModKeyChange, &data ); } - //...if not, try to find a key input window... - if (!pChild) ImplGetKeyInputWindow( pWindow ); - //...otherwise fail safe... - if (!pChild) pChild = pWindow; - - CommandModKeyData data( pEvent->mnModKeyCode ); - ImplCallCommand( pChild, CommandEventId::ModKeyChange, &data ); } static void ImplHandleInputLanguageChange( vcl::Window* pWindow ) diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx index c4913b532bae..122059656f89 100644 --- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx @@ -565,15 +565,6 @@ void GtkData::initNWF() std::fprintf( stderr, "GtkPlugin: using %s NWF\n", GtkSalGraphics::bNeedPixmapPaint ? "offscreen" : "direct" ); #endif - - GtkSettings *gtks = gtk_settings_get_default (); - gint val; - g_object_get (gtks, "gtk-auto-mnemonics", &val, NULL); - if (val) pSVData->maNWFData.mbAutoAccel = true; - else pSVData->maNWFData.mbAutoAccel = false; - g_object_get (gtks, "gtk-enable-mnemonics", &val, NULL); - if (val) pSVData->maNWFData.mbEnableAccel = true; - else pSVData->maNWFData.mbEnableAccel = false; } /********************************************************* diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx index fe41c30593e5..0e58788bcab5 100644 --- a/vcl/unx/gtk/window/gtksalframe.cxx +++ b/vcl/unx/gtk/window/gtksalframe.cxx @@ -4038,6 +4038,7 @@ gboolean GtkSalFrame::signalKey( GtkWidget*, GdkEventKey* pEvent, gpointer frame pThis->m_bSendModChangeOnRelease ) { aModEvt.mnModKeyCode = pThis->m_nKeyModifiers; + pThis->m_nKeyModifiers = 0; } sal_uInt16 nExtModMask = 0; @@ -4098,7 +4099,6 @@ gboolean GtkSalFrame::signalKey( GtkWidget*, GdkEventKey* pEvent, gpointer frame aModEvt.mnCode = nModCode; aModEvt.mnTime = pEvent->time; - aModEvt.mnModKeyCode = pThis->m_nKeyModifiers; pThis->CallCallback( SALEVENT_KEYMODCHANGE, &aModEvt ); diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx index 4a71442b4901..90d873426323 100644 --- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx @@ -1965,8 +1965,6 @@ void GtkData::initNWF() pSVData->maNWFData.mbDDListBoxNoTextArea = true; pSVData->maNWFData.mbNoFocusRects = true; pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true; - pSVData->maNWFData.mbAutoAccel = true; - pSVData->maNWFData.mbEnableAccel = true; } void GtkData::deInitNWF() _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
