- wxString value = GetValue();
-
- if ( Number() == 0 )
- {
- // make Enter generate "selected" event if there is only one item
- // in the combobox - without it, it's impossible to select it at
- // all!
- wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() );
- event.SetInt( 0 );
- event.SetString( value );
- event.SetEventObject( this );
- GetEventHandler()->ProcessEvent( event );
- }
- else
- {
- // add the item to the list if it's not there yet
- if ( FindString(value) == wxNOT_FOUND )
- {
- Append(value);
- SetStringSelection(value);
-
- // and generate the selected event for it
- wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() );
- event.SetInt( Number() - 1 );
- event.SetString( value );
- event.SetEventObject( this );
- GetEventHandler()->ProcessEvent( event );
- }
- else
- {
- // This will invoke the dialog default action, such
- // as the clicking the default button.
-
- wxWindow *top_frame = m_parent;
- while (top_frame->GetParent() && !(top_frame->IsTopLevel()))
- top_frame = top_frame->GetParent();
-
- if (top_frame && GTK_IS_WINDOW(top_frame->m_widget))
- {
- GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
-
- if (window->default_widget)
- {
- gtk_widget_activate (window->default_widget);
- 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;