]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/choice.cpp
Rotated text patch from Hans-Joachim Baader (with some corrections)
[wxWidgets.git] / src / msw / choice.cpp
index 0f7d86ec3bca2c99dc17f276a4b23330169fea14..56f2be52f1d60899cfeccb3e236a393de12c134a 100644 (file)
@@ -60,6 +60,10 @@ bool wxChoice::Create(wxWindow *parent,
     if ( !CreateControl(parent, id, pos, size, style, validator, name) )
         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));
+
     long msStyle = WS_CHILD | CBS_DROPDOWNLIST | WS_TABSTOP | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL;
     if ( style & wxCB_SORT )
         msStyle |= CBS_SORT;
@@ -85,12 +89,10 @@ bool wxChoice::Create(wxWindow *parent,
     return TRUE;
 }
 
-/*
 wxChoice::~wxChoice()
 {
     Free();
 }
-*/
 
 // ----------------------------------------------------------------------------
 // adding/deleting items to/from the list
@@ -121,12 +123,11 @@ void wxChoice::Delete(int n)
 
 void wxChoice::Clear()
 {
-//    Free();
+    Free();
 
     SendMessage(GetHwnd(), CB_RESETCONTENT, 0, 0);
 }
 
-/*
 void wxChoice::Free()
 {
     if ( HasClientObjectData() )
@@ -138,7 +139,6 @@ void wxChoice::Free()
         }
     }
 }
-*/
 
 // ----------------------------------------------------------------------------
 // selection
@@ -322,15 +322,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;
 }