X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/50c375d311ac4cefbf1ae1d11e19c9e7c00a873e..2a31049201e9c1ff9f515eb9d144ae392f4b4e5a:/src/msw/choice.cpp?ds=sidebyside diff --git a/src/msw/choice.cpp b/src/msw/choice.cpp index 0f7d86ec3b..a6144b1da2 100644 --- a/src/msw/choice.cpp +++ b/src/msw/choice.cpp @@ -32,13 +32,12 @@ #include "wx/choice.h" #include "wx/utils.h" #include "wx/log.h" + #include "wx/settings.h" #endif #include "wx/msw/private.h" -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) -#endif // ============================================================================ // implementation @@ -75,6 +74,10 @@ bool wxChoice::Create(wxWindow *parent, if ( !MSWCreateControl(wxT("COMBOBOX"), msStyle) ) return FALSE; + // A choice/combobox normally has a white background (or other, depending + // on global settings) rather than inheriting the parent's background colour. + SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); + for ( int i = 0; i < n; i++ ) { Append(choices[i]); @@ -85,12 +88,10 @@ bool wxChoice::Create(wxWindow *parent, return TRUE; } -/* wxChoice::~wxChoice() { Free(); } -*/ // ---------------------------------------------------------------------------- // adding/deleting items to/from the list @@ -121,12 +122,11 @@ void wxChoice::Delete(int n) void wxChoice::Clear() { -// Free(); + Free(); SendMessage(GetHwnd(), CB_RESETCONTENT, 0, 0); } -/* void wxChoice::Free() { if ( HasClientObjectData() ) @@ -138,7 +138,6 @@ void wxChoice::Free() } } } -*/ // ---------------------------------------------------------------------------- // selection @@ -262,7 +261,7 @@ void wxChoice::DoSetSize(int x, int y, wxControl::DoSetSize(x, y, width, -1, sizeFlags); } -wxSize wxChoice::DoGetBestSize() +wxSize wxChoice::DoGetBestSize() const { // find the widest string int wLine; @@ -322,15 +321,18 @@ bool wxChoice::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) } int n = GetSelection(); - wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId); - event.SetInt(n); - event.SetEventObject(this); - event.SetString(GetStringSelection()); - if ( HasClientObjectData() ) - event.SetClientObject( GetClientObject(n) ); - else if ( HasClientUntypedData() ) - event.SetClientData( GetClientData(n) ); - ProcessCommand(event); + if (n > -1) + { + wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId); + event.SetInt(n); + event.SetEventObject(this); + event.SetString(GetStringSelection()); + if ( HasClientObjectData() ) + event.SetClientObject( GetClientObject(n) ); + else if ( HasClientUntypedData() ) + event.SetClientData( GetClientData(n) ); + ProcessCommand(event); + } return TRUE; }