-int wxComboBox::FindString( const wxString &item )
-{
-  GtkWidget *list = GTK_COMBO(m_widget)->list;
-  
-  GList *child = GTK_LIST(list)->children;
-  int count = 0;
-  while (child)
-  {
-    GtkBin *bin = GTK_BIN( child->data );
-    GtkLabel *label = GTK_LABEL( bin->child );
-    if (item == label->label) return count;
-    count++;
-    child = child->next;
-  }
-  
-  wxFAIL_MSG( "wxComboBox: string not found" );
-  
-  return -1;
+    GTKCreateComboBoxWidget();
+
+    if (HasFlag(wxBORDER_NONE))
+    {
+        // Doesn't seem to work
+        // g_object_set (m_widget, "has-frame", FALSE, NULL);
+    }
+
+    GtkEntry * const entry = GetEntry();
+
+    if ( entry )
+    {
+        // Set it up to trigger default item on enter key press
+        gtk_entry_set_activates_default( entry,
+                                         !HasFlag(wxTE_PROCESS_ENTER) );
+
+        gtk_entry_set_editable( entry, TRUE );
+    }
+
+    Append(n, choices);
+
+    m_parent->DoAddChild( this );
+
+    if ( entry )
+        m_focusWidget = GTK_WIDGET( entry );
+
+    PostCreation(size);
+
+    if ( entry )
+    {
+        if (style & wxCB_READONLY)
+        {
+            // this will assert and do nothing if the value is not in our list
+            // of strings which is the desired behaviour (for consistency with
+            // wxMSW and also because it doesn't make sense to have a string
+            // which is not a possible choice in a read-only combobox)
+            SetStringSelection(value);
+            gtk_entry_set_editable( entry, FALSE );
+        }
+        else // editable combobox
+        {
+            // any value is accepted, even if it's not in our list
+            gtk_entry_set_text( entry, wxGTK_CONV(value) );
+        }
+
+        g_signal_connect_after (entry, "changed",
+                                G_CALLBACK (gtkcombobox_text_changed_callback), this);
+    }
+
+    g_signal_connect_after (m_widget, "changed",
+                        G_CALLBACK (gtkcombobox_changed_callback), this);
+
+    if ( !gtk_check_version(2,10,0) )
+    {
+        g_signal_connect (m_widget, "notify::popup-shown",
+                          G_CALLBACK (gtkcombobox_popupshown_callback), this);
+    }
+
+    SetInitialSize(size); // need this too because this is a wxControlWithItems
+
+    return true;