vcl/source/window/menufloatingwindow.cxx | 12 +++++++++++- vcl/source/window/menufloatingwindow.hxx | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-)
New commits: commit 385c4686717959ba26f0e35c9c582c89b730d136 Author: Caolán McNamara <[email protected]> AuthorDate: Thu Jan 10 14:26:43 2019 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Fri Jan 11 12:06:35 2019 +0100 Resolves: tdf#120632 consider submenus on restoring focus from menu additionally to the menu having focus, if a submenu of that menu has focus, then restore the focus when the whole hierarchy execution ends return focus to the toplevel menu's saved focus widget Change-Id: Iefd467fb1ba67ffd0a303505a893d2453e0ffbb3 Reviewed-on: https://gerrit.libreoffice.org/66119 Tested-by: Jenkins Tested-by: Xisco Faulí <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/vcl/source/window/menufloatingwindow.cxx b/vcl/source/window/menufloatingwindow.cxx index ac79b1f0c510..2db8caab9aba 100644 --- a/vcl/source/window/menufloatingwindow.cxx +++ b/vcl/source/window/menufloatingwindow.cxx @@ -417,6 +417,16 @@ void MenuFloatingWindow::Start() GetParent()->IncModalCount(); } +bool MenuFloatingWindow::MenuInHierarchyHasFocus() const +{ + if (HasChildPathFocus()) + return true; + PopupMenu* pSub = GetActivePopup(); + if (!pSub) + return false; + return pSub->ImplGetFloatingWindow()->HasChildPathFocus(); +} + void MenuFloatingWindow::End() { if (!bInExecute) @@ -428,7 +438,7 @@ void MenuFloatingWindow::End() // restore focus to previous window if we still have the focus VclPtr<vcl::Window> xFocusId(xSaveFocusId); xSaveFocusId = nullptr; - if (HasChildPathFocus() && xFocusId != nullptr) + if (xFocusId != nullptr && MenuInHierarchyHasFocus()) { ImplGetSVData()->maWinData.mbNoDeactivate = false; Window::EndSaveFocus(xFocusId); diff --git a/vcl/source/window/menufloatingwindow.hxx b/vcl/source/window/menufloatingwindow.hxx index 9888cd220687..c091b46add4f 100644 --- a/vcl/source/window/menufloatingwindow.hxx +++ b/vcl/source/window/menufloatingwindow.hxx @@ -121,6 +121,8 @@ public: void SetPosInParent( sal_uInt16 nPos ) { nPosInParent = nPos; } + bool MenuInHierarchyHasFocus() const; + virtual css::uno::Reference<css::accessibility::XAccessible> CreateAccessible() override; }; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
