]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/choice.cpp
SN: Added #pragma implementation needed by GCC - expect more to come
[wxWidgets.git] / src / msw / choice.cpp
index 0f7d86ec3bca2c99dc17f276a4b23330169fea14..a6144b1da21cfd3df3ea448ef044b117077bdf09 100644 (file)
     #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;
 }