summaryrefslogtreecommitdiff
path: root/gtk/gtkrange.c
diff options
context:
space:
mode:
authorOwen Taylor <owt1@cornell.edu>1998-03-10 22:57:26 +0000
committerTim Janik <timj@src.gnome.org>1998-03-10 22:57:26 +0000
commitcb6412978c3f223e908aa05be7379a51f4dfcc8c (patch)
tree060bafe9fa70740b9d1bb8d31f23707979f4d897 /gtk/gtkrange.c
parent120df3b8b7092f9800a2ebf42cb4b698ef1f7269 (diff)
downloadgdk-pixbuf-cb6412978c3f223e908aa05be7379a51f4dfcc8c.tar.gz
Merging release_1_0 changes into the main tree.
-timj Tue Mar 10 14:24:09 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkselection.c (gtk_selection_clear): Make the return result reflect whether the clear event was out of data. * gtk/gtkeditable.c: Ignore out of date selection clear events. * gtk/gtkentry.c gtk/gtktext.c: Don't synthesize releases on [2/3]BUTTON presses, since we get the normal click as well. Claim the selection when selecting words/lines. Tue Mar 10 13:34:29 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkrange.c (gtk_range_default_[vh]trough_click): Take forward/back step arrows into account when computing position for middle button clicks. * gtk/gtktext.c gtk/gtkentry.c: - Fixes for deleting characters (don't subtract guints and get negative numbers!) - Reset cursor_virtual_x when moving by words and lines - Extra sanity checks - Fix to gtk_text_get_chars (from Tony Gale <gale@daedalus.dera.gov.uk>)
Diffstat (limited to 'gtk/gtkrange.c')
-rw-r--r--gtk/gtkrange.c37
1 files changed, 22 insertions, 15 deletions
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index 0e939b7dc..eebc00c08 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -387,33 +387,36 @@ gtk_range_default_htrough_click (GtkRange *range,
gint y,
gfloat *jump_perc)
{
- gint xthickness;
gint ythickness;
gint trough_width;
gint trough_height;
gint slider_x;
+ gint slider_length;
+ gint left, right;
g_return_val_if_fail (range != NULL, GTK_TROUGH_NONE);
g_return_val_if_fail (GTK_IS_RANGE (range), GTK_TROUGH_NONE);
- xthickness = GTK_WIDGET (range)->style->klass->xthickness;
ythickness = GTK_WIDGET (range)->style->klass->ythickness;
- if ((x > xthickness) && (y > ythickness))
+ gtk_range_trough_hdims (range, &left, &right);
+ gdk_window_get_size (range->slider, &slider_length, NULL);
+ right += slider_length;
+
+ if ((x > left) && (y > ythickness))
{
gdk_window_get_size (range->trough, &trough_width, &trough_height);
- if ((x < (trough_width - xthickness) && (y < (trough_height - ythickness))))
+ if ((x < right) && (y < (trough_height - ythickness)))
{
- gdk_window_get_position (range->slider, &slider_x, NULL);
-
if (jump_perc)
{
- *jump_perc = ((double) x) / ((double) trough_width);
-
+ *jump_perc = ((gdouble) (x - left)) / ((gdouble) (right - left));
return GTK_TROUGH_JUMP;
}
+ gdk_window_get_position (range->slider, &slider_x, NULL);
+
if (x < slider_x)
return GTK_TROUGH_START;
else
@@ -431,32 +434,36 @@ gtk_range_default_vtrough_click (GtkRange *range,
gfloat *jump_perc)
{
gint xthickness;
- gint ythickness;
gint trough_width;
gint trough_height;
gint slider_y;
+ gint top, bottom;
+ gint slider_length;
g_return_val_if_fail (range != NULL, GTK_TROUGH_NONE);
g_return_val_if_fail (GTK_IS_RANGE (range), GTK_TROUGH_NONE);
xthickness = GTK_WIDGET (range)->style->klass->xthickness;
- ythickness = GTK_WIDGET (range)->style->klass->ythickness;
- if ((x > xthickness) && (y > ythickness))
+ gtk_range_trough_vdims (range, &top, &bottom);
+ gdk_window_get_size (range->slider, NULL, &slider_length);
+ bottom += slider_length;
+
+ if ((x > xthickness) && (y > top))
{
gdk_window_get_size (range->trough, &trough_width, &trough_height);
- if ((x < (trough_width - xthickness) && (y < (trough_height - ythickness))))
+ if ((x < (trough_width - xthickness) && (y < bottom)))
{
- gdk_window_get_position (range->slider, NULL, &slider_y);
-
if (jump_perc)
{
- *jump_perc = ((double) y) / ((double) trough_height);
+ *jump_perc = ((gdouble) (y - top)) / ((gdouble) (bottom - top));
return GTK_TROUGH_JUMP;
}
+ gdk_window_get_position (range->slider, NULL, &slider_y);
+
if (y < slider_y)
return GTK_TROUGH_START;
else