From fc82265675ff4e0649946a60618e707bc5564c5f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 5 Jun 2003 19:34:03 +0000 Subject: [PATCH] =?utf8?q?Fix=20for=20#84668,=20reported=20by=20Torbj=F6rn?= =?utf8?q?=20Andersson:?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2003-06-05 Matthias Clasen * gtk/gtktextview.c: Fix for #84668, reported by Torbjörn Andersson: (gtk_text_view_grab_notify): (gtk_text_view_state_changed): Implement these to unobscure cursor when grab shadowed or insensitised. (gtk_text_view_unobscure_mouse_cursor): New function to undo the effect of gtk_text_view_obscure_mouse_cursor(). Code lifted from gtk_text_view_motion_event(). (gtk_text_view_motion_event): Use gtk_text_view_obscure_mouse_cursor(). --- ChangeLog | 9 +++++++++ ChangeLog.pre-2-10 | 9 +++++++++ ChangeLog.pre-2-4 | 9 +++++++++ ChangeLog.pre-2-6 | 9 +++++++++ ChangeLog.pre-2-8 | 9 +++++++++ gtk/gtktextview.c | 38 ++++++++++++++++++++++++++++---------- 6 files changed, 73 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index a85a7814b..e78160683 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2003-06-05 Matthias Clasen + * gtk/gtktextview.c: Fix for #84668, reported by Torbjörn Andersson: + (gtk_text_view_grab_notify): + (gtk_text_view_state_changed): Implement these + to unobscure cursor when grab shadowed or insensitised. + (gtk_text_view_unobscure_mouse_cursor): New function to undo the + effect of gtk_text_view_obscure_mouse_cursor(). Code lifted from + gtk_text_view_motion_event(). + (gtk_text_view_motion_event): Use gtk_text_view_obscure_mouse_cursor(). + * gtk/gtktextview.c (select_all): New keybinding signal for (un)selecting the whole buffer. Bound to C-a/C-\. (see #107889) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index a85a7814b..e78160683 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,14 @@ 2003-06-05 Matthias Clasen + * gtk/gtktextview.c: Fix for #84668, reported by Torbjörn Andersson: + (gtk_text_view_grab_notify): + (gtk_text_view_state_changed): Implement these + to unobscure cursor when grab shadowed or insensitised. + (gtk_text_view_unobscure_mouse_cursor): New function to undo the + effect of gtk_text_view_obscure_mouse_cursor(). Code lifted from + gtk_text_view_motion_event(). + (gtk_text_view_motion_event): Use gtk_text_view_obscure_mouse_cursor(). + * gtk/gtktextview.c (select_all): New keybinding signal for (un)selecting the whole buffer. Bound to C-a/C-\. (see #107889) diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index a85a7814b..e78160683 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,5 +1,14 @@ 2003-06-05 Matthias Clasen + * gtk/gtktextview.c: Fix for #84668, reported by Torbjörn Andersson: + (gtk_text_view_grab_notify): + (gtk_text_view_state_changed): Implement these + to unobscure cursor when grab shadowed or insensitised. + (gtk_text_view_unobscure_mouse_cursor): New function to undo the + effect of gtk_text_view_obscure_mouse_cursor(). Code lifted from + gtk_text_view_motion_event(). + (gtk_text_view_motion_event): Use gtk_text_view_obscure_mouse_cursor(). + * gtk/gtktextview.c (select_all): New keybinding signal for (un)selecting the whole buffer. Bound to C-a/C-\. (see #107889) diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index a85a7814b..e78160683 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,5 +1,14 @@ 2003-06-05 Matthias Clasen + * gtk/gtktextview.c: Fix for #84668, reported by Torbjörn Andersson: + (gtk_text_view_grab_notify): + (gtk_text_view_state_changed): Implement these + to unobscure cursor when grab shadowed or insensitised. + (gtk_text_view_unobscure_mouse_cursor): New function to undo the + effect of gtk_text_view_obscure_mouse_cursor(). Code lifted from + gtk_text_view_motion_event(). + (gtk_text_view_motion_event): Use gtk_text_view_obscure_mouse_cursor(). + * gtk/gtktextview.c (select_all): New keybinding signal for (un)selecting the whole buffer. Bound to C-a/C-\. (see #107889) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index a85a7814b..e78160683 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,14 @@ 2003-06-05 Matthias Clasen + * gtk/gtktextview.c: Fix for #84668, reported by Torbjörn Andersson: + (gtk_text_view_grab_notify): + (gtk_text_view_state_changed): Implement these + to unobscure cursor when grab shadowed or insensitised. + (gtk_text_view_unobscure_mouse_cursor): New function to undo the + effect of gtk_text_view_obscure_mouse_cursor(). Code lifted from + gtk_text_view_motion_event(). + (gtk_text_view_motion_event): Use gtk_text_view_obscure_mouse_cursor(). + * gtk/gtktextview.c (select_all): New keybinding signal for (un)selecting the whole buffer. Bound to C-a/C-\. (see #107889) diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index d51411ad2..5d3c1fd31 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -161,6 +161,8 @@ static void gtk_text_view_style_set (GtkWidget *widget, GtkStyle *previous_style); static void gtk_text_view_direction_changed (GtkWidget *widget, GtkTextDirection previous_direction); +static void gtk_text_view_grab_notify (GtkWidget *widget, + gboolean was_grabbed); static void gtk_text_view_state_changed (GtkWidget *widget, GtkStateType previous_state); @@ -491,6 +493,7 @@ gtk_text_view_class_init (GtkTextViewClass *klass) widget_class->unrealize = gtk_text_view_unrealize; widget_class->style_set = gtk_text_view_style_set; widget_class->direction_changed = gtk_text_view_direction_changed; + widget_class->grab_notify = gtk_text_view_grab_notify; widget_class->state_changed = gtk_text_view_state_changed; widget_class->size_request = gtk_text_view_size_request; widget_class->size_allocate = gtk_text_view_size_allocate; @@ -3555,6 +3558,30 @@ gtk_text_view_obscure_mouse_cursor (GtkTextView *text_view) text_view->mouse_cursor_obscured = TRUE; } +static void +gtk_text_view_unobscure_mouse_cursor (GtkTextView *text_view) +{ + if (text_view->mouse_cursor_obscured) + { + GdkCursor *cursor; + + cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (text_view)), + GDK_XTERM); + gdk_window_set_cursor (text_view->text_window->bin_window, cursor); + gdk_cursor_unref (cursor); + text_view->mouse_cursor_obscured = FALSE; + } +} + +static void +gtk_text_view_grab_notify (GtkWidget *widget, + gboolean was_grabbed) +{ + if (!was_grabbed) + gtk_text_view_unobscure_mouse_cursor (GTK_TEXT_VIEW (widget)); +} + + /* * Events */ @@ -3986,16 +4013,7 @@ gtk_text_view_motion_event (GtkWidget *widget, GdkEventMotion *event) { GtkTextView *text_view = GTK_TEXT_VIEW (widget); - if (text_view->mouse_cursor_obscured) - { - GdkCursor *cursor; - - cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), - GDK_XTERM); - gdk_window_set_cursor (text_view->text_window->bin_window, cursor); - gdk_cursor_unref (cursor); - text_view->mouse_cursor_obscured = FALSE; - } + gtk_text_view_unobscure_mouse_cursor (text_view); if (event->window == text_view->text_window->bin_window && text_view->drag_start_x >= 0) -- 2.43.2