From: Vadim Zeitlin Date: Thu, 1 Nov 2012 17:15:25 +0000 (+0000) Subject: Invalidate best size of wxOSX wxChoice after its number of items changes. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c236dbaed22ffbd88570b66931a5690dc87c0f3a?ds=inline Invalidate best size of wxOSX wxChoice after its number of items changes. This fixes the calculation of the initial best size as previously the default value was not updated even if longer strings were added later. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72847 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/osx/choice.h b/include/wx/osx/choice.h index 3e8898373c..720b9c509d 100644 --- a/include/wx/osx/choice.h +++ b/include/wx/osx/choice.h @@ -93,6 +93,10 @@ protected: wxArrayString m_strings; wxChoiceDataArray m_datas ; wxMenu* m_popUpMenu ; + +private: + // This should be called when the number of items in the control changes. + void DoAfterItemCountChange(); }; #endif diff --git a/src/osx/choice_osx.cpp b/src/osx/choice_osx.cpp index e610b8c86f..d26812a571 100644 --- a/src/osx/choice_osx.cpp +++ b/src/osx/choice_osx.cpp @@ -100,6 +100,13 @@ bool wxChoice::Create(wxWindow *parent, // adding/deleting items to/from the list // ---------------------------------------------------------------------------- +void wxChoice::DoAfterItemCountChange() +{ + InvalidateBestSize(); + + GetPeer()->SetMaximum( GetCount() ); +} + int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items, unsigned int pos, void **clientData, wxClientDataType type) @@ -132,7 +139,7 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items, AssignNewItemClientData(idx, clientData, i, type); } - GetPeer()->SetMaximum( GetCount() ); + DoAfterItemCountChange(); return pos - 1; } @@ -148,8 +155,8 @@ void wxChoice::DoDeleteOneItem(unsigned int n) m_strings.RemoveAt( n ) ; m_datas.RemoveAt( n ) ; - GetPeer()->SetMaximum( GetCount() ) ; + DoAfterItemCountChange(); } void wxChoice::DoClear() @@ -162,7 +169,7 @@ void wxChoice::DoClear() m_strings.Empty() ; m_datas.Empty() ; - GetPeer()->SetMaximum( 0 ) ; + DoAfterItemCountChange(); } // ----------------------------------------------------------------------------