summaryrefslogtreecommitdiff
path: root/vcl/source/window/winproc.cxx
diff options
context:
space:
mode:
authorSimon Long <simon@raspberrypi.org>2015-07-08 18:02:50 +0100
committerCaolán McNamara <caolanm@redhat.com>2015-07-09 15:07:24 +0000
commit74407aef94b6d8dfdd69891c4a6e578587ef3e71 (patch)
treecc8c8f9cde981f90760cb7fdaa02688713989f83 /vcl/source/window/winproc.cxx
parent40ade8d04380083e383d6a6e50e5c254fcde2b2f (diff)
tdf#92630 Enable auto-accelerator behaviour for gtk
Change-Id: I671177dd1f9e535c28a29bcbd6b74f1c789371ea Reviewed-on: https://gerrit.libreoffice.org/16883 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source/window/winproc.cxx')
-rw-r--r--vcl/source/window/winproc.cxx21
1 files changed, 13 insertions, 8 deletions
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index c1b31962b6a5..280db2325733 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -2165,17 +2165,22 @@ static void ImplHandleSalKeyMod( vcl::Window* pWindow, SalKeyModEvent* pEvent )
// #105224# send commandevent to allow special treatment of Ctrl-LeftShift/Ctrl-RightShift etc.
- // find window
- vcl::Window* pChild = ImplGetKeyInputWindow( pWindow );
- if ( !pChild )
- return;
+ // find window - first look to see if the system window is available
+ vcl::Window* pChild = pWindow->ImplGetWindowImpl()->mpFirstChild;
- // send modkey events only if useful data is available
- if( pEvent->mnModKeyCode != 0 )
+ while ( pChild )
{
- CommandModKeyData data( pEvent->mnModKeyCode );
- ImplCallCommand( pChild, CommandEventId::ModKeyChange, &data );
+ if ( pChild->ImplGetWindowImpl()->mbSysWin )
+ break;
+ pChild = pChild->ImplGetWindowImpl()->mpNext;
}
+ //...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 )