From c236dbaed22ffbd88570b66931a5690dc87c0f3a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 1 Nov 2012 17:15:25 +0000 Subject: [PATCH] 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 --- include/wx/osx/choice.h | 4 ++++ src/osx/choice_osx.cpp | 13 ++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) 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(); } // ---------------------------------------------------------------------------- -- 2.50.0