From dbca69b975ea8b25c040f12441d70f90cf0e9ab4 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Tue, 26 May 2015 12:42:44 +0200 Subject: tdf#91575 - CRASH: when "My Macros & Dialogs Standard" window close Change-Id: Iad4f67e78a0aa4c67f0c450e17278f873944aa23 --- basctl/source/basicide/layout.cxx | 5 +++++ basctl/source/basicide/layout.hxx | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'basctl') diff --git a/basctl/source/basicide/layout.cxx b/basctl/source/basicide/layout.cxx index a42c99cc44ec..12ad6277055b 100644 --- a/basctl/source/basicide/layout.cxx +++ b/basctl/source/basicide/layout.cxx @@ -184,7 +184,10 @@ void Layout::SplittedSide::dispose() { aSplitter.disposeAndClear(); for (auto i = vItems.begin(); i != vItems.end(); ++i) + { i->pSplit.disposeAndClear(); + i->pWin.clear(); + } } // Add() -- adds a new window to the side (after construction) @@ -223,6 +226,8 @@ void Layout::SplittedSide::Remove (DockingWindow* pWin) if (iWin == vItems.size()) return; // remove + vItems[iWin].pSplit.disposeAndClear(); + vItems[iWin].pWin.clear(); vItems.erase(vItems.begin() + iWin); // if that was the first one, remove the first splitter line if (iWin == 0 && !vItems.empty()) diff --git a/basctl/source/basicide/layout.hxx b/basctl/source/basicide/layout.hxx index 340086656e68..6d949c737a17 100644 --- a/basctl/source/basicide/layout.hxx +++ b/basctl/source/basicide/layout.hxx @@ -61,7 +61,6 @@ protected: void Remove (DockingWindow*); bool HasSize () const { return !bFirstSize; } -protected: // Window: virtual void Resize () SAL_OVERRIDE; virtual void DataChanged (DataChangedEvent const& rDCEvt) SAL_OVERRIDE; @@ -117,12 +116,10 @@ private: VclPtr pSplit; }; std::vector vItems; - private: + Point MakePoint (long, long) const; Size MakeSize (long, long) const; - private: static bool IsDocking (DockingWindow const&); - private: DECL_LINK(SplitHdl, Splitter*); void CheckMarginsFor (Splitter*); void InitSplitter (Splitter&); -- cgit