Kaydet (Commit) b80c468e authored tarafından Stephan Bergmann's avatar Stephan Bergmann

SmViewShell: pImpl must outlive aGraphic member

...as at least during CppunitTest_starmath_qa_cppunit, during ~SmViewShell,
aGraphic's code calls back into SmViewShell's code calls into pImpl:

 SmViewShell::IsInlineEditEnabled() const starmath/source/view.cxx:2057:12
 SmGraphicWindow::IsInlineEditEnabled() const starmath/source/view.cxx:227:12
 SmGraphicWindow::CaretBlinkStop() starmath/source/view.cxx:297:10
 SmGraphicWindow::~SmGraphicWindow() starmath/source/view.cxx:126:5
 SmViewShell::~SmViewShell() starmath/source/view.cxx:1976:1
 [...]

This is somewhat symmetric to 0e263d61 "order
pImpl before aGraphic because aGraphic deferences pImpl in ctor."

Change-Id: I97494bebaf5747205a690e6d65fd05ba8fb61cab
üst 2d6dacc1
...@@ -19,6 +19,10 @@ ...@@ -19,6 +19,10 @@
#ifndef INCLUDED_STARMATH_INC_VIEW_HXX #ifndef INCLUDED_STARMATH_INC_VIEW_HXX
#define INCLUDED_STARMATH_INC_VIEW_HXX #define INCLUDED_STARMATH_INC_VIEW_HXX
#include <sal/config.h>
#include <memory>
#include <sfx2/dockwin.hxx> #include <sfx2/dockwin.hxx>
#include <sfx2/viewsh.hxx> #include <sfx2/viewsh.hxx>
#include <svtools/scrwin.hxx> #include <svtools/scrwin.hxx>
...@@ -224,7 +228,7 @@ class SmViewShell: public SfxViewShell ...@@ -224,7 +228,7 @@ class SmViewShell: public SfxViewShell
// for handling the PasteClipboardState // for handling the PasteClipboardState
friend class SmClipboardChangeListener; friend class SmClipboardChangeListener;
SmViewShell_Impl* pImpl; std::unique_ptr<SmViewShell_Impl> pImpl;
SmGraphicWindow aGraphic; SmGraphicWindow aGraphic;
SmGraphicController aGraphicController; SmGraphicController aGraphicController;
......
...@@ -1972,7 +1972,6 @@ SmViewShell::~SmViewShell() ...@@ -1972,7 +1972,6 @@ SmViewShell::~SmViewShell()
SmEditWindow *pEditWin = GetEditWindow(); SmEditWindow *pEditWin = GetEditWindow();
if (pEditWin) if (pEditWin)
pEditWin->DeleteEditView( *this ); pEditWin->DeleteEditView( *this );
delete pImpl;
} }
void SmViewShell::Deactivate( bool bIsMDIActivate ) void SmViewShell::Deactivate( bool bIsMDIActivate )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment