+2004-11-08 [colin] 0.9.12cvs140.3
+
+ * src/textview.c
+ o Use text cursor instead of arrow when
+ not on a link
+ o Fix handling of contiguous links (as in
+ "colin@colino.net" <colin@colino.net>)
+ This one unveils a bug in get_email_part()
+
2004-11-07 [colin] 0.9.12cvs140.2
* src/textview.c
( cvs diff -u -r 1.100.2.5 -r 1.100.2.6 AUTHORS; cvs diff -u -r 1.96.2.25 -r 1.96.2.26 src/textview.c; cvs diff -u -r 1.12.2.2 -r 1.12.2.3 src/textview.h; ) > 0.9.12cvs139.2.patchset
( cvs diff -u -r 1.382.2.59 -r 1.382.2.60 src/compose.c; ) > 0.9.12cvs140.1.patchset
( cvs diff -u -r 1.96.2.26 -r 1.96.2.27 src/textview.c; ) > 0.9.12cvs140.2.patchset
+( cvs diff -u -r 1.96.2.27 -r 1.96.2.28 src/textview.c; ) > 0.9.12cvs140.3.patchset
static GdkCursor *hand_cursor = NULL;
+static GdkCursor *text_cursor = NULL;
#define TEXTVIEW_STATUSBAR_PUSH(textview, str) \
{ \
if (!hand_cursor)
hand_cursor = gdk_cursor_new(GDK_HAND2);
+ if (!text_cursor)
+ text_cursor = gdk_cursor_new(GDK_XTERM);
g_signal_connect(G_OBJECT(text), "key_press_event",
G_CALLBACK(textview_key_pressed),
window = gtk_text_view_get_window(GTK_TEXT_VIEW(textview->text),
GTK_TEXT_WINDOW_TEXT);
- gdk_window_set_cursor(window, uri ? hand_cursor : NULL);
+ gdk_window_set_cursor(window, uri ? hand_cursor : text_cursor);
TEXTVIEW_STATUSBAR_POP(textview);
GtkTextIter *start_iter,
GtkTextIter *end_iter)
{
- gint start_pos, end_pos;
+ gint start_pos, end_pos, cur_pos;
RemoteURI *uri = NULL;
GSList *cur;
start_pos = gtk_text_iter_get_offset(start_iter);
end_pos = gtk_text_iter_get_offset(end_iter);
+ cur_pos = gtk_text_iter_get_offset(iter);
for (cur = textview->uri_list; cur != NULL; cur = cur->next) {
RemoteURI *uri_ = (RemoteURI *)cur->data;
-
if (start_pos == uri_->start &&
end_pos == uri_->end) {
uri = uri_;
break;
- }
+ } else if (start_pos == uri_->start ||
+ end_pos == uri_->end) {
+ /* in case of contiguous links, textview_get_uri_range
+ * returns a broader range (start of 1st link to end
+ * of last link).
+ * In that case, correct link is the one covering
+ * current iter.
+ */
+ if (uri_->start <= cur_pos && cur_pos <= uri_->end) {
+ uri = uri_;
+ break;
+ }
+ }
}
return uri;