summaryrefslogtreecommitdiff
path: root/gtk/gtktextview.c
diff options
context:
space:
mode:
authorMatthias Clasen <maclas@gmx.de>2003-06-05 19:34:03 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2003-06-05 19:34:03 +0000
commitfc82265675ff4e0649946a60618e707bc5564c5f (patch)
tree2683e41755749ec614e2176e2f1de96b2d936a7a /gtk/gtktextview.c
parent4c7356281f0a04465a00042e6b2f9703374687fe (diff)
downloadgtk+-fc82265675ff4e0649946a60618e707bc5564c5f.tar.gz
Fix for #84668, reported by Torbjörn Andersson:
2003-06-05 Matthias Clasen <maclas@gmx.de> * 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().
Diffstat (limited to 'gtk/gtktextview.c')
-rw-r--r--gtk/gtktextview.c38
1 files changed, 28 insertions, 10 deletions
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index d51411ad21..5d3c1fd317 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)