+ GtkWidget *entry = GTK_COMBO(m_widget)->entry;
+ gtk_entry_set_editable( GTK_ENTRY(entry), editable );
+}
+
+void wxComboBox::OnChar( wxKeyEvent &event )
+{
+ if ( event.GetKeyCode() == WXK_RETURN )
+ {
+ // GTK automatically selects an item if its in the list
+ wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, GetId());
+ event.SetString( GetValue() );
+ event.SetInt( GetSelection() );
+ event.SetEventObject( this );
+ GetEventHandler()->ProcessEvent( event );
+
+ // Catch GTK event so that GTK doesn't open the drop
+ // down list upon RETURN.
+ return;
+ }
+
+ event.Skip();
+}
+
+void wxComboBox::DisableEvents()
+{
+ gtk_signal_disconnect_by_func( GTK_OBJECT(GTK_COMBO(m_widget)->list),
+ GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this );
+ gtk_signal_disconnect_by_func( GTK_OBJECT(GTK_COMBO(m_widget)->entry),
+ GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this );
+}
+
+void wxComboBox::EnableEvents()
+{
+ gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->list), "select-child",
+ GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this );
+ gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed",
+ GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this );