diff options
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/slidesorter/controller/SlideSorterController.cxx | 14 | ||||
-rw-r--r-- | sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx | 1 |
2 files changed, 12 insertions, 3 deletions
diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx index dfbf1692ef8d..dfd07f3de532 100644 --- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx +++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx @@ -111,6 +111,7 @@ SlideSorterController::SlideSorterController (SlideSorter& rSlideSorter) mpListener(), mnModelChangeLockCount(0), mbIsForcedRearrangePending(false), + mbContextMenuOpen(false), mbPreModelChangeDone(false), mbPostModelChangePending(false), maSelectionBeforeSwitch(), @@ -386,7 +387,9 @@ bool SlideSorterController::Command ( SfxDispatcher* pDispatcher = pViewShell->GetDispatcher(); if (pDispatcher != nullptr) { + mbContextMenuOpen = true; pDispatcher->ExecutePopup( aPopupId, pWindow, &aMenuLocation ); + mbContextMenuOpen = false; mrSlideSorter.GetView().UpdatePageUnderMouse(); ::rtl::Reference<SelectionFunction> pFunction(GetCurrentSelectionFunction()); if (pFunction.is()) @@ -553,9 +556,14 @@ IMPL_LINK(SlideSorterController, WindowEventHandler, VclWindowEvent&, rEvent, vo GetFocusManager().HideFocus(); mrView.GetToolTip().Hide(); - // Select the current slide so that it is properly - // visualized when the focus is moved to the edit view. - GetPageSelector().SelectPage(GetCurrentSlideManager()->GetCurrentSlide()); + //don't scroll back to the selected slide when we lose + //focus due to a temporary active context menu + if (!mbContextMenuOpen) + { + // Select the current slide so that it is properly + // visualized when the focus is moved to the edit view. + GetPageSelector().SelectPage(GetCurrentSlideManager()->GetCurrentSlide()); + } } break; diff --git a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx index cee9f9631bd8..33130e5aeea0 100644 --- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx +++ b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx @@ -240,6 +240,7 @@ private: int mnModelChangeLockCount; bool mbIsForcedRearrangePending; + bool mbContextMenuOpen; bool mbPreModelChangeDone; bool mbPostModelChangePending; |