+void wxComboPopup::DestroyPopup()
+{
+ // Here we make sure that the popup control's Destroy() gets called.
+ // This is necessary for the wxPersistentWindow to work properly.
+ wxWindow* popupCtrl = GetControl();
+ if ( popupCtrl )
+ {
+ // While all wxComboCtrl examples have m_popupInterface and
+ // popupCtrl as the same class (that will be deleted via the
+ // Destroy() call below), it is technically still possible to
+ // have implementations where they are in fact not same
+ // multiple-inherited class. Here we use C++ RTTI to check for
+ // this rare case.
+ #ifndef wxNO_RTTI
+ // It is probably better to delete m_popupInterface first, so
+ // that it retains access to its popup control window.
+ if ( dynamic_cast<void*>(this) !=
+ dynamic_cast<void*>(popupCtrl) )
+ delete this;
+ #endif
+ popupCtrl->Destroy();
+ }
+ else
+ {
+ delete this;
+ }
+}
+