diff options
author | Soeren Sandmann <sandmann@daimi.au.dk> | 2002-02-22 13:34:28 +0000 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@src.gnome.org> | 2002-02-22 13:34:28 +0000 |
commit | 5d81847f201c1a25c9edf5e522c6f3d12bdb2533 (patch) | |
tree | 3452e43537b4be475937c98175bb4b679ab96d4d /gtk/gtktogglebutton.c | |
parent | 96387b40ead053e27d33f874ad382e3929081457 (diff) | |
download | gtk+-5d81847f201c1a25c9edf5e522c6f3d12bdb2533.tar.gz |
feedback when check and radio buttons are depressed.
Fri Feb 22 14:08:38 2002 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtkradiobutton.c, gtk/gtkcheckbutton.c, gtkbutton.h,
gtktogglebutton.c: feedback when check and radio buttons are
depressed.
Diffstat (limited to 'gtk/gtktogglebutton.c')
-rw-r--r-- | gtk/gtktogglebutton.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/gtk/gtktogglebutton.c b/gtk/gtktogglebutton.c index 0b159e5a02..27088291da 100644 --- a/gtk/gtktogglebutton.c +++ b/gtk/gtktogglebutton.c @@ -162,6 +162,7 @@ gtk_toggle_button_init (GtkToggleButton *toggle_button) { toggle_button->active = FALSE; toggle_button->draw_indicator = FALSE; + GTK_BUTTON (toggle_button)->depress_on_activate = TRUE; } @@ -246,6 +247,17 @@ gtk_toggle_button_get_property (GObject *object, } } +static void +gtk_toggle_button_update_depress_on_activate (GtkToggleButton *toggle_button) +{ + GtkButton *button = GTK_BUTTON (toggle_button); + + if (toggle_button->draw_indicator || toggle_button->inconsistent) + button->depress_on_activate = FALSE; + else + button->depress_on_activate = !toggle_button->active; +} + void gtk_toggle_button_set_mode (GtkToggleButton *toggle_button, gboolean draw_indicator) @@ -262,6 +274,8 @@ gtk_toggle_button_set_mode (GtkToggleButton *toggle_button, { toggle_button->draw_indicator = draw_indicator; + gtk_toggle_button_update_depress_on_activate (toggle_button); + if (GTK_WIDGET_VISIBLE (toggle_button)) gtk_widget_queue_resize (GTK_WIDGET (toggle_button)); @@ -344,6 +358,7 @@ gtk_toggle_button_set_inconsistent (GtkToggleButton *toggle_button, { toggle_button->inconsistent = setting; + gtk_toggle_button_update_depress_on_activate (toggle_button); gtk_toggle_button_update_state (GTK_BUTTON (toggle_button)); gtk_widget_queue_draw (GTK_WIDGET (toggle_button)); @@ -405,6 +420,7 @@ gtk_toggle_button_pressed (GtkButton *button) button->button_down = TRUE; gtk_toggle_button_update_state (button); + gtk_widget_queue_draw (GTK_WIDGET (button)); } static void @@ -418,6 +434,7 @@ gtk_toggle_button_released (GtkButton *button) gtk_button_clicked (button); gtk_toggle_button_update_state (button); + gtk_widget_queue_draw (GTK_WIDGET (button)); } } @@ -427,6 +444,8 @@ gtk_toggle_button_clicked (GtkButton *button) GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button); toggle_button->active = !toggle_button->active; + gtk_toggle_button_update_depress_on_activate (toggle_button); + gtk_toggle_button_toggled (toggle_button); gtk_toggle_button_update_state (button); @@ -448,10 +467,10 @@ gtk_toggle_button_update_state (GtkButton *button) else depressed = toggle_button->active; - if (!button->button_down && button->in_button) + if (button->in_button && (!button->button_down || toggle_button->draw_indicator)) new_state = GTK_STATE_PRELIGHT; else - new_state = depressed ? GTK_STATE_ACTIVE: GTK_STATE_NORMAL; + new_state = depressed ? GTK_STATE_ACTIVE : GTK_STATE_NORMAL; _gtk_button_set_depressed (button, depressed); gtk_widget_set_state (GTK_WIDGET (toggle_button), new_state); |