From: Włodzimierz Skiba Date: Thu, 15 Jun 2006 21:10:58 +0000 (+0000) Subject: [ 1506733 ] wxOwnerDrawnComboBox::SetPopupControl argument type check. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/db53c6ea2ef6b4c00c0a477c69547c18a459cba6 [ 1506733 ] wxOwnerDrawnComboBox::SetPopupControl argument type check. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39751 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/combo.h b/include/wx/combo.h index 20ef7cb5b9..fdece4b675 100644 --- a/include/wx/combo.h +++ b/include/wx/combo.h @@ -156,7 +156,10 @@ public: // set interface class instance derived from wxComboPopup // NULL popup can be used to indicate default in a derived class - virtual void SetPopupControl( wxComboPopup* popup ); + void SetPopupControl( wxComboPopup* popup ) + { + DoSetPopupControl(popup); + } // get interface class instance derived from wxComboPopup wxComboPopup* GetPopupControl() @@ -381,6 +384,9 @@ protected: // override the base class virtuals involved in geometry calculations virtual wxSize DoGetBestSize() const; + // NULL popup can be used to indicate default in a derived class + virtual void DoSetPopupControl(wxComboPopup* popup); + // ensures there is atleast the default popup void EnsurePopupControl(); diff --git a/include/wx/odcombo.h b/include/wx/odcombo.h index bb67677acf..0b578c6580 100644 --- a/include/wx/odcombo.h +++ b/include/wx/odcombo.h @@ -254,8 +254,11 @@ public: virtual ~wxOwnerDrawnComboBox(); - // NULL popup can be used to indicate default interface - virtual void SetPopupControl( wxComboPopup* popup ); + // Prevent app from using wxComboPopup + void SetPopupControl(wxVListBoxComboPopup* popup) + { + DoSetPopupControl(popup); + } // wxControlWithItems methods virtual void Clear(); @@ -296,6 +299,9 @@ protected: // OnDrawItem. virtual void OnDrawBackground( wxDC& dc, const wxRect& rect, int item, int flags ) const; + // NULL popup can be used to indicate default interface + virtual void DoSetPopupControl(wxComboPopup* popup); + // clears all allocated client datas void ClearClientDatas(); diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp index a1630119fb..503005d9f6 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp @@ -1559,7 +1559,7 @@ void wxComboCtrlBase::DestroyPopup() m_popup = (wxWindow*) NULL; } -void wxComboCtrlBase::SetPopupControl( wxComboPopup* iface ) +void wxComboCtrlBase::DoSetPopupControl(wxComboPopup* iface) { wxCHECK_RET( iface, wxT("no popup interface set for wxComboCtrl") ); diff --git a/src/generic/odcombo.cpp b/src/generic/odcombo.cpp index 75fcd5f271..037fb88b43 100644 --- a/src/generic/odcombo.cpp +++ b/src/generic/odcombo.cpp @@ -664,14 +664,14 @@ wxOwnerDrawnComboBox::~wxOwnerDrawnComboBox() m_popupInterface->ClearClientDatas(); } -void wxOwnerDrawnComboBox::SetPopupControl( wxComboPopup* popup ) +void wxOwnerDrawnComboBox::DoSetPopupControl(wxComboPopup* popup) { if ( !popup ) { popup = new wxVListBoxComboPopup(); } - wxComboCtrl::SetPopupControl(popup); + wxComboCtrl::DoSetPopupControl(popup); wxASSERT(popup); m_popupInterface = (wxVListBoxComboPopup*) popup;