X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c236dbaed22ffbd88570b66931a5690dc87c0f3a..48e05747043db02c4e9d2e286eca4fdf5dee7881:/src/osx/choice_osx.cpp?ds=sidebyside diff --git a/src/osx/choice_osx.cpp b/src/osx/choice_osx.cpp index d26812a571..7dd17476cf 100644 --- a/src/osx/choice_osx.cpp +++ b/src/osx/choice_osx.cpp @@ -236,60 +236,20 @@ void * wxChoice::DoGetItemClientData(unsigned int n) const bool wxChoice::OSXHandleClicked( double WXUNUSED(timestampsec) ) { - wxCommandEvent event( wxEVT_COMMAND_CHOICE_SELECTED, m_windowId ); - - // actually n should be made sure by the os to be a valid selection, but ... - int n = GetSelection(); - if ( n > -1 ) - { - event.SetInt( n ); - event.SetString( GetStringSelection() ); - event.SetEventObject( this ); - - if ( HasClientObjectData() ) - event.SetClientObject( GetClientObject( n ) ); - else if ( HasClientUntypedData() ) - event.SetClientData( GetClientData( n ) ); - - ProcessCommand( event ); - } + SendSelectionChangedEvent(wxEVT_CHOICE); return true ; } wxSize wxChoice::DoGetBestSize() const { - int lbWidth = GetCount() > 0 ? 20 : 100; // some defaults - wxSize baseSize = wxWindow::DoGetBestSize(); - int lbHeight = baseSize.y; - int wLine; - - { - wxClientDC dc(const_cast(this)); - - // Find the widest line - for(unsigned int i = 0; i < GetCount(); i++) - { - wxString str(GetString(i)); - - wxCoord width, height ; - dc.GetTextExtent( str , &width, &height); - wLine = width ; - - lbWidth = wxMax( lbWidth, wLine ) ; - } - - // Add room for the popup arrow - lbWidth += 2 * lbHeight ; - - wxCoord width, height ; - dc.GetTextExtent( wxT("X"), &width, &height); - int cx = width ; - - lbWidth += cx ; - } + // We use the base window size for the height (which is wrong as it doesn't + // take the font into account -- TODO) and add some margins to the width + // computed by the base class method to account for the arrow. + const int lbHeight = wxWindow::DoGetBestSize().y; - return wxSize( lbWidth, lbHeight ); + return wxSize(wxChoiceBase::DoGetBestSize().x + 2*lbHeight + GetCharWidth(), + lbHeight); } #endif // wxUSE_CHOICE