diff --git a/ChangeLog b/ChangeLog index a85a7814b52964102e376af59f92a048788e4432..e78160683559a082b6f7ddfdc3621b6202e8d2db 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 a85a7814b52964102e376af59f92a048788e4432..e78160683559a082b6f7ddfdc3621b6202e8d2db 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 a85a7814b52964102e376af59f92a048788e4432..e78160683559a082b6f7ddfdc3621b6202e8d2db 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 a85a7814b52964102e376af59f92a048788e4432..e78160683559a082b6f7ddfdc3621b6202e8d2db 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 a85a7814b52964102e376af59f92a048788e4432..e78160683559a082b6f7ddfdc3621b6202e8d2db 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 d51411ad211b61947cce8bd45d9d3f1fd713730f..5d3c1fd317a7c7456132f9698a2359c533c59481 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)