sd/source/ui/inc/SlideSorterViewShell.hxx | 2 + sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx | 20 ++++++++++++++++ 2 files changed, 22 insertions(+)
New commits: commit 4e41e784b97a5b6f5e0cc1f5b24b816ef887b310 Author: Caolán McNamara <caol...@redhat.com> Date: Mon May 16 13:18:06 2016 +0100 Resolves: tdf#99523 exit text edit and unmark objects before moving slide otherwise correct undo isn't recorded for moving the slides Change-Id: I08338a413f10242c4bdf92a73d504f125bc26631 diff --git a/sd/source/ui/inc/SlideSorterViewShell.hxx b/sd/source/ui/inc/SlideSorterViewShell.hxx index 4a9f544..f191e73 100644 --- a/sd/source/ui/inc/SlideSorterViewShell.hxx +++ b/sd/source/ui/inc/SlideSorterViewShell.hxx @@ -220,6 +220,8 @@ private: virtual void UpdateScrollBars() override; void PostMoveSlidesActions(const std::shared_ptr<SlideSorterViewShell::PageSelection> &rpSelection); + + void MainViewEndEditAndUnmarkAll(); }; typedef std::shared_ptr<SlideSorterViewShell::PageSelection> SharedPageSelection; diff --git a/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx b/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx index 73cd3a8..dbc53f2 100644 --- a/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx +++ b/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx @@ -700,8 +700,22 @@ void SlideSorterViewShell::RemoveSelectionChangeListener ( mpSlideSorter->GetController().GetSelectionManager()->RemoveSelectionChangeListener(rCallback); } +void SlideSorterViewShell::MainViewEndEditAndUnmarkAll() +{ + std::shared_ptr<ViewShell> pMainViewShell = GetViewShellBase().GetMainViewShell(); + DrawViewShell* pDrawViewShell = dynamic_cast<DrawViewShell*>(pMainViewShell.get()); + SdrView* pView = pDrawViewShell ? pDrawViewShell->GetDrawView() : nullptr; + if (pView) + { + pView->SdrEndTextEdit(); + pView->UnmarkAll(); + } +} + void SlideSorterViewShell::ExecMovePageFirst (SfxRequest& /*rReq*/) { + MainViewEndEditAndUnmarkAll(); + // SdDrawDocument MovePages is based on SdPage IsSelected, so // transfer the SlideSorter selection to SdPages (*it) std::shared_ptr<SlideSorterViewShell::PageSelection> pSelection ( GetPageSelection() ); @@ -749,6 +763,8 @@ void SlideSorterViewShell::GetStateMovePageFirst (SfxItemSet& rSet) void SlideSorterViewShell::ExecMovePageUp (SfxRequest& /*rReq*/) { + MainViewEndEditAndUnmarkAll(); + sal_uInt16 firstSelectedPageNo = SAL_MAX_UINT16; sal_uInt16 pageNo; // SdDrawDocument MovePages is based on SdPage IsSelected, so @@ -781,6 +797,8 @@ void SlideSorterViewShell::GetStateMovePageUp (SfxItemSet& rSet) void SlideSorterViewShell::ExecMovePageDown (SfxRequest& /*rReq*/) { + MainViewEndEditAndUnmarkAll(); + sal_uInt16 lastSelectedPageNo = 0; sal_uInt16 pageNo; // SdDrawDocument MovePages is based on SdPage IsSelected, so @@ -815,6 +833,8 @@ void SlideSorterViewShell::GetStateMovePageDown (SfxItemSet& rSet) void SlideSorterViewShell::ExecMovePageLast (SfxRequest& /*rReq*/) { + MainViewEndEditAndUnmarkAll(); + // SdDrawDocument MovePages is based on SdPage IsSelected, so // transfer the SlideSorter selection to SdPages (*it) std::shared_ptr<SlideSorterViewShell::PageSelection> pSelection ( GetPageSelection() );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits