diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-12-24 03:44:17 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-12-24 03:44:17 +0000 |
commit | f9403b12e32a5e52afa506ff6aa05530d1adc3a1 (patch) | |
tree | 365c4e9275c32adbaa6748c35ce2a762567b47ad /gtk/gtkcombobox.c | |
parent | 2116516b0eed2f2254de7b5093f8f0af8f44ef41 (diff) | |
download | gtk+-f9403b12e32a5e52afa506ff6aa05530d1adc3a1.tar.gz |
Transfer state from the button to the cell view to get prelighting right.
2004-12-23 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcombobox.c (gtk_combo_box_button_state_changed):
Transfer state from the button to the cell view to get
prelighting right. (#156327, Ricardo Veguilla)
Diffstat (limited to 'gtk/gtkcombobox.c')
-rw-r--r-- | gtk/gtkcombobox.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c index f0acdd1b5c..eb567fb5f2 100644 --- a/gtk/gtkcombobox.c +++ b/gtk/gtkcombobox.c @@ -225,6 +225,9 @@ static void gtk_combo_box_style_set (GtkWidget *widget, GtkStyle *previous); static void gtk_combo_box_button_toggled (GtkWidget *widget, gpointer data); +static void gtk_combo_box_button_state_changed (GtkWidget *widget, + GtkStateType previous, + gpointer data); static void gtk_combo_box_add (GtkContainer *container, GtkWidget *widget); static void gtk_combo_box_remove (GtkContainer *container, @@ -842,6 +845,23 @@ gtk_combo_box_state_changed (GtkWidget *widget, } static void +gtk_combo_box_button_state_changed (GtkWidget *widget, + GtkStateType previous, + gpointer data) +{ + GtkComboBox *combo_box = GTK_COMBO_BOX (data); + + if (GTK_WIDGET_REALIZED (widget)) + { + if (!combo_box->priv->tree_view && combo_box->priv->cell_view) + gtk_widget_set_state (combo_box->priv->cell_view, + GTK_WIDGET_STATE (widget)); + } + + gtk_widget_queue_draw (widget); +} + +static void gtk_combo_box_check_appearance (GtkComboBox *combo_box) { gboolean appears_as_list; @@ -2365,6 +2385,9 @@ gtk_combo_box_menu_setup (GtkComboBox *combo_box, g_signal_connect (combo_box->priv->button, "button_press_event", G_CALLBACK (gtk_combo_box_menu_button_press), combo_box); + g_signal_connect (combo_box->priv->button, "state_changed", + G_CALLBACK (gtk_combo_box_button_state_changed), + combo_box); /* create our funky menu */ menu = gtk_menu_new (); @@ -2517,6 +2540,10 @@ gtk_combo_box_menu_destroy (GtkComboBox *combo_box) G_SIGNAL_MATCH_DATA, 0, 0, NULL, gtk_combo_box_menu_button_press, NULL); + g_signal_handlers_disconnect_matched (combo_box->priv->button, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, + gtk_combo_box_button_state_changed, combo_box); /* unparent will remove our latest ref */ gtk_widget_unparent (combo_box->priv->button); |