- 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 eventEnter(wxEVT_COMMAND_TEXT_ENTER, GetId());
- eventEnter.SetString( GetValue() );
- eventEnter.SetInt( GetSelection() );
- eventEnter.SetEventObject( this );
-
- if (!GetEventHandler()->ProcessEvent( eventEnter ))
- {
- // 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);
- }
- }
-
- // Catch GTK event so that GTK doesn't open the drop
- // down list upon RETURN.
- return;
- }
-
- event.Skip();
-}
-
-void wxComboBox::DisableEvents()
-{
- g_signal_handlers_disconnect_by_func (GTK_COMBO(m_widget)->list,
- (gpointer) gtk_combo_select_child_callback,
- this);
- g_signal_handlers_disconnect_by_func (GTK_COMBO(m_widget)->entry,
- (gpointer) gtk_text_changed_callback,
- this);
-}
-
-void wxComboBox::EnableEvents()
-{
- g_signal_connect_after (GTK_COMBO(m_widget)->list, "select-child",
- G_CALLBACK (gtk_combo_select_child_callback),
- this);
- g_signal_connect_after (GTK_COMBO(m_widget)->entry, "changed",
- G_CALLBACK (gtk_text_changed_callback),
- this );
-}
-
-void wxComboBox::OnSize( wxSizeEvent &event )
-{
- // NB: In some situations (e.g. on non-first page of a wizard, if the
- // size used is default size), GtkCombo widget is resized correctly,
- // but it's look is not updated, it's rendered as if it was much wider.
- // No other widgets are affected, so it looks like a bug in GTK+.
- // Manually requesting resize calculation (as gtk_pizza_set_size does)
- // fixes it.
- if (GTK_WIDGET_VISIBLE(m_widget))
- gtk_widget_queue_resize(m_widget);
-
- event.Skip();