2004-11-08 [colin] 0.9.12cvs142.1
authorColin Leroy <colin@colino.net>
Mon, 8 Nov 2004 15:18:33 +0000 (15:18 +0000)
committerColin Leroy <colin@colino.net>
Mon, 8 Nov 2004 15:18:33 +0000 (15:18 +0000)
* src/textview.c
Sync with HEAD

ChangeLog-gtk2.claws
PATCHSETS
configure.ac
src/textview.c

index 41293759add13bd4d343c12bc96bf26d26e20e8e..cdeef48ab74d57f05048263ccda9fc371645a4a0 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-08 [colin]     0.9.12cvs142.1
+
+       * src/textview.c
+               Sync with HEAD
+
 2004-11-08 [colin]     0.9.12cvs141.1
 
        * src/textview.c
index 78d026692b59aaf54916f13322264e763edd843f..2162a8ba7dd984f9d17ef25a334874f52e0e87fd 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( 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
 ( cvs diff -u -r 1.2504.2.29 -r 1.2504.2.30 ChangeLog.claws; cvs diff -u -r 1.96.2.28 -r 1.96.2.29 src/textview.c; ) > 0.9.12cvs141.1.patchset
+( cvs diff -u -r 1.96.2.29 -r 1.96.2.30 src/textview.c; ) > 0.9.12cvs142.1.patchset
index 2da894ca5816a703af841609bc5ca123c31dbfd8..ca995061eedc368859703382eac15ef1aab0fd5e 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=12
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=141
+EXTRA_VERSION=142
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=.1
 
index a6c3381946893d80a517f3934ec22e45a0a3cfef..aaa9c7eb0b4d8345e3c06c2b275f1fd7351f930e 100644 (file)
@@ -805,7 +805,7 @@ static gboolean get_email_part(const gchar *start, const gchar *scanpos,
        const gchar *last_dot = NULL;
        const gchar *prelast_dot = NULL;
        const gchar *last_tld_char = NULL;
-
+       
        /* the informative part of the email address (describing the name
         * of the email address owner) may contain quoted parts. the
         * closure stack stores the last encountered quotes. */
@@ -873,8 +873,30 @@ static gboolean get_email_part(const gchar *start, const gchar *scanpos,
 
        if (!result) return FALSE;
 
+       if (*(bp_ - 1) == '"' && *(ep_) == '"' 
+       && *(ep_ + 1) == ' ' && *(ep_ + 2) == '<'
+       && IS_RFC822_CHAR(*(ep_ + 3))) {
+               /* this informative part with an @ in it is 
+                * followed by the email address */
+               ep_ += 3;
+               
+               /* go to matching '>' (or next non-rfc822 char, like \n) */
+               for (; *ep_ != '>' && *ep != '\0' && IS_RFC822_CHAR(*ep_); ep_++)
+                       ;
+                       
+               /* include the bracket */
+               if (*ep_ == '>') ep_++;
+               
+               /* include the leading quote */         
+               bp_--;
+
+               *ep = ep_;
+               *bp = bp_;
+               return TRUE;
+       }
+
        /* skip if it's between quotes "'alfons@proteus.demon.nl'" <alfons@proteus.demon.nl> */
-       if (bp_ - 1 > start && IS_QUOTE(*(bp_ - 1)) && IS_QUOTE(*ep_)) 
+       if (bp_ - 1 > start && IS_QUOTE(*(bp_ - 1)) && IS_QUOTE(*ep_))
                return FALSE;
 
        /* see if this is <bracketed>; in this case we also scan for the informative part. */
@@ -937,7 +959,7 @@ static gboolean get_email_part(const gchar *start, const gchar *scanpos,
 
        *ep = ep_;
        *bp = bp_;
-
+       
        return result;
 }
 
@@ -1029,7 +1051,7 @@ static void textview_make_clickable_parts(TextView *textview,
                const gchar     *bp, *ep;       /* text position */
                gint             pti;           /* index in parse table */
                struct txtpos   *next;          /* next */
-       } head = {NULL, NULL, 0,  NULL}, *last = &head, *next = NULL;
+       } head = {NULL, NULL, 0,  NULL}, *last = &head;
 
        gtk_text_buffer_get_end_iter(buffer, &iter);
 
@@ -1072,15 +1094,6 @@ static void textview_make_clickable_parts(TextView *textview,
                for (last = head.next; last != NULL;
                     normal_text = last->ep, last = last->next) {
                        RemoteURI *uri;
-                       next = last->next;
-                       /* fix "colin@colino.net" <colin@colino.net> types of URIs
-                       /* FIXME would be better to fix it in the email parser */
-                       if (next && next->bp == last->ep) {
-                               next->bp = last->bp;
-                               if (*(next->bp -1 )=='"' && strchr(next->bp, '"'))
-                                       next->bp--;
-                               continue;
-                       }
                        uri = g_new(RemoteURI, 1);
                        if (last->bp - normal_text > 0)
                                gtk_text_buffer_insert_with_tags_by_name