2005-05-30 [paul] 1.0.4cvs14
authorPaul Mangan <paul@claws-mail.org>
Mon, 30 May 2005 06:58:29 +0000 (06:58 +0000)
committerPaul Mangan <paul@claws-mail.org>
Mon, 30 May 2005 06:58:29 +0000 (06:58 +0000)
backported from GTK2

* sylpheed.spec.in
fix bug 477
* doc/src/rfc2368.txt
added
* src/Makefile.am
add clip/signed icon
* src/alertpanel.c
* src/alertpanel.h
fix _with_disable parameters so that
the buttons labels are specifiable too
* src/compose.c
compose_entries_set(): don't interpret Bcc
header field (conform to RFC 2368)
* src/folder.c
Forbid locked messages to be moved or deleted
Fix bug #688 b) and c)
* src/folderview.c
Forbid locked messages to be moved or deleted
Fix bugs #156 and #108
* src/inc.c
Fix bug #688 b) and c)
* src/main.c
cleanup tmp directory when exit
* src/prefs_actions.c
Fix bug #506
* src/prefs_common.c
* src/prefs_common.h
Let the default reply format respect
netiquette by cutting the signature.
Fix bug #156
* src/prefs_template.c
Fix bug #506
* src/procmime.c
Fix bug #688 b) and c)
* src/procmsg.c
Forbid locked messages to be moved or deleted
* src/stock_pixmap.c
* src/stock_pixmap.h
Add clip/signed icon
* src/summaryview.c
Don't let always_show_msg override
open_unread_on_enter when opening a new
directory.
Forbid locked messages to be moved or deleted.
Fix bug #688 f) read/unread marker not
changed on first click.
* src/common/nntp.c
Fix bug #611 nntp mode reader
* src/common/socket.c
Check another special SSL_peek() error.
Should help wrt bug #728
* src/common/template.c
Fix a possible crash
* src/pixmaps/clip_gpg_signed.xpm
added
* src/plugins/pgpmime/pgpmime.c
Change name to "PGP MIME"
* src/plugins/pgpmime/sgpgme.c
reflect fixed _with_disable parameters
* tools/kdeservicemenu/install.sh
use kdesu to prompt for root password if doing
global install/uninstall

29 files changed:
ChangeLog.claws
PATCHSETS
configure.ac
doc/src/rfc2368.txt [new file with mode: 0644]
src/Makefile.am
src/alertpanel.c
src/alertpanel.h
src/common/nntp.c
src/common/socket.c
src/common/template.c
src/compose.c
src/folder.c
src/folderview.c
src/inc.c
src/main.c
src/pixmaps/clip_gpg_signed.xpm [new file with mode: 0644]
src/plugins/pgpmime/pgpmime.c
src/plugins/pgpmime/sgpgme.c
src/prefs_actions.c
src/prefs_common.c
src/prefs_common.h
src/prefs_template.c
src/procmime.c
src/procmsg.c
src/stock_pixmap.c
src/stock_pixmap.h
src/summaryview.c
sylpheed.spec.in
tools/kdeservicemenu/install.sh

index dda9d5422e5117e66da756f1247b3b3fd8781331..bc26fae68067b93c11817525219be6f01af0ee12 100644 (file)
@@ -1,3 +1,70 @@
+2005-05-30 [paul]      1.0.4cvs14
+
+       backported from GTK2
+
+       * sylpheed.spec.in
+               fix bug 477
+       * doc/src/rfc2368.txt
+               added
+       * src/Makefile.am
+               add clip/signed icon
+       * src/alertpanel.c
+       * src/alertpanel.h
+               fix _with_disable parameters so that
+               the buttons labels are specifiable too
+       * src/compose.c
+               compose_entries_set(): don't interpret Bcc
+               header field (conform to RFC 2368)
+       * src/folder.c
+               Forbid locked messages to be moved or deleted
+               Fix bug #688 b) and c)
+       * src/folderview.c
+               Forbid locked messages to be moved or deleted
+               Fix bugs #156 and #108
+       * src/inc.c
+               Fix bug #688 b) and c)
+       * src/main.c
+               cleanup tmp directory when exit
+       * src/prefs_actions.c
+               Fix bug #506
+       * src/prefs_common.c
+       * src/prefs_common.h
+               Let the default reply format respect
+               netiquette by cutting the signature.
+               Fix bug #156
+       * src/prefs_template.c
+               Fix bug #506
+       * src/procmime.c
+               Fix bug #688 b) and c)
+       * src/procmsg.c
+               Forbid locked messages to be moved or deleted
+       * src/stock_pixmap.c
+       * src/stock_pixmap.h
+               Add clip/signed icon
+       * src/summaryview.c
+               Don't let always_show_msg override
+               open_unread_on_enter when opening a new
+               directory.
+               Forbid locked messages to be moved or deleted.
+               Fix bug #688 f) read/unread marker not
+               changed on first click.
+       * src/common/nntp.c
+               Fix bug #611 nntp mode reader
+       * src/common/socket.c
+               Check another special SSL_peek() error.
+               Should help wrt bug #728
+       * src/common/template.c
+               Fix a possible crash
+       * src/pixmaps/clip_gpg_signed.xpm
+               added
+       * src/plugins/pgpmime/pgpmime.c
+               Change name to "PGP MIME"
+       * src/plugins/pgpmime/sgpgme.c
+               reflect fixed _with_disable parameters
+       * tools/kdeservicemenu/install.sh
+               use kdesu to prompt for root password if doing
+               global install/uninstall
+
 2005-05-24 [colin]     1.0.4cvs13
 
        * src/gtk/colorsel.c
index 30f16b4da90748140e46d38c80e46a7d3c140675..d7a49c8b81261fae340a67f5fc73740097220c89 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.132 -r 1.133 AUTHORS; cvs diff -u -r 1.35 -r 1.36 INSTALL; cvs diff -u -r 1.28 -r 1.29 Makefile.am; cvs diff -u -r 1.41 -r 1.42 README.claws; cvs diff -u -r 0 -r 1 RELEASE_NOTES.claws; cvs diff -u -r 1.1364 -r 1.1365 configure.ac; cvs diff -u -r 0 -r 1 po/ca.po; cvs diff -u -r 1.71 -r 1.72 po/de.po; cvs diff -u -r 1.75 -r 1.76 po/es.po; cvs diff -u -r 0 -r 1 po/fi.po; cvs diff -u -r 1.54 -r 1.55 po/fr.po; cvs diff -u -r 1.42 -r 1.43 po/it.po; cvs diff -u -r 1.17 -r 1.18 po/pl.po; cvs diff -u -r 1.24 -r 1.25 po/ru.po; cvs diff -u -r 1.16 -r 1.17 po/sk.po; cvs diff -u -r 1.27 -r 1.28 po/sr.po; cvs diff -u -r 1.12 -r 1.13 po/zh_CN.po; cvs diff -u -r 1.151 -r 1.152 src/main.c; cvs diff -u -r 1.4 -r 1.5 src/partial_download.c; cvs diff -u -r 1.64 -r 1.65 src/common/utils.c; ) > 1.0.4cvs11.patchset
 ( cvs diff -u -r 1.2 -r 1.3 src/gtk/colorsel.c; ) > 1.0.4cvs12.patchset
 ( cvs diff -u -r 1.3 -r 1.4 src/gtk/colorsel.c; ) > 1.0.4cvs13.patchset
+( cvs diff -u -r 1.7 -r 1.8 sylpheed.spec.in; cvs diff -u -r 0 -r 1 doc/src/rfc2368.txt; cvs diff -u -r 1.193 -r 1.194 src/Makefile.am; cvs diff -u -r 1.20 -r 1.21 src/alertpanel.c; cvs diff -u -r 1.6 -r 1.7 src/alertpanel.h; cvs diff -u -r 1.485 -r 1.486 src/compose.c; cvs diff -u -r 1.264 -r 1.265 src/folder.c; cvs diff -u -r 1.260 -r 1.261 src/folderview.c; cvs diff -u -r 1.181 -r 1.182 src/inc.c; cvs diff -u -r 1.152 -r 1.153 src/main.c; cvs diff -u -r 1.64 -r 1.65 src/prefs_actions.c; cvs diff -u -r 1.234 -r 1.235 src/prefs_common.c; cvs diff -u -r 1.119 -r 1.120 src/prefs_common.h; cvs diff -u -r 1.13 -r 1.14 src/prefs_template.c; cvs diff -u -r 1.107 -r 1.108 src/procmime.c; cvs diff -u -r 1.178 -r 1.179 src/procmsg.c; cvs diff -u -r 1.37 -r 1.38 src/stock_pixmap.c; cvs diff -u -r 1.26 -r 1.27 src/stock_pixmap.h; cvs diff -u -r 1.459 -r 1.460 src/summaryview.c; cvs diff -u -r 1.11 -r 1.12 src/common/nntp.c; cvs diff -u -r 1.18 -r 1.19 src/common/socket.c; cvs diff -u -r 1.4 -r 1.5 src/common/template.c; cvs diff -u -r 0 -r 1 src/pixmaps/clip_gpg_signed.xpm; cvs diff -u -r 1.19 -r 1.20 src/plugins/pgpmime/pgpmime.c; cvs diff -u -r 1.6 -r 1.7 src/plugins/pgpmime/sgpgme.c; cvs diff -u -r 1.2 -r 1.3 tools/kdeservicemenu/install.sh; ) > 1.0.4cvs14.patchset
index caaaab6c7bc9b3827d8fe43f74a1ab78728d22a1..c23ca56c41f8bd2bb4624210dfc9f65028c80a87 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=0
 MICRO_VERSION=4
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=13
+EXTRA_VERSION=14
 EXTRA_RELEASE=
 
 if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then
diff --git a/doc/src/rfc2368.txt b/doc/src/rfc2368.txt
new file mode 100644 (file)
index 0000000..f8b646a
--- /dev/null
@@ -0,0 +1,563 @@
+
+
+
+
+
+
+Network Working Group                                       P. Hoffman
+Request for Comments: 2368                    Internet Mail Consortium
+Updates: 1738, 1808                                        L. Masinter
+Category: Standards Track                            Xerox Corporation
+                                                           J. Zawinski
+                                               Netscape Communications
+                                                             July 1998
+
+
+                         The mailto URL scheme
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (1998).  All Rights Reserved.
+
+Abstract
+
+   This document defines the format of Uniform Resource Locators (URL)
+   for designating electronic mail addresses. It is one of a suite of
+   documents which replace RFC 1738, 'Uniform Resource Locators', and
+   RFC 1808, 'Relative Uniform Resource Locators'. The syntax of
+   'mailto' URLs from RFC 1738 is extended to allow creation of more RFC
+   822 messages by allowing the URL to express additional header and
+   body fields.
+
+1. Introduction
+
+   The mailto URL scheme is used to designate the Internet mailing
+   address of an individual or service. In its simplest form, a mailto
+   URL contains an Internet mail address.
+
+   For greater functionality, because interaction with some resources
+   may require message headers or message bodies to be specified as well
+   as the mail address, the mailto URL scheme is extended to allow
+   setting mail header fields and the message body.
+
+2. Syntax of a mailto URL
+
+   Following the syntax conventions of RFC 1738 [RFC1738], a "mailto"
+   URL has the form:
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 1]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+     mailtoURL  =  "mailto:" [ to ] [ headers ]
+     to         =  #mailbox
+     headers    =  "?" header *( "&" header )
+     header     =  hname "=" hvalue
+     hname      =  *urlc
+     hvalue     =  *urlc
+
+   "#mailbox" is as specified in RFC 822 [RFC822]. This means that it
+   consists of zero or more comma-separated mail addresses, possibly
+   including "phrase" and "comment" components. Note that all URL
+   reserved characters in "to" must be encoded: in particular,
+   parentheses, commas, and the percent sign ("%"), which commonly occur
+   in the "mailbox" syntax.
+
+   "hname" and "hvalue" are encodings of an RFC 822 header name and
+   value, respectively. As with "to", all URL reserved characters must
+   be encoded.
+
+   The special hname "body" indicates that the associated hvalue is the
+   body of the message. The "body" hname should contain the content for
+   the first text/plain body part of the message. The mailto URL is
+   primarily intended for generation of short text messages that are
+   actually the content of automatic processing (such as "subscribe"
+   messages for mailing lists), not general MIME bodies.
+
+   Within mailto URLs, the characters "?", "=", "&" are reserved.
+
+   Because the "&" (ampersand) character is reserved in HTML, any mailto
+   URL which contains an ampersand must be spelled differently in HTML
+   than in other contexts.  A mailto URL which appears in an HTML
+   document must use "&amp;" instead of "&".
+
+   Also note that it is legal to specify both "to" and an "hname" whose
+   value is "to". That is,
+
+     mailto:addr1%2C%20addr2
+
+     is equivalent to
+
+     mailto:?to=addr1%2C%20addr2
+
+     is equivalent to
+
+     mailto:addr1?to=addr2
+
+   8-bit characters in mailto URLs are forbidden. MIME encoded words (as
+   defined in [RFC2047]) are permitted in header values, but not for any
+   part of a "body" hname.
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 2]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+3. Semantics and operations
+
+   A mailto URL designates an "internet resource", which is the mailbox
+   specified in the address. When additional headers are supplied, the
+   resource designated is the same address, but with an additional
+   profile for accessing the resource. While there are Internet
+   resources that can only be accessed via electronic mail, the mailto
+   URL is not intended as a way of retrieving such objects
+   automatically.
+
+   In current practice, resolving URLs such as those in the "http"
+   scheme causes an immediate interaction between client software and a
+   host running an interactive server. The "mailto" URL has unusual
+   semantics because resolving such a URL does not cause an immediate
+   interaction. Instead, the client creates a message to the designated
+   address with the various header fields set as default. The user can
+   edit the message, send this message unedited, or choose not to send
+   the message. The operation of how any URL scheme is resolved is not
+   mandated by the URL specifications.
+
+4. Unsafe headers
+
+   The user agent interpreting a mailto URL SHOULD choose not to create
+   a message if any of the headers are considered dangerous; it may also
+   choose to create a message with only a subset of the headers given in
+   the URL.  Only the Subject, Keywords, and Body headers are believed
+   to be both safe and useful.
+
+   The creator of a mailto URL cannot expect the resolver of a URL to
+   understand more than the "subject" and "body" headers. Clients that
+   resolve mailto URLs into mail messages should be able to correctly
+   create RFC 822-compliant mail messages using the "subject" and "body"
+   headers.
+
+5. Encoding
+
+   RFC 1738 requires that many characters in URLs be encoded. This
+   affects the mailto scheme for some common characters that might
+   appear in addresses, headers or message contents. One such character
+   is space (" ", ASCII hex 20). Note the examples above that use "%20"
+   for space in the message body.  Also note that line breaks in the
+   body of a message MUST be encoded with "%0D%0A".
+
+   People creating mailto URLs must be careful to encode any reserved
+   characters that are used in the URLs so that properly-written URL
+   interpreters can read them. Also, client software that reads URLs
+   must be careful to decode strings before creating the mail message so
+
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 3]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+   that the mail messages appear in a form that the recipient will
+   understand. These strings should be decoded before showing the user
+   the message.
+
+   The mailto URL scheme is limited in that it does not provide for
+   substitution of variables. Thus, a message body that must include a
+   user's email address can not be encoded using the mailto URL. This
+   limitation also prevents mailto URLs that are signed with public keys
+   and other such variable information.
+
+6. Examples
+
+   URLs for an ordinary individual mailing address:
+
+     <mailto:chris@example.com>
+
+   A URL for a mail response system that requires the name of the file
+   in the subject:
+
+     <mailto:infobot@example.com?subject=current-issue>
+
+   A mail response system that requires a "send" request in the body:
+
+     <mailto:infobot@example.com?body=send%20current-issue>
+
+   A similar URL could have two lines with different "send" requests (in
+   this case, "send current-issue" and, on the next line, "send index".)
+
+     <mailto:infobot@example.com?body=send%20current-
+     issue%0D%0Asend%20index>
+
+   An interesting use of your mailto URL is when browsing archives of
+   messages. Each browsed message might contain a mailto URL like:
+
+     <mailto:foobar@example.com?In-Reply-
+     To=%3c3469A91.D10AF4C@example.com>
+
+   A request to subscribe to a mailing list:
+
+     <mailto:majordomo@example.com?body=subscribe%20bamboo-l>
+
+   A URL for a single user which includes a CC of another user:
+
+     <mailto:joe@example.com?cc=bob@example.com&body=hello>
+
+   Another way of expressing the same thing:
+
+     <mailto:?to=joe@example.com&cc=bob@example.com&body=hello>
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 4]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+   Note the use of the "&" reserved character, above. The following
+   example, by using "?" twice, is incorrect:
+
+     <mailto:joe@example.com?cc=bob@example.com?body=hello>   ; WRONG!
+
+   According to RFC 822, the characters "?", "&", and even "%" may occur
+   in addr-specs. The fact that they are reserved characters in this URL
+   scheme is not a problem: those characters may appear in mailto URLs,
+   they just may not appear in unencoded form. The standard URL encoding
+   mechanisms ("%" followed by a two-digit hex number) must be used in
+   certain cases.
+
+   To indicate the address "gorby%kremvax@example.com" one would do:
+
+     <mailto:gorby%25kremvax@example.com>
+
+   To indicate the address "unlikely?address@example.com", and include
+   another header, one would do:
+
+     <mailto:unlikely%3Faddress@example.com?blat=foop>
+
+   As described above, the "&" (ampersand) character is reserved in HTML
+   and must be replacded with "&amp;". Thus, a complex URL that has
+   internal ampersands might look like:
+
+     Click
+     <a href="mailto:?to=joe@xyz.com&amp;cc=bob@xyz.com&amp;body=hello">
+     mailto:?to=joe@xyz.com&amp;cc=bob@xyz.com&amp;body=hello</a> to
+     send a greeting message to <i>Joe and Bob</i>.
+
+7. Security Considerations
+
+   The mailto scheme can be used to send a message from one user to
+   another, and thus can introduce many security concerns. Mail messages
+   can be logged at the originating site, the recipient site, and
+   intermediary sites along the delivery path. If the messages are not
+   encoded, they can also be read at any of those sites.
+
+   A mailto URL gives a template for a message that can be sent by mail
+   client software. The contents of that template may be opaque or
+   difficult to read by the user at the time of specifying the URL.
+   Thus, a mail client should never send a message based on a mailto URL
+   without first showing the user the full message that will be sent
+   (including all headers that were specified by the mailto URL), fully
+   decoded, and asking the user for approval to send the message as
+   electronic mail. The mail client should also make it clear that the
+   user is about to send an electronic mail message, since the user may
+   not be aware that this is the result of a mailto URL.
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 5]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+   A mail client should never send anything without complete disclosure
+   to the user of what is will be sent; it should disclose not only the
+   message destination, but also any headers. Unrecognized headers, or
+   headers with values inconsistent with those the mail client would
+   normally send should be especially suspect. MIME headers (MIME-
+   Version, Content-*) are most likely inappropriate, as are those
+   relating to routing (From, Bcc, Apparently-To, etc.)
+
+   Note that some headers are inherently unsafe to include in a message
+   generated from a URL. For example, headers such as "From:", "Bcc:",
+   and so on, should never be interpreted from a URL. In general, the
+   fewer headers interpreted from the URL, the less likely it is that a
+   sending agent will create an unsafe message.
+
+   Examples of problems with sending unapproved mail include:
+
+     * mail that breaks laws upon delivery, such as making illegal
+       threats;
+
+     * mail that identifies the sender as someone interested in breaking
+       laws;
+
+     * mail that identifies the sender to an unwanted third party;
+
+     * mail that causes a financial charge to be incurred on the sender;
+
+     * mail that causes an action on the recipient machine that causes
+       damage that might be attributed to the sender.
+
+   Programs that interpret mailto URLs should ensure that the SMTP
+   "From" address is set and correct.
+
+8. IANA Considerations
+
+   This document changes the definition of the mailto: URI scheme; any
+   registry of URI schemes should refer to this document rather than its
+   predecessor, RFC 1738.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 6]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+9. References
+
+   [RFC822] Crocker, D., "Standard for the Format of ARPA Internet Text
+            Messages", STD 11, RFC 822, August 1982.
+
+   [RFC1738] Berners-Lee, T., Masinter, L., and M. McCahill, Editors,
+             "Uniform Resource Locators (URL)", RFC 1738, December 1994.
+
+   [RFC1808] Fielding, R., "Relative Uniform Resource Locators", RFC
+             1808, June 1995.
+
+   [RFC2047] Moore, K., "MIME Part Three: Message Header Extensions for
+             Non-ASCII Text", RFC 2047, November 1996.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 7]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+A. Change from RFC 1738
+
+   RFC 1738 defined only a simple 'mailto' with no headers, just an
+   addr-spec (not a full mailbox.)  However, required usage and
+   implementation has led to the development of an extended syntax that
+   included more header fields.
+
+B. Acknowledgments
+
+   This document was derived from RFC 1738 and RFC 1808 [RFC1808]; the
+   acknowledgments from those specifications still applies.
+
+   The following people contributed to this memo or had and discussed
+   similar ideas for mailto.
+
+   Harald Alvestrand
+   Bryan Costales
+   Steve Dorner
+   Al Gilman
+   Mark Joseph
+   Laurence Lundblade
+   Keith Moore
+   Jacob Palme
+   Michael Patton
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 8]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+C. Author Contact Information
+
+   Paul E. Hoffman
+   Internet Mail Consortium
+   127 Segre Place
+   Santa Cruz, CA  95060 USA
+
+   EMail: phoffman@imc.org
+
+
+   Larry Masinter
+   Xerox Corporation
+   3333 Coyote Hill Road
+   Palo Alto, CA 94304 USA
+
+   EMail: masinter@parc.xerox.com
+
+
+   Jamie Zawinski
+   Netscape Communications Corp.
+   501 East Middlefield Road
+   Mountain View, CA 94043 USA
+
+   EMail: jwz@netscape.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman, et. al.            Standards Track                     [Page 9]
+
+RFC 2368                 The mailto URL scheme                 July 1998
+
+
+D.  Full Copyright Statement
+
+   Copyright (C) The Internet Society (1998).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hoffman, et. al.            Standards Track                    [Page 10]
+
index 2367b26a430e4b9f1acfe204af712977ef370149..04e62d3a33c3f192b73ad521007cc56655037744 100644 (file)
@@ -265,6 +265,7 @@ EXTRA_DIST = \
        pixmaps/check_spelling.xpm \
        pixmaps/clipkey.xpm \
        pixmaps/clip.xpm \
+       pixmaps/clip_gpg_signed.xpm \
        pixmaps/close.xpm \
        pixmaps/complete.xpm \
        pixmaps/continue.xpm \
index a21b3c8628f92c88061c7c518b315b3b608dacf8..69b6e9087ce077426374b6d71c942ba423e5b9f9 100644 (file)
@@ -129,14 +129,18 @@ static void alertpanel_message(const gchar *title, const gchar *message, gint ty
 
 AlertValue alertpanel_message_with_disable(const gchar *title,
                                           const gchar *message,
-                                          gint         alert_type)
+                                          const gchar  *button1_label,
+                                          const gchar  *button2_label,
+                                          const gchar  *button3_label,
+                                          gint alert_type)
 {
        if (alertpanel_is_open)
                return 0;
        else
                alertpanel_is_open = TRUE;
 
-       alertpanel_create(title, message, NULL, NULL, NULL, TRUE, NULL, alert_type);
+       alertpanel_create(title, message, button1_label, button2_label, 
+                         button3_label, TRUE, NULL, alert_type);
        alertpanel_show();
 
        return value;
index 25a26671bf6f438c39cb18153edd6d8361c4ce3c..6155da00ff8c6b1f7ce9a369ee09f08928907efe 100644 (file)
@@ -65,6 +65,9 @@ AlertValue alertpanel_with_type       (const gchar *title,
 
 AlertValue alertpanel_message_with_disable     (const gchar    *title,
                                                 const gchar    *message,
+                                                const gchar    *button1_label,
+                                                const gchar    *button2_label,
+                                                const gchar    *button3_label,
                                                 gint            alert_type);
 
 void alertpanel_notice (const gchar    *format,
index 0bb0691a2ad058233b1f86593900b2fbb86d586d..9393d35f91eb1d01c3bfb74401be87004d6b7331 100644 (file)
@@ -95,7 +95,9 @@ Session *nntp_session_new(const gchar *server, gushort port, gchar *buf,
        SESSION(session)->destroy               = nntp_session_destroy;
 
        session->group = NULL;
-
+       
+       nntp_mode(session, FALSE);
+       
        if (userid && passwd) {
                gint ok;
 
index 5a0ad3edbfac3d2cb9994f4b478c515e4a5f1d7a..9cef74fc2341ecba0de9841bbd6feac840ccb65a 100644 (file)
@@ -1365,6 +1365,9 @@ gint ssl_peek(SSL *ssl, gchar *buf, gint len)
                return -1;
        case SSL_ERROR_ZERO_RETURN:
                return 0;
+       case SSL_ERROR_SYSCALL:
+               g_warning("SSL_peek() returned syscall error. errno=%d\n", errno);
+               return -1;
        default:
                g_warning("SSL_peek() returned error %d, ret = %d\n", err, ret);
                if (ret == 0)
index b43c7f4bdd6ab51eb6a1baca23d9f35b155056de..014acb444bb83d738c5e81a0a1d7b1c552f69186 100644 (file)
@@ -203,7 +203,11 @@ void template_write_config(GSList *tmpl_list)
                if (tmpl->bcc && *tmpl->bcc != '\0')
                        fprintf(fp, "Bcc: %s\n", tmpl->bcc);                                            
                fputs("\n", fp);
-               fwrite(tmpl->value, sizeof(gchar) * strlen(tmpl->value), 1, fp);
+               if (tmpl->value && *tmpl->value != '\0')
+                       fwrite(tmpl->value, sizeof(gchar) * strlen(tmpl->value), 1, fp);
+               else
+                       fwrite("", sizeof(gchar), 1, fp);
+
                fclose(fp);
                g_free(filename);
        }
index 38dfdce106ff284bf816e57b273000ff25ca0c53..44280c97da6d16d5899672990572ee9d8d93056e 100644 (file)
@@ -1556,18 +1556,15 @@ static void compose_entries_set(Compose *compose, const gchar *mailto)
 {
        gchar *to = NULL;
        gchar *cc = NULL;
-       gchar *bcc = NULL;
        gchar *subject = NULL;
        gchar *body = NULL;
 
-       scan_mailto_url(mailto, &to, &cc, &bcc, &subject, &body);
+       scan_mailto_url(mailto, &to, &cc, NULL, &subject, &body);
 
        if (to)
                compose_entry_append(compose, to, COMPOSE_TO);
        if (cc)
                compose_entry_append(compose, cc, COMPOSE_CC);
-       if (bcc)
-               compose_entry_append(compose, bcc, COMPOSE_BCC);
        if (subject)
                gtk_entry_set_text(GTK_ENTRY(compose->subject_entry), subject);
        if (body) {
@@ -1579,7 +1576,6 @@ static void compose_entries_set(Compose *compose, const gchar *mailto)
 
        g_free(to);
        g_free(cc);
-       g_free(bcc);
        g_free(subject);
        g_free(body);
 }
index f3a7eaf27fadb879363ee0bce1b2b84061ef6c93..10f923583a263fa3c34a3170b80b785486cc4277 100644 (file)
@@ -2087,7 +2087,9 @@ static void msginfo_set_mime_flags(GNode *node, gpointer data)
        } else if (mimeinfo->disposition == DISPOSITIONTYPE_UNKNOWN && 
                 mimeinfo->type != MIMETYPE_TEXT &&
                 mimeinfo->type != MIMETYPE_MULTIPART) {
-               procmsg_msginfo_set_flags(msginfo, 0, MSG_HAS_ATTACHMENT);
+               if (!mimeinfo->subtype 
+               ||  strcmp(mimeinfo->subtype, "pgp-signature"))
+                       procmsg_msginfo_set_flags(msginfo, 0, MSG_HAS_ATTACHMENT);
        }
 
        /* don't descend below top level message for signed and encrypted info */
@@ -2786,7 +2788,10 @@ gint folder_item_remove_msgs(FolderItem *item, GSList *msglist)
        folder_item_update_freeze();
        while (msglist != NULL) {
                MsgInfo *msginfo = (MsgInfo *)msglist->data;
-
+               if (MSG_IS_LOCKED(msginfo->flags)) {
+                       msglist = msglist->next;
+                       continue;
+               }
                ret = folder_item_remove_msg(item, msginfo->msgnum);
                if (ret != 0) break;
                msgcache_remove_msg(item->cache, msginfo->msgnum);
index e396f9d6decb805de2a2b8f0c02fdf06a030f293..ec8f0696e3077ef8dcbcef4f846b9888f0f00c31 100644 (file)
@@ -1444,6 +1444,18 @@ static void folderview_button_pressed(GtkWidget *ctree, GdkEventButton *event,
 
        if (event->button == 1) {
                folderview->open_folder = TRUE;
+
+               if (event->type == GDK_2BUTTON_PRESS) {
+                       if (clist->selection) {
+                               GtkCTreeNode *node;
+
+                               node = GTK_CTREE_NODE(clist->selection->data);
+                               if (node)
+                                       gtk_ctree_toggle_expansion(
+                                               GTK_CTREE(ctree),
+                                               node);
+                       }
+               }
                return;
        }
 
@@ -1791,6 +1803,8 @@ static void folderview_empty_trash_cb(FolderView *folderview, guint action,
        
        for (cur = mlist ; cur != NULL ; cur = cur->next) {
                MsgInfo * msginfo = (MsgInfo *) cur->data;
+               if (MSG_IS_LOCKED(msginfo->flags))
+                       continue;
                /* is it partially received? (partial_recv isn't cached) */
                if (msginfo->total_size != 0 && 
                    msginfo->size != (off_t)msginfo->total_size)
@@ -1860,6 +1874,22 @@ void folderview_move_folder(FolderView *folderview, FolderItem *from_folder,
 
        src_node = gtk_ctree_find_by_row_data(GTK_CTREE(folderview->ctree), NULL, from_folder);
        from_parent = folder_item_parent(from_folder);
+       
+       if (prefs_common.warn_dnd) {
+               buf = g_strdup_printf(_("Do you really want to move folder `%s' to a "
+                                       "sub-folder of `%s' ?"), from_folder->name,
+                                       to_folder->name);
+               status = alertpanel_message_with_disable(_("Move folder"), buf, 
+                               _("Yes"), _("No"), NULL, ALERT_QUESTION);
+               g_free(buf);
+
+               if (status != G_ALERTDEFAULT
+                && status != (G_ALERTDEFAULT | G_ALERTDISABLE))
+                       return;
+               if (status & G_ALERTDISABLE)
+                       prefs_common.warn_dnd = FALSE;
+       }
+
        buf = g_strdup_printf(_("Moving %s to %s..."), from_folder->name, to_folder->name);
        STATUSBAR_PUSH(folderview->mainwin, buf);
        g_free(buf);
index 7aa7286986ae204df7cb5bc77a041cf1767247fe..b2638878a26686df728c9d4a41136e86104f7363 100644 (file)
--- a/src/inc.c
+++ b/src/inc.c
@@ -641,8 +641,12 @@ static gint inc_start(IncProgressDialog *inc_dialog)
                /* process messages */
                folder_item_update_freeze();
                for(msglist_element = msglist; msglist_element != NULL; msglist_element = msglist_element->next) {
+                       gchar *filename;
                        msginfo = (MsgInfo *) msglist_element->data;
-                       if (!pop3_session->ac_prefs->filter_on_recv || !procmsg_msginfo_filter(msginfo))
+                       filename = folder_item_fetch_msg(processing, msginfo->msgnum);
+                       g_free(filename);
+                       if (!pop3_session->ac_prefs->filter_on_recv || 
+                           !procmsg_msginfo_filter(msginfo))
                                folder_item_move_msg(inbox, msginfo);
                        procmsg_msginfo_free(msginfo);
                }
index ad14f6819d5d6e21b8b682338cc6d64e292810ce..1dd51720449ebb246edad1b9fe5f89d6b02f4fc5 100644 (file)
@@ -477,6 +477,7 @@ static void exit_sylpheed(MainWindow *mainwin)
        g_free(filename);
 
        /* delete temporary files */
+       remove_all_files(get_tmp_dir());
        remove_all_files(get_mime_tmp_dir());
 
        close_log_file();
diff --git a/src/pixmaps/clip_gpg_signed.xpm b/src/pixmaps/clip_gpg_signed.xpm
new file mode 100644 (file)
index 0000000..2279375
--- /dev/null
@@ -0,0 +1,36 @@
+/* XPM */
+static char * clip_gpg_signed_xpm[] = {
+"11 12 21 1",
+"      c None",
+".     c #000000",
+"+     c #D39C0A",
+"@     c #E4AB0B",
+"#     c #DA7D25",
+"$     c #E4B600",
+"%     c #E96B00",
+"&     c #DA2D01",
+"*     c #E9AD00",
+"=     c #E94500",
+"-     c #B11E04",
+";     c #E99400",
+">     c #E02F00",
+",     c #E97800",
+"'     c #CA2B04",
+")     c #E55902",
+"!     c #E9CE07",
+"~     c #D64707",
+"{     c #E9CF16",
+"]     c #C86B37",
+"^     c #E6CF8D",
+"           ",
+"    ...    ",
+"   .   .+@#",
+"   .   .$%&",
+"  ..  ..*=-",
+"  ..  ..;> ",
+"  ..  ..,' ",
+"  ..  ..)  ",
+"  . ..!.~  ",
+"  .   {.]  ",
+"  .   ^.   ",
+"   ....    "};
index 6a8d61c6689894f59ac08a4f92bbad719df79487..575fcc84df92a2a9fcc7fef465eef5fdb407ccb9 100644 (file)
@@ -590,7 +590,7 @@ gboolean pgpmime_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data)
 
 static PrivacySystem pgpmime_system = {
        "pgpmime",                      /* id */
-       "PGP/MIME",                     /* name */
+       "PGP MIME",                     /* name */
 
        pgpmime_free_privacydata,       /* free_privacydata */
 
index 36abf8c78fd94277a958e53bf5a2ba533a9fdd94..c94cc50df6738b027f3ac405fe7e6fdf615bb53c 100644 (file)
@@ -352,7 +352,8 @@ void sgpgme_init()
                                (_("Warning"),
                                 _("GnuPG is not installed properly, or needs "
                                   "to be upgraded.\n"
-                                  "OpenPGP support disabled."), ALERT_WARNING);
+                                  "OpenPGP support disabled."), 
+                               NULL, NULL, NULL, ALERT_WARNING);
                        if (val & G_ALERTDISABLE)
                                prefs_gpg_get_config()->gpg_warning = FALSE;
                }
index e85273a6ff5fa0eeb665aa3823d12cd74c5cfe0f..833e6ff1de466440e9f129694f76b5a0a1334a5d 100644 (file)
@@ -43,6 +43,7 @@
 #include "prefs_actions.h"
 #include "action.h"
 #include "description_window.h"
+#include "gtkutils.h"
 
 static struct Actions
 {
@@ -56,6 +57,8 @@ static struct Actions
        GtkWidget *actions_clist;
 } actions;
 
+static int modified = FALSE;
+
 /* widget creating functions */
 static void prefs_actions_create       (MainWindow *mainwin);
 static void prefs_actions_set_dialog   (void);
@@ -491,6 +494,7 @@ static gint prefs_actions_clist_set_row(gint row)
 static void prefs_actions_register_cb(GtkWidget *w, gpointer data)
 {
        prefs_actions_clist_set_row(-1);
+       modified = FALSE;
 }
 
 static void prefs_actions_substitute_cb(GtkWidget *w, gpointer data)
@@ -508,6 +512,7 @@ static void prefs_actions_substitute_cb(GtkWidget *w, gpointer data)
        if (!action) return;
 
        prefs_actions_clist_set_row(row);
+       modified = FALSE;
 }
 
 static void prefs_actions_delete_cb(GtkWidget *w, gpointer data)
@@ -608,10 +613,24 @@ static void prefs_actions_key_pressed(GtkWidget *widget, GdkEventKey *event,
 {
        if (event && event->keyval == GDK_Escape)
                prefs_actions_cancel(widget, data);
+       else {
+               GtkWidget *focused = gtkut_get_focused_child(
+                                       GTK_CONTAINER(widget));
+               if (focused && GTK_IS_EDITABLE(focused)) {
+                       modified = TRUE;
+               }
+       }
+       return;
 }
 
 static void prefs_actions_cancel(GtkWidget *w, gpointer data)
 {
+       if (modified && alertpanel(_("Entry not saved"),
+                                _("The entry was not saved. Close anyway?"),
+                                _("Yes"), _("No"), NULL) != G_ALERTDEFAULT) {
+               return;
+       }
+       modified = FALSE;
        prefs_actions_read_config();
        gtk_widget_hide(actions.window);
        inc_unlock();
@@ -625,6 +644,12 @@ static void prefs_actions_ok(GtkWidget *widget, gpointer data)
        MessageView *msgview;
        Compose *compose;
 
+       if (modified && alertpanel(_("Entry not saved"),
+                                _("The entry was not saved. Close anyway?"),
+                                _("Yes"), _("No"), NULL) != G_ALERTDEFAULT) {
+               return;
+       }
+       modified = FALSE;
        prefs_actions_write_config();
 
        /* Update mainwindow actions menu */
index 93774cdd13bd2b443e2af7c768b4926fc47679c6..6732cbb79de05afdb00c053c11ee67ae343f8255 100644 (file)
@@ -346,7 +346,7 @@ static PrefParam param[] = {
        /* Quote */
        {"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
         &quote.entry_quotemark, prefs_set_data_from_entry, prefs_set_entry},
-       {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%Q",
+       {"reply_quote_format", "On %d\\n%f wrote:\\n\\n%q",
         &prefs_common.quotefmt, P_STRING, &quote.text_quotefmt,
         prefs_set_data_from_text, prefs_set_text},
 
@@ -723,6 +723,8 @@ static PrefParam param[] = {
         NULL, NULL, NULL},
        {"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
         NULL, NULL, NULL},
+       {"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
+        NULL, NULL, NULL},
 
        {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
 };
index 7fc4e55ddd8865dd20ce2c8d5cd6a82ce6f7ec9b..0bd82cd268738f279000ecb04dd602b092d3fcf6 100644 (file)
@@ -288,6 +288,7 @@ struct _PrefsCommon
        
        gint filteringwin_width;
        gint filteringwin_height;
+       gint warn_dnd;
 };
 
 extern PrefsCommon prefs_common;
index 64a7be28dcebda37cb6edc78a22606709cba7be9..bfb635713a0b8135f30f2df90eccc0fb9997e9bb 100644 (file)
@@ -51,6 +51,8 @@ static struct Templates {
        GtkWidget *text_value;
 } templates;
 
+static int modified = FALSE;
+
 /* widget creating functions */
 static void prefs_template_window_create       (void);
 static void prefs_template_window_setup                (void);
@@ -350,12 +352,26 @@ static void prefs_template_key_pressed_cb(GtkWidget *widget,
 {
        if (event && event->keyval == GDK_Escape)
                prefs_template_cancel_cb();
+       else {
+               GtkWidget *focused = gtkut_get_focused_child(
+                                       GTK_CONTAINER(widget));
+               if (focused && GTK_IS_EDITABLE(focused)) {
+                       modified = TRUE;
+               }
+       }
+       return;
 }
 
 static void prefs_template_ok_cb(void)
 {
        GSList *tmpl_list;
 
+       if (modified && alertpanel(_("Entry not saved"),
+                                _("The entry was not saved. Close anyway?"),
+                                _("Yes"), _("No"), NULL) != G_ALERTDEFAULT) {
+               return;
+       }
+       modified = FALSE;
        tmpl_list = prefs_template_get_list();
        template_set_config(tmpl_list);
        compose_reflect_prefs_all();
@@ -366,6 +382,12 @@ static void prefs_template_ok_cb(void)
 
 static void prefs_template_cancel_cb(void)
 {
+       if (modified && alertpanel(_("Entry not saved"),
+                                _("The entry was not saved. Close anyway?"),
+                                _("Yes"), _("No"), NULL) != G_ALERTDEFAULT) {
+               return;
+       }
+       modified = FALSE;
        prefs_template_clear();
        gtk_widget_hide(templates.window);
        inc_unlock();
index 437c6bfc70addbc02f3f9f5f0c11a9863e2d35bc..96765c4ec20aedf8aee6e1b1df7a33e0265ff1bf 100644 (file)
@@ -333,8 +333,12 @@ gboolean procmime_decode_content(MimeInfo *mimeinfo)
                while ((ftell(infp) < readend) && (fgets(buf, sizeof(buf), infp) != NULL)) {
                        len = base64_decoder_decode(decoder, buf, outbuf);
                        if (len < 0) {
-                               g_warning("Bad BASE64 content\n");
-                               break;
+                               g_warning("Bad BASE64 content.\n");
+                               fwrite(_("[Error decoding BASE64]\n"),
+                                       sizeof(gchar),
+                                       strlen(_("[Error decoding BASE64]\n")),
+                                       tmpfp);
+                               continue;
                        }
                        fwrite(outbuf, sizeof(gchar), len, tmpfp);
                }
index cafe528db05c561b68408065c81ca73da47402b7..a1ec5ee32fe5ff3a7b110940240e03ab877e1b32 100644 (file)
@@ -609,7 +609,12 @@ void procmsg_empty_trash(FolderItem *trash)
                GSList *cur;
                for (cur = mlist ; cur != NULL ; cur = cur->next) {
                        MsgInfo * msginfo = (MsgInfo *) cur->data;
-                       partial_mark_for_delete(msginfo);
+                       if (MSG_IS_LOCKED(msginfo->flags))
+                               continue;
+                       if (msginfo->total_size != 0 && 
+                           msginfo->size != (off_t)msginfo->total_size)
+                               partial_mark_for_delete(msginfo);
+
                        procmsg_msginfo_free(msginfo);
                }
 
index 8f2bb6fc225e9d8a5f8adb725749c7ac88c47426..9e0f4b65dac52da9f2cbef091f8b274f4af14bd1 100644 (file)
@@ -92,6 +92,7 @@
 #include "pixmaps/notice_error.xpm"
 #include "pixmaps/notice_note.xpm"
 #include "pixmaps/quicksearch.xpm"
+#include "pixmaps/clip_gpg_signed.xpm"
 #include "pixmaps/gpg_signed.xpm"
 #include "pixmaps/drafts_close.xpm"
 #include "pixmaps/drafts_open.xpm"
@@ -159,6 +160,7 @@ static StockPixmapData pixmaps[] =
        {check_spelling_xpm                     , NULL, NULL, "check_spelling", NULL},
        {clip_xpm                               , NULL, NULL, "clip", NULL},
        {clipkey_xpm                            , NULL, NULL, "clipkey", NULL},
+       {clip_gpg_signed_xpm                    , NULL, NULL, "clip_gpg_signed", NULL},
        {close_xpm                              , NULL, NULL, "close", NULL},
        {complete_xpm                           , NULL, NULL, "complete", NULL},
        {continue_xpm                           , NULL, NULL, "continue", NULL},
index 137b4f5fe9fa5524da74560a900c7802638e83e4..352f4bcdc1a561e77ca5d9f764456ac199d22380 100644 (file)
@@ -35,6 +35,7 @@ typedef enum
        STOCK_PIXMAP_CHECK_SPELLING,
        STOCK_PIXMAP_CLIP,
        STOCK_PIXMAP_CLIP_KEY,
+       STOCK_PIXMAP_CLIP_GPG_SIGNED,
        STOCK_PIXMAP_CLOSE,
        STOCK_PIXMAP_COMPLETE,
        STOCK_PIXMAP_CONTINUE,
index 45c771c3cb9a58cf5f3164cb01f60ff4c98ddcb1..a5cb4ec2d1363aaf92038df8347e782a8db77112 100644 (file)
@@ -124,6 +124,8 @@ static GdkPixmap *clipkeyxpm;
 static GdkBitmap *clipkeyxpmmask;
 static GdkPixmap *gpgsignedxpm;
 static GdkBitmap *gpgsignedxpmmask;
+static GdkPixmap *clipgpgsignedxpm;
+static GdkBitmap *clipgpgsignedxpmmask;
 
 static void summary_free_msginfo_func  (GtkCTree               *ctree,
                                         GtkCTreeNode           *node,
@@ -637,6 +639,8 @@ void summary_init(SummaryView *summaryview)
                         &keyxpm, &keyxpmmask);
        stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_GPG_SIGNED,
                         &gpgsignedxpm, &gpgsignedxpmmask);
+       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP_GPG_SIGNED,
+                        &clipgpgsignedxpm, &clipgpgsignedxpmmask);
 
        if (!bold_style) {
                bold_style = gtk_style_copy
@@ -1015,8 +1019,7 @@ gboolean summary_show(SummaryView *summaryview, FolderItem *item)
                                 item->sort_type == SORT_DESCENDING
                                 ? 0 : GTK_CLIST(ctree)->rows - 1);
                }
-               if (prefs_common.open_unread_on_enter ||
-                   prefs_common.always_show_msg) {
+               if (prefs_common.open_unread_on_enter) {
                        summary_unlock(summaryview);
                        summary_select_node(summaryview, node, 
                                            messageview_is_visible(summaryview->messageview), 
@@ -2423,7 +2426,7 @@ static void summary_display_msg_full(SummaryView *summaryview,
                gtkut_ctree_node_move_if_on_the_edge(ctree, row);
        }
 
-       if (val == 0) {
+       if (val == 0 && MSG_IS_UNREAD(msginfo->flags)) {
                if (prefs_common.mark_as_read_delay) {
                        MarkAsReadData *data = g_new0(MarkAsReadData, 1);
                        data->summaryview = summaryview;
@@ -2684,7 +2687,10 @@ static void summary_set_row_marks(SummaryView *summaryview, GtkCTreeNode *row)
                gtk_ctree_node_set_text(ctree, row, col_pos[S_COL_LOCKED], NULL);
        }
 
-       if (MSG_IS_SIGNED(flags)) {
+       if (MSG_IS_WITH_ATTACHMENT(flags) && MSG_IS_SIGNED(flags)) {
+               gtk_ctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
+                                         clipgpgsignedxpm, clipgpgsignedxpmmask);
+       } else if (MSG_IS_SIGNED(flags)) {
                gtk_ctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
                                          gpgsignedxpm, gpgsignedxpmmask);
        } else if (MSG_IS_WITH_ATTACHMENT(flags) && MSG_IS_ENCRYPTED(flags)) {
@@ -3126,6 +3132,9 @@ static void summary_move_row_to(SummaryView *summaryview, GtkCTreeNode *row,
        g_return_if_fail(to_folder != NULL);
 
        msginfo = gtk_ctree_node_get_row_data(ctree, row);
+       if (MSG_IS_LOCKED(msginfo->flags))
+               return;
+
        procmsg_msginfo_set_to_folder(msginfo, to_folder);
        if (MSG_IS_DELETED(msginfo->flags))
                summaryview->deleted--;
@@ -4496,8 +4505,13 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row,
                             gint column, SummaryView *summaryview)
 {
        MsgInfo *msginfo;
+       gboolean marked_unread = FALSE;
 
-       summary_status_show(summaryview);
+       if (column == -1 && GTK_CLIST(ctree)->selection
+        && GTK_CLIST(ctree)->selection->next) {
+               /* multiple selection */
+               summary_status_show(summaryview);
+       }
 
        if (GTK_CLIST(ctree)->selection &&
            GTK_CLIST(ctree)->selection->next) {
@@ -4530,8 +4544,7 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row,
                        summary_status_show(summaryview);
                } else if (!MSG_IS_REPLIED(msginfo->flags) &&
                         !MSG_IS_FORWARDED(msginfo->flags)) {
-                       summary_mark_row_as_unread(summaryview, row);
-                       summary_status_show(summaryview);
+                       marked_unread = TRUE;
                } else if (MSG_IS_REPLIED(msginfo->flags)) {
                        summary_find_answers(summaryview, msginfo);
                        return;
@@ -4555,9 +4568,18 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row,
                summaryview->display_msg = FALSE;
                if (summaryview->displayed != row) {
                        summary_display_msg(summaryview, row);
+                       if (marked_unread) {
+                               summary_mark_row_as_unread(summaryview, row);
+                               summary_status_show(summaryview);
+                       } 
                        return;
                }
        }
+       
+       if (marked_unread) {
+               summary_mark_row_as_unread(summaryview, row);
+               summary_status_show(summaryview);
+       } 
 
        summary_set_menu_sensitive(summaryview);
        toolbar_main_set_sensitive(summaryview->mainwin);
@@ -5137,6 +5159,7 @@ void summary_reflect_prefs_pixmap_theme(SummaryView *summaryview)
        stock_pixmap_gdk(ctree, STOCK_PIXMAP_CLIP_KEY, &clipkeyxpm, &clipkeyxpmmask);
        stock_pixmap_gdk(ctree, STOCK_PIXMAP_KEY, &keyxpm, &keyxpmmask);
        stock_pixmap_gdk(ctree, STOCK_PIXMAP_GPG_SIGNED, &gpgsignedxpm, &gpgsignedxpmmask);
+       stock_pixmap_gdk(ctree, STOCK_PIXMAP_CLIP_GPG_SIGNED, &clipgpgsignedxpm, &clipgpgsignedxpmmask);
 
        pixmap = stock_pixmap_widget(summaryview->hbox, STOCK_PIXMAP_DIR_OPEN);
        gtk_box_pack_start(GTK_BOX(summaryview->hbox), pixmap, FALSE, FALSE, 4);
index 27911a5ce14620ecae425cb42c068a9a075bcd67..117ba2c2e81bc6604094e2010879d8be05051c02 100644 (file)
@@ -65,11 +65,6 @@ make DESTDIR=$RPM_BUILD_ROOT install
 cp -r tools $RPM_BUILD_ROOT%{prefix}/share/sylpheed
 rm $RPM_BUILD_ROOT%{prefix}/share/sylpheed/tools/Makefile*
 mv $RPM_BUILD_ROOT%{prefix}/share/sylpheed/tools/README ./README.tools
-# fixing permissions
-pushd $RPM_BUILD_ROOT%{prefix}/share/sylpheed
-find . -name "*.xpm" -o -name ".directory" | xargs chmod 644
-popd
-
 
 %clean
 rm -rf $RPM_BUILD_ROOT
index ecbadd7650dbee86ec7c52d02c59aef1122320ce..8aba3459386f127a98a2961894c44ce262ec679e 100644 (file)
@@ -66,9 +66,7 @@ case $1 in
     PREFIX=$(kde-config --prefix)
     echo "Installing in $PREFIX ..."
     if [ "$(id -u)" != "0" ]; then
-      echo "You are not root, as would be expected."
-      echo "However, we will still attempt a system-wide install."
-      echo "But, you probably don't have permission."
+       exec kdesu "$0 --global"
     fi
     install_all
     ;;
@@ -89,7 +87,7 @@ case $1 in
     PREFIX=$(kde-config --prefix)
     echo "Uninstalling in $PREFIX ..."
     if [ "$(id -u)" != "0" ]; then
-      echo "You are not root, if you have any global installs, you will probably not have permission to remove them."
+       exec kdesu "$0 --uninstall-global"
     fi
     uninstall_all
     ;;