X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ff654490b7cb185631a1dc4621094d88643ccf41..f05d2fde684dd535894ec52ababbee619dcb3e05:/src/gtk/combobox.cpp diff --git a/src/gtk/combobox.cpp b/src/gtk/combobox.cpp index 1fdea4fd20..439408958b 100644 --- a/src/gtk/combobox.cpp +++ b/src/gtk/combobox.cpp @@ -36,7 +36,7 @@ gtkcombobox_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *comb wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() ); event.SetString( combo->GetValue() ); event.SetEventObject( combo ); - combo->GetEventHandler()->ProcessEvent( event ); + combo->HandleWindowEvent( event ); } static void @@ -51,7 +51,7 @@ gtkcombobox_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) event.SetInt( combo->GetSelection() ); event.SetString( combo->GetStringSelection() ); event.SetEventObject( combo ); - combo->GetEventHandler()->ProcessEvent( event ); + combo->HandleWindowEvent( event ); } } @@ -111,11 +111,17 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, return false; } - if(HasFlag(wxCB_SORT)) + if (HasFlag(wxCB_SORT)) m_strings = new wxSortedArrayString(); m_widget = gtk_combo_box_entry_new_text(); + if (HasFlag(wxBORDER_NONE)) + { + // Doesn't seem to work + // g_object_set (m_widget, "has-frame", FALSE, NULL); + } + GtkEntry * const entry = GetEntry(); gtk_entry_set_editable( entry, TRUE ); @@ -380,13 +386,24 @@ void wxComboBox::OnChar( wxKeyEvent &event ) 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; }