Mercurial > emacs
changeset 106549:3acd32c3e0ac
gtkutil.c: Scroll bar thumb not updated properly (bug #5177).
(scroll_end_callback): New function (bug #5177)
(xg_create_scroll_bar): Call scroll_end_callback on button release
event (bug #5177).
(xg_event_is_for_scrollbar): != replaced with ==.
author | Jan Djärv <jan.h.d@swipnet.se> |
---|---|
date | Sat, 12 Dec 2009 12:29:15 +0000 |
parents | 4a940e6bbe88 |
children | 562676f8dfb2 |
files | src/ChangeLog src/gtkutil.c |
diffstat | 2 files changed, 26 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sat Dec 12 11:53:27 2009 +0000 +++ b/src/ChangeLog Sat Dec 12 12:29:15 2009 +0000 @@ -1,3 +1,10 @@ +2009-12-12 Jan Djärv <jan.h.d@swipnet.se> + + * gtkutil.c (scroll_end_callback): New function (bug #5177) + (xg_create_scroll_bar): Call scroll_end_callback on button release + event (bug #5177). + (xg_event_is_for_scrollbar): != replaced with ==. + 2009-12-12 Kenichi Handa <handa@m17n.org> * ftfont.c (struct ftfont_info): New member matrix.
--- a/src/gtkutil.c Sat Dec 12 11:53:27 2009 +0000 +++ b/src/gtkutil.c Sat Dec 12 12:29:15 2009 +0000 @@ -3093,6 +3093,18 @@ xg_remove_widget_from_map (id); } +/* Callback for button release. Sets dragging to Qnil when dragging is done. */ + +static gboolean +scroll_end_callback (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data) +{ + struct scroll_bar *bar = (struct scroll_bar *) user_data; + bar->dragging = Qnil; + return FALSE; +} + /* Create a scroll bar widget for frame F. Store the scroll bar in BAR. SCROLL_CALLBACK is the callback to invoke when the value of the @@ -3134,6 +3146,11 @@ G_CALLBACK (xg_gtk_scroll_destroy), (gpointer) (EMACS_INT) scroll_id); + g_signal_connect (G_OBJECT (wscroll), + "button-release-event", + G_CALLBACK (scroll_end_callback), + (gpointer) bar); + /* The scroll bar widget does not draw on a window of its own. Instead it draws on the parent window, in this case the edit widget. So whenever the edit widget is cleared, the scroll bar needs to redraw @@ -3317,13 +3334,13 @@ retval = gdk_display_get_window_at_pointer (gdpy, NULL, NULL) != f->output_data.x->edit_widget->window; } - else if (f && (event->type != ButtonRelease || event->type != MotionNotify)) + else if (f && (event->type == ButtonRelease || event->type == MotionNotify)) { /* If we are releasing or moving the scroll bar, it has the grab. */ retval = gtk_grab_get_current () != 0 && gtk_grab_get_current () != f->output_data.x->edit_widget; } - + return retval; }