X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dec7b5a8085402c3b170d49f838086c4271d6017..8fe8b421fc1e5bb71e7ce3e2272d747ac6df079c:/src/gtk/combobox.cpp diff --git a/src/gtk/combobox.cpp b/src/gtk/combobox.cpp index 1743505cac..8ff0dc6b79 100644 --- a/src/gtk/combobox.cpp +++ b/src/gtk/combobox.cpp @@ -222,11 +222,26 @@ void wxComboBox::OnChar( wxKeyEvent &event ) event.Skip(); } -void wxComboBox::GTKDisableEvents() +void wxComboBox::EnableTextChangedEvents(bool enable) { - if ( GetEntry() ) + if ( !GetEntry() ) + return; + + if ( enable ) + { + g_signal_handlers_unblock_by_func(GTK_BIN(m_widget)->child, + (gpointer)gtkcombobox_text_changed_callback, this); + } + else // disable + { g_signal_handlers_block_by_func(GTK_BIN(m_widget)->child, (gpointer)gtkcombobox_text_changed_callback, this); + } +} + +void wxComboBox::GTKDisableEvents() +{ + EnableTextChangedEvents(false); g_signal_handlers_block_by_func(m_widget, (gpointer)gtkcombobox_changed_callback, this); @@ -236,9 +251,7 @@ void wxComboBox::GTKDisableEvents() void wxComboBox::GTKEnableEvents() { - if ( GetEntry() ) - g_signal_handlers_unblock_by_func(GTK_BIN(m_widget)->child, - (gpointer)gtkcombobox_text_changed_callback, this); + EnableTextChangedEvents(true); g_signal_handlers_unblock_by_func(m_widget, (gpointer)gtkcombobox_changed_callback, this); @@ -263,6 +276,14 @@ wxComboBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) return GetDefaultAttributesFromGTKWidget(gtk_combo_box_entry_new, true); } +void wxComboBox::SetValue(const wxString& value) +{ + if ( HasFlag(wxCB_READONLY) ) + SetStringSelection(value); + else + wxTextEntry::SetValue(value); +} + // ---------------------------------------------------------------------------- // standard event handling // ----------------------------------------------------------------------------