From 6ce6e597f9ae9d6d0775b05af7a6aca5ed1d48d0 Mon Sep 17 00:00:00 2001 From: hiro Date: Fri, 18 Feb 2005 04:51:48 +0000 Subject: fixed glitches of underlined URI in textview. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@113 ee746299-78ed-0310-b773-934348b2243d --- src/textview.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/textview.c') diff --git a/src/textview.c b/src/textview.c index d8bc10df..c078a0d5 100644 --- a/src/textview.c +++ b/src/textview.c @@ -171,6 +171,9 @@ static gboolean textview_event_after (GtkWidget *widget, static gboolean textview_motion_notify (GtkWidget *widget, GdkEventMotion *event, TextView *textview); +static gboolean textview_leave_notify (GtkWidget *widget, + GdkEventCrossing *event, + TextView *textview); static gboolean textview_visibility_notify (GtkWidget *widget, GdkEventVisibility *event, TextView *textview); @@ -226,6 +229,7 @@ TextView *textview_create(void) (scrolledwin, prefs_common.mainview_width, -1); text = gtk_text_view_new(); + gtk_widget_add_events(text, GDK_LEAVE_NOTIFY_MASK); gtk_widget_show(text); gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD); @@ -246,6 +250,8 @@ TextView *textview_create(void) G_CALLBACK(textview_event_after), textview); g_signal_connect(G_OBJECT(text), "motion-notify-event", G_CALLBACK(textview_motion_notify), textview); + g_signal_connect(G_OBJECT(text), "leave-notify-event", + G_CALLBACK(textview_leave_notify), textview); g_signal_connect(G_OBJECT(text), "visibility-notify-event", G_CALLBACK(textview_visibility_notify), textview); @@ -1793,11 +1799,28 @@ static gboolean textview_motion_notify(GtkWidget *widget, return FALSE; } +static gboolean textview_leave_notify(GtkWidget *widget, + GdkEventCrossing *event, + TextView *textview) +{ + textview_set_cursor(textview, GTK_TEXT_VIEW(widget), 0, 0); + + return FALSE; +} + static gboolean textview_visibility_notify(GtkWidget *widget, GdkEventVisibility *event, TextView *textview) { gint wx, wy, bx, by; + GdkWindow *window; + + window = gtk_text_view_get_window(GTK_TEXT_VIEW(widget), + GTK_TEXT_WINDOW_TEXT); + + /* check if the event occurred for the text window part */ + if (window != event->window) + return FALSE; gdk_window_get_pointer(widget->window, &wx, &wy, NULL); gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(widget), -- cgit v1.2.3