summaryrefslogtreecommitdiff
path: root/vcl/source/window
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2015-02-12 09:38:37 +0200
committerMichael Meeks <michael.meeks@collabora.com>2015-04-09 22:18:28 +0100
commitf7811b53c95410b8f1aa65b93b65701fd427a64f (patch)
treec25873cc991f85565107b6a5d12b106245361142 /vcl/source/window
parent00f2787a4a68633206635743298926bf2e65a8fa (diff)
vclwidget: add some dispose() checking
to catch code that accidentally recursively calls dispose() Change-Id: I647434c76cfbbf4df32c6cef15381ecfd8b4977d
Diffstat (limited to 'vcl/source/window')
-rw-r--r--vcl/source/window/window.cxx7
1 files changed, 7 insertions, 0 deletions
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 17b3ceab693d..60443fff15e7 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -136,6 +136,12 @@ void Window::dispose()
if (!mpWindowImpl)
return;
+ // TODO: turn this assert on once we have switched to using VclPtr everywhere
+ //assert( !mpWindowImpl->mbInDispose && "vcl::Window - already in dispose()" );
+ if (mpWindowImpl->mbInDispose)
+ return;
+ mpWindowImpl->mbInDispose = true;
+
// remove Key and Mouse events issued by Application::PostKey/MouseEvent
Application::RemoveMouseAndKeyEvents( this );
@@ -711,6 +717,7 @@ WindowImpl::WindowImpl( WindowType nType )
mbPaintDisabled = false; // true: Paint should not be executed
mbAllResize = false; // true: Also sent ResizeEvents with 0,0
mbInDtor = false; // true: We're still in Window-Dtor
+ mbInDispose = false; // true: We're still in Window::dispose()
mbExtTextInput = false; // true: ExtTextInput-Mode is active
mbInFocusHdl = false; // true: Within GetFocus-Handler
mbCreatedWithToolkit = false;