summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>2002-01-25 13:22:00 +0000
committerTim Janik <timj@src.gnome.org>2002-01-25 13:22:00 +0000
commit9c6dc3d52d87d1c0c53aa2dc99f7e3b8f9436a28 (patch)
treebbc0d22d0701e4071cfde8ac4664e976e7d8099f /gtk
parent2ccd6fd5d7dd8058a79578d46fa543c19fbb8055 (diff)
downloadgtk+-9c6dc3d52d87d1c0c53aa2dc99f7e3b8f9436a28.tar.gz
assert that the passed in arrow is always _UP or _DOWN, this catches false
Fri Jan 25 14:03:36 2002 Tim Janik <timj@gtk.org> * gtk/gtkspinbutton.c (gtk_spin_button_draw_arrow): assert that the passed in arrow is always _UP or _DOWN, this catches false invocations which lead to drawing artefacts. (start_spinning): likewise, i.e. sanity check the passed in arrow. (gtk_spin_button_button_release): fix arrow redrawing. (gtk_spin_button_button_press): must set click_child for button3 even if we don't take spinning action right away. * gtk/gtkspinbutton.h (struct _GtkSpinButton): document valid values for click_child.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkspinbutton.c8
-rw-r--r--gtk/gtkspinbutton.h2
2 files changed, 9 insertions, 1 deletions
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c
index 12b3ac22b2..f1909a89a2 100644
--- a/gtk/gtkspinbutton.c
+++ b/gtk/gtkspinbutton.c
@@ -757,6 +757,7 @@ gtk_spin_button_draw_arrow (GtkSpinButton *spin_button,
gint arrow_size;
g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button));
+ g_return_if_fail (arrow == GTK_ARROW_UP || arrow == GTK_ARROW_DOWN);
widget = GTK_WIDGET (spin_button);
spin_shadow_type = spin_button_get_shadow_type (spin_button);
@@ -974,6 +975,8 @@ start_spinning (GtkSpinButton *spin,
GtkArrowType click_child,
gfloat step)
{
+ g_return_if_fail (click_child == GTK_ARROW_UP || click_child == GTK_ARROW_DOWN);
+
spin->click_child = click_child;
gtk_spin_button_real_spin (spin, click_child == GTK_ARROW_UP ? step : -step);
@@ -1016,6 +1019,8 @@ gtk_spin_button_button_press (GtkWidget *widget,
start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
else if (event->button == 2)
start_spinning (spin, GTK_ARROW_UP, spin->adjustment->page_increment);
+ else
+ spin->click_child = GTK_ARROW_UP;
}
else
{
@@ -1023,6 +1028,8 @@ gtk_spin_button_button_press (GtkWidget *widget,
start_spinning (spin, GTK_ARROW_DOWN, spin->adjustment->step_increment);
else if (event->button == 2)
start_spinning (spin, GTK_ARROW_DOWN, spin->adjustment->page_increment);
+ else
+ spin->click_child = GTK_ARROW_DOWN;
}
return TRUE;
}
@@ -1080,6 +1087,7 @@ gtk_spin_button_button_release (GtkWidget *widget,
click_child = spin->click_child;
spin->click_child = 2;
gtk_spin_button_draw_arrow (spin, click_child);
+
return TRUE;
}
else
diff --git a/gtk/gtkspinbutton.h b/gtk/gtkspinbutton.h
index d22c9c3bb3..04610cb455 100644
--- a/gtk/gtkspinbutton.h
+++ b/gtk/gtkspinbutton.h
@@ -89,7 +89,7 @@ struct _GtkSpinButton
GtkSpinButtonUpdatePolicy update_policy;
guint in_child : 2;
- guint click_child : 2;
+ guint click_child : 2; /* valid: GTK_ARROW_UP=0, GTK_ARROW_DOWN=1 or 2=NONE/BOTH */
guint button : 2;
guint need_timer : 1;
guint timer_calls : 3;