aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-02-18 04:51:48 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-02-18 04:51:48 +0000
commit6ce6e597f9ae9d6d0775b05af7a6aca5ed1d48d0 (patch)
treef39b70454d25b6be8f73c9c9dd46fe911b98380d
parent67679ea00935cc189597ef51e96684978b9aa2d4 (diff)
fixed glitches of underlined URI in textview.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@113 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog5
-rw-r--r--ChangeLog.ja5
-rw-r--r--src/textview.c23
3 files changed, 33 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index dbf8eac4..3f6477f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2005-02-18
+ * src/textview.c: fixed glitches of underlined URI in textview
+ (thanks to Alfons).
+
+2005-02-18
+
* src/compose.c: compose_join_next_line(): don't use
gtk_text_buffer_backspace() which is gtk-2.6 only API.
diff --git a/ChangeLog.ja b/ChangeLog.ja
index e6659474..0798c83b 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,10 @@
2005-02-18
+ * src/textview.c: textview のアンダーライン付き URI の不具合を修正
+ (Alfons さん thanks)。
+
+2005-02-18
+
* src/compose.c: compose_join_next_line(): gtk-2.6 のみの API である
compose_join_next_line() を使わないようにした。
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),