X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/261a9107f0ce372c61b1e8c634e98cf7ad59a91e..ff58644a54af11b74b8e9b33a00de8496c531566:/src/gtk/choice.cpp?ds=sidebyside diff --git a/src/gtk/choice.cpp b/src/gtk/choice.cpp index 2e160d2287..8f25aa9632 100644 --- a/src/gtk/choice.cpp +++ b/src/gtk/choice.cpp @@ -62,7 +62,7 @@ static void gtk_choice_clicked_callback( GtkWidget *WXUNUSED(widget), wxChoice * else if ( choice->HasClientUntypedData() ) event.SetClientData( choice->GetClientData(n) ); - choice->GetEventHandler()->ProcessEvent(event); + choice->HandleWindowEvent(event); } } @@ -127,6 +127,13 @@ bool wxChoice::Create( wxWindow *parent, wxWindowID id, PostCreation(size); SetInitialSize(size); // need this too because this is a wxControlWithItems + // workaround for bug in gtk_option_menu_set_history(), it causes + // gtk_widget_size_allocate() to be called with the current + // widget->allocation values, which will be zero if a proper + // size_allocate has not occured yet + m_widget->allocation.width = m_width; + m_widget->allocation.height = m_height; + return true; } @@ -222,8 +229,8 @@ void wxChoice::DoDeleteOneItem(unsigned int n) wxArrayString items; wxArrayPtrVoid itemsData; - items.Alloc(count); - itemsData.Alloc(count); + items.Alloc(count - 1); + itemsData.Alloc(count - 1); for ( unsigned i = 0; i < count; i++ ) { if ( i != n ) @@ -235,11 +242,15 @@ void wxChoice::DoDeleteOneItem(unsigned int n) wxChoice::DoClear(); - void ** const data = &itemsData[0]; - if ( HasClientObjectData() ) - Append(items, wx_reinterpret_cast(wxClientData **, data)); - else - Append(items, data); + if ( count > 1 ) + { + void ** const data = &itemsData[0]; + if ( HasClientObjectData() ) + Append(items, wx_reinterpret_cast(wxClientData **, data)); + else + Append(items, data); + } + //else: the control is now empty, nothing to append } int wxChoice::FindString( const wxString &string, bool bCase ) const