- if ( event.KeyCode() == WXK_RETURN )
- {
- 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;
- }
- }
- }
- }
- }
-
- event.Skip();