path: root/sw/source/core
diff options
authorMiklos Vajna <>2016-09-12 11:56:02 +0200
committerMiklos Vajna <>2016-09-13 08:15:38 +0200
commit1cabcedcff279b95635e457ef36bb4a07f7947aa (patch)
tree54b79d2fdbccee9bde33494a00f181bf75c1fbe3 /sw/source/core
parent439255b00359060708e4ef969370a67fc94cea89 (diff)
sw: implement SdrMarkView::GetSfxViewShell() API
With this, the graphic selection is no longer lost when creating a new view. That happened as the SwView ctor calls SdrMarkView::SetMarkHandles() while the new view is not yet current, which resulted clearing the graphic selection in the old view, not in the new one. A side-effect of introducing SwDrawView::GetSfxViewShell() is that now SwView::getPart() is called from the SwView dtor, guard against doing any real work there in that situation to avoid potentially reading already deleted data. Change-Id: I4fab39a907d2cbe228c0fc8d44bedc64893387d1 Reviewed-on: Reviewed-by: Miklos Vajna <> Tested-by: Jenkins <> (cherry picked from commit 65828fa693507d699369f0dbc3c0bfc31638d945)
Diffstat (limited to 'sw/source/core')
2 files changed, 8 insertions, 0 deletions
diff --git a/sw/source/core/draw/dview.cxx b/sw/source/core/draw/dview.cxx
index ad6f7df0764e..ab5df7cad783 100644
--- a/sw/source/core/draw/dview.cxx
+++ b/sw/source/core/draw/dview.cxx
@@ -919,6 +919,11 @@ void SwDrawView::ReplaceMarkedDrawVirtObjs( SdrMarkView& _rMarkView )
+SfxViewShell* SwDrawView::GetSfxViewShell() const
+ return rImp.GetShell()->GetSfxViewShell();
void SwDrawView::DeleteMarked()
SwDoc* pDoc = Imp().GetShell()->GetDoc();
diff --git a/sw/source/core/inc/dview.hxx b/sw/source/core/inc/dview.hxx
index 9bf76c1ede5e..4145c51f59a2 100644
--- a/sw/source/core/inc/dview.hxx
+++ b/sw/source/core/inc/dview.hxx
@@ -112,6 +112,9 @@ public:
// method to replace marked/selected <SwDrawVirtObj>
// by its reference object for delete of selection and group selection
static void ReplaceMarkedDrawVirtObjs( SdrMarkView& _rMarkView );
+ /// See SdrMarkView::GetSfxViewShell().
+ SfxViewShell* GetSfxViewShell() const override;