diff options
author | Owen Taylor <owt1@cornell.edu> | 1998-03-10 22:57:26 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-03-10 22:57:26 +0000 |
commit | cb6412978c3f223e908aa05be7379a51f4dfcc8c (patch) | |
tree | 060bafe9fa70740b9d1bb8d31f23707979f4d897 /gtk/gtkrange.c | |
parent | 120df3b8b7092f9800a2ebf42cb4b698ef1f7269 (diff) | |
download | gdk-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.c | 37 |
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 |