vcl/source/window/winproc.cxx | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-)
New commits: commit 8d53d01f38b856f177aca3ed4d3cba3db10f24a5 Author: Katarina Behrens <katarina.behr...@cib.de> Date: Wed Jan 27 15:46:41 2016 +0100 tdf#96739: Send Ctrl-Left/RightShift events to correct window Another regression from commit 74407aef94b6d8df. SystemWindow should consume only Alt pressed/released events and let key input window handle the rest of modkey events Change-Id: I304701fe63ee86bad534ba003ea05991d06f433d Reviewed-on: https://gerrit.libreoffice.org/21854 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Katarina Behrens <katarina.behr...@cib.de> diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index 4fb5c9c..48604b8 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -2098,20 +2098,30 @@ static void ImplHandleSalKeyMod( vcl::Window* pWindow, SalKeyModEvent* pEvent ) } // #105224# send commandevent to allow special treatment of Ctrl-LeftShift/Ctrl-RightShift etc. + // + auto-accelerator feature, tdf#92630 - // find window - first look to see if the system window is available - vcl::Window* pChild = pWindow->ImplGetWindowImpl()->mpFirstChild; + vcl::Window *pChild = nullptr; - while ( pChild ) + // Alt pressed or released => give SystemWindow a chance to handle auto-accelerator + if ( pEvent->mnCode == KEY_MOD2 || (pEvent->mnModKeyCode & MODKEY_MOD2) != 0 ) { - if ( pChild->ImplGetWindowImpl()->mbSysWin ) - break; - pChild = pChild->ImplGetWindowImpl()->mpNext; + // find window - first look to see if the system window is available + pChild = pWindow->ImplGetWindowImpl()->mpFirstChild; + + while ( pChild ) + { + if ( pChild->ImplGetWindowImpl()->mbSysWin ) + break; + pChild = pChild->ImplGetWindowImpl()->mpNext; + } } + //...if not, try to find a key input window... - if (!pChild) ImplGetKeyInputWindow( pWindow ); + if (!pChild) + pChild = ImplGetKeyInputWindow( pWindow ); //...otherwise fail safe... - if (!pChild) pChild = pWindow; + if (!pChild) + pChild = pWindow; CommandModKeyData data( pEvent->mnModKeyCode ); ImplCallCommand( pChild, CommandEventId::ModKeyChange, &data ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits