Windows of this class can be destroyed at any moment, even while some events
are still being processed, so delay the real destruction until we can be sure
that it's safe to delete the window.
This fixes problems (crashes due to dangling pointers) when the object is
deleted from the overridden OnDismiss(), for example.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69349
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// Overridden to grab the input on some plaforms
virtual bool Show( bool show = true );
+ // Override to implement delayed destruction of this window.
+ virtual bool Destroy();
+
protected:
// common part of all ctors
void Init();
return ret;
}
+bool wxPopupTransientWindow::Destroy()
+{
+ // The popup window can be deleted at any moment, even while some events
+ // are still being processed for it, so delay its real destruction until
+ // the next idle time when we're sure that it's safe to really destroy it.
+
+ wxCHECK_MSG( !wxPendingDelete.Member(this), false,
+ wxS("Shouldn't destroy the popup twice.") );
+
+ wxPendingDelete.Append(this);
+
+ return true;
+}
+
void wxPopupTransientWindow::Dismiss()
{
Hide();