wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() );
event.SetString( combo->GetValue() );
event.SetEventObject( combo );
- combo->GetEventHandler()->ProcessEvent( event );
+ combo->HandleWindowEvent( event );
}
static void
event.SetInt( combo->GetSelection() );
event.SetString( combo->GetStringSelection() );
event.SetEventObject( combo );
- combo->GetEventHandler()->ProcessEvent( event );
+ combo->HandleWindowEvent( event );
}
}
delete m_strings;
}
-void wxComboBox::SetFocus()
-{
- if ( m_hasFocus )
- {
- // don't do anything if we already have focus
- return;
- }
-
- gtk_widget_grab_focus( m_focusWidget );
-}
-
int wxComboBox::DoInsertItems(const wxArrayStringsAdapter & items,
unsigned int pos,
void **clientData, wxClientDataType type)
eventEnter.SetInt( GetSelection() );
eventEnter.SetEventObject( this );
- if ( GetEventHandler()->ProcessEvent(eventEnter) )
+ if ( HandleWindowEvent(eventEnter) )
{
// Catch GTK event so that GTK doesn't open the drop
// down list upon RETURN.
return;
}
}
+
+ // On enter key press, we must give a signal to default control,
+ // Otherwise, nothing happens when pressing Enter from inside a
+ // combo box in a dialog.
+ wxWindow *top_frame = wxGetTopLevelParent(this);
+ 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 );
+ }
break;
}