]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/choice.cpp
Minimum is now GTK+ 2.4
[wxWidgets.git] / src / gtk / choice.cpp
index 7dfecca77ad0d22963e4f111305c97a059ac6755..2e160d2287c4d920700328a69d45a70ef2f79ba1 100644 (file)
@@ -70,7 +70,7 @@ static void gtk_choice_clicked_callback( GtkWidget *WXUNUSED(widget), wxChoice *
 // wxChoice
 //-----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxChoice,wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControlWithItems)
 
 wxChoice::wxChoice()
 {
@@ -110,8 +110,8 @@ bool wxChoice::Create( wxWindow *parent, wxWindowID id,
         m_strings = new wxSortedArrayString;
     }
 
-    // begin with no selection
-    m_selection_hack = wxNOT_FOUND;
+    // If we have items, GTK will choose the first item by default
+    m_selection_hack = n > 0 ? 0 : wxNOT_FOUND;
 
     GtkWidget *menu = gtk_menu_new();
 
@@ -163,6 +163,12 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items,
         m_selection_hack += count;
     }
 
+    // We must set the selection so that it can be read back even if 
+    // the user has not modified it since GTK+ will then select the
+    // first item so well return 0.
+    if ((count > 0) && (m_selection_hack==wxNOT_FOUND))
+        m_selection_hack = 0;
+
     return pos - 1;
 }