2004-12-14 [colin] 0.9.13cvs17.1
authorColin Leroy <colin@colino.net>
Tue, 14 Dec 2004 14:47:48 +0000 (14:47 +0000)
committerColin Leroy <colin@colino.net>
Tue, 14 Dec 2004 14:47:48 +0000 (14:47 +0000)
* ChangeLog
* ChangeLog.jp
* ChangeLog.claws
* src/action.c
* src/common/utils.c
* src/gtk/prefswindow.c
* src/gtk/gtkutils.c
* src/gtk/gtkutils.h
* src/plugins/spamassassin/libspamc.c
Sync with HEAD

12 files changed:
ChangeLog
ChangeLog-gtk2.claws
ChangeLog.claws
ChangeLog.jp
PATCHSETS
configure.ac
src/action.c
src/common/utils.c
src/gtk/gtkutils.c
src/gtk/gtkutils.h
src/gtk/prefswindow.c
src/plugins/spamassassin/libspamc.c

index bd95577..b195e6f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2004-12-13
+
+       * src/compose.c: compose_wrap_line_all_full(): only insert space
+         when joining lines if the first character of the next line is not
+         space, or it's a boundary between multi- and single-byte characters.
+
+2004-12-13
+
+       * src/action.c: parse_append_filename(): escape special characters
+         (thanks to IWAMOTO Kouichi).
+       * src/utils.c: subst_for_filename(): also substitute single quote.
+
+2004-12-10
+
+       * src/compose.c: compose_wrap_line_all_full(): fixed joining line
+         problem when the first character of the next line is not
+         alphanumeric.
+
+2004-12-09
+
+       * src/main.c: send_queue()
+         src/mainwindow.c: send_queue_cb()
+         src/compose.c: compose_send(), compose_send_later_cb(): ask user
+         to switch to online if in offline mode when sending.
+
+2004-12-08
+
+       * src/imap.c: applied bitlength_clean_up.imap.c.patch that fixes the
+         integer length problem on 64-bit platforms (thanks to Alfons).
+
 2004-12-03
 
        * version 1.0.0beta4
index fdd5aef..820fc32 100644 (file)
@@ -1,3 +1,16 @@
+2004-12-14 [colin]     0.9.13cvs17.1
+
+       * ChangeLog
+       * ChangeLog.jp
+       * ChangeLog.claws
+       * src/action.c
+       * src/common/utils.c
+       * src/gtk/prefswindow.c
+       * src/gtk/gtkutils.c
+       * src/gtk/gtkutils.h
+       * src/plugins/spamassassin/libspamc.c
+               Sync with HEAD
+
 2004-12-13 [colin]     0.9.13cvs14.1
 
        * src/quote_fmt_parse.y
index 98ac64f..5670679 100644 (file)
@@ -1,3 +1,112 @@
+2004-12-14 [colin]     0.9.13cvs17
+
+       * src/gtk/gtkutils.c
+       * src/gtk/gtkutils.h
+       * src/gtk/prefswindow.c
+               Catch Enter in prefswindow while in text
+               widget. Patch by Alfons.
+
+2004-12-14 [paul]      0.9.13cvs16
+
+       * ChangeLog
+       * ChangeLog.jp
+       * src/action.c
+       * src/compose.c
+       * src/common/utils.c
+               sync with main, see ChangeLog entries 2004-12-10
+               and 2004-12-13
+
+       * po/ru.po
+               updated by Pavlo Bohmat
+
+2004-12-13 [thorsten]  0.9.13cvs15
+
+       * src/plugins/spamassassin/libspamc.c
+               fix memleak
+
+2004-12-13 [colin]     0.9.13cvs14
+
+       * src/gtk/prefswindow.c
+       * src/gtk/pluginwindow.c
+               Fix key_pressed handlers
+
+2004-12-11 [colin]     0.9.13cvs13
+
+       * src/quote_fmt_parse.y
+               Rework quote_fmt_parse to use less local 
+               arrays in local blocks, so it doesn't 
+               freak out IBM's stack protector. Patch
+               by Alfons.
+
+2004-12-10 [colin]     0.9.13cvs12
+
+       * src/messageview.c
+               Fix logic error
+       * src/mainwindow.c
+               Fix corruptions when de-separating messageview
+
+2004-12-10 [paul]      0.9.13cvs11
+
+       * src/prefs_themes.c
+               use a different set of icons for the Preview
+
+2004-12-09 [colin]     0.9.13cvs10
+
+       * src/procmime.c
+               Fix procmime_encode_content doing horribly wrong
+               stuff when encoding to B64 from memory
+
+2004-12-08 [colin]     0.9.13cvs9
+
+       * src/gtk/colorlabel.c
+               Fix color label off-by-one
+               Patch by Alfons
+
+2004-12-08 [hoa]       0.9.13cvs8
+
+       * src/quote_fmt_parse.y
+               really fix buffer overflow
+
+2004-12-08 [colin]     0.9.13cvs7
+
+       * src/matcher_parser_parse.y
+       * src/msgcache.c
+       * src/prefs_matcher.c
+       * src/procheader.c
+       * src/matcher.c
+       * src/common/defs.h
+               Cache total_size and use that to speed up
+               'partial' match.
+               Add 'partial' to the list of useable stuff
+               in filtering
+
+2004-12-08 [paul]
+
+       * po/sr.po
+               updated by URKE MMI
+
+2004-12-08 [colin]     0.9.13cvs6
+
+       * src/textview.c
+               Fix possible boundary overrun in
+               get_email_part(). Patch by Alfons
+
+2004-12-08 [hoa]       0.9.13cvs5
+
+       * src/quote_fmt_parse.y
+               fix buffer overflow
+               http://bugs.gentoo.org/show_bug.cgi?id=67253
+
+2004-12-07 [thorsten]  0.9.13cvs4
+
+       * src/procmime.c
+               fix leak introduced with 0.9.13cvs1
+
+2004-12-07 [keith]     0.9.13cvs3
+
+       * src/procmime.c
+               Fix typo
+
 2004-12-07 [colin]     0.9.13cvs2
 
        * AUTHORS
index 28300ec..387ac21 100644 (file)
@@ -1,3 +1,34 @@
+2004-12-13
+
+       * src/compose.c: compose_wrap_line_all_full(): ¼¡¤Î¹Ô¤ÎºÇ½é¤Îʸ»ú¤¬
+         ¶õÇò¤Ç¤Ê¤¤¾ì¹ç¡¢¤Þ¤¿¤Ï¥Þ¥ë¥Á¥Ð¥¤¥È¤È¥·¥ó¥°¥ë¥Ð¥¤¥È¤Î¶­³¦¤Î¾ì¹ç
+         ¤Î¤ß¹Ô·ë¹ç»þ¤Ë¶õÇò¤òÁÞÆþ¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£
+
+2004-12-13
+
+       * src/action.c: parse_append_filename(): ÆÃÊÌʸ»ú¤ò¥¨¥¹¥±¡¼¥×¤¹¤ë
+         ¤è¤¦¤Ë¤·¤¿(IWAMOTO Kouichi ¤µ¤ó thanks)¡£
+       * src/utils.c: subst_for_filename(): ¥·¥ó¥°¥ë¥¯¥©¡¼¥È¤âÃÖ´¹¤¹¤ë
+         ¤è¤¦¤Ë¤·¤¿¡£
+
+2004-12-10
+
+       * src/compose.c: compose_wrap_line_all_full(): ¼¡¤Î¹Ô¤ÎºÇ½é¤Îʸ»ú¤¬
+         ±Ñ¿ô»ú¤Ç¤Ê¤¤¾ì¹ç¤Î¹Ô¤Î·ë¹ç¤ÎÌäÂê¤ò½¤Àµ¡£
+
+2004-12-09
+
+       * src/main.c: send_queue()
+         src/mainwindow.c: send_queue_cb()
+         src/compose.c: compose_send(), compose_send_later_cb(): Á÷¿®»þ¡¢
+         ¥ª¥Õ¥é¥¤¥ó¥â¡¼¥É¤Î¤È¤­¤Ï ¥æ¡¼¥¶¤Ë¥ª¥ó¥é¥¤¥ó¤ËÀÚ¤êÂؤ¨¤ë¤è¤¦¤Ë
+         Â¥¤¹¤è¤¦¤Ë¤·¤¿¡£
+
+2004-12-08
+
+       * src/imap.c: bitlength_clean_up.imap.c.patch ¤òŬÍÑ(64-bit ´Ä¶­¤Ç¤Î
+         À°¿ôŤÎÌäÂê¤ò½¤Àµ) (Alfons ¤µ¤ó thanks)¡£
+
 2004-12-03
 
        * version 1.0.0beta4
index d028249..30a6341 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.49.2.27 -r 1.49.2.28 src/procmime.c; ) > 0.9.13cvs10.1.patchset
 ( cvs diff -u -r 1.3.2.14 -r 1.3.2.15 src/prefs_themes.c; cvs diff -u -r 1.274.2.25 -r 1.274.2.26 src/mainwindow.c; cvs diff -u -r 1.94.2.36 -r 1.94.2.37 src/messageview.c; ) > 0.9.13cvs12.1.patchset
 ( cvs diff -u -r 1.22.2.5 -r 1.22.2.6 src/quote_fmt_parse.y; ) > 0.9.13cvs14.1.patchset
+( cvs diff -u -r 1.396.2.15 -r 1.396.2.16 ChangeLog; cvs diff -u -r 1.391.2.15 -r 1.391.2.16 ChangeLog.jp; cvs diff -u -r 1.2504.2.38 -r 1.2504.2.39 ChangeLog.claws; cvs diff -u -r 1.12.2.13 -r 1.12.2.14 src/action.c; cvs diff -u -r 1.36.2.17 -r 1.36.2.18 src/common/utils.c; cvs diff -u -r 1.12.2.10 -r 1.12.2.11 src/gtk/prefswindow.c; cvs diff -u -r 1.5.2.5 -r 1.5.2.6 src/gtk/gtkutils.c; cvs diff -u -r 1.4.2.4 -r 1.4.2.5 src/gtk/gtkutils.h; cvs diff -u -r 1.4.2.3 -r 1.4.2.4 src/plugins/spamassassin/libspamc.c; ) > 0.9.13cvs17.1.patchset
index 0b59447..c9dce69 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=13
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=14
+EXTRA_VERSION=17
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=.1
 
index 5001dee..5ca04ad 100644 (file)
@@ -335,13 +335,28 @@ static gchar *parse_action_cmd(gchar *action, MsgInfo *msginfo,
 static gboolean parse_append_filename(GString *cmd, MsgInfo *msginfo)
 {
        gchar *filename;
+       gchar *p;
 
        g_return_val_if_fail(msginfo, FALSE);
 
        filename = procmsg_get_message_file(msginfo);
 
        if (filename) {
-               g_string_append(cmd, filename);
+               g_string_append_c(cmd, '"');
+               for (p = filename; *p != '\0'; p++) {
+                       switch (*p) {
+                       case '$':
+                       case '"':
+                       case '`':
+                       case '\\':
+                               g_string_append_c(cmd, '\\');
+                               break;
+                       default:
+                               break;
+                       }
+                       g_string_append_c(cmd, *p);
+               }
+               g_string_append_c(cmd, '"');
                g_free(filename);
        } else {
                alertpanel_error(_("Could not get message file %d"),
@@ -461,7 +476,7 @@ static void action_update_menu(GtkItemFactory *ifactory,
                action_p = strstr(action, ": ");
                if (action_p && action_p[2] &&
                    action_get_type(&action_p[2]) != ACTION_ERROR) {
-                       action_p[0] = 0x00;
+                       action_p[0] = '\0';
                        menu_path = g_strdup_printf("%s/%s", branch_path,
                                                    action);
                        ifentry.path = menu_path;
@@ -785,6 +800,7 @@ static ChildInfo *fork_child(gchar *cmd, const gchar *msg_str,
        }
 
        debug_print("Forking child and grandchild.\n");
+       debug_print("Executing: /bin/sh -c %s\n", cmd);
 
        pid = fork();
        if (pid == 0) { /* Child */
@@ -826,7 +842,7 @@ static ChildInfo *fork_child(gchar *cmd, const gchar *msg_str,
                        cmdline[0] = "sh";
                        cmdline[1] = "-c";
                        cmdline[2] = cmd;
-                       cmdline[3] = 0;
+                       cmdline[3] = NULL;
                        execvp("/bin/sh", cmdline);
 
                        perror("execvp");
index 2d604e4..1bb4b7c 100644 (file)
@@ -1081,7 +1081,7 @@ void subst_chars(gchar *str, gchar *orig, gchar subst)
 
 void subst_for_filename(gchar *str)
 {
-       subst_chars(str, " \t\r\n\"/\\", '_');
+       subst_chars(str, " \t\r\n\"'/\\", '_');
 }
 
 void subst_for_shellsafe_filename(gchar *str)
index 7232733..f37241f 100644 (file)
@@ -795,3 +795,54 @@ gchar *gtkut_text_view_get_selection(GtkTextView *textview)
        else
                return NULL;
 }
+
+/*!
+ *\brief       Tries to find a focused child using a lame strategy
+ */
+GtkWidget *gtkut_get_focused_child(GtkContainer *parent)
+{
+       GtkWidget *result = NULL;
+       GList *child_list = NULL;
+       GList *c;
+
+       g_return_val_if_fail(parent, NULL);
+
+       /* Get children list and see which has the focus. */
+       child_list = gtk_container_get_children(parent);
+       if (!child_list)
+               return NULL;
+
+       for (c = child_list; c != NULL; c = g_list_next(c)) {
+               if (c->data && GTK_IS_WIDGET(c->data)) {
+                       if (GTK_WIDGET_HAS_FOCUS(GTK_WIDGET(c->data))) {
+                               result = GTK_WIDGET(c->data);
+                               break;
+                       }
+               }
+       }
+       
+       /* See if the returned widget is a container itself; if it is,
+        * see if one of its children is focused. If the focused 
+        * container has no focused child, it is itself a focusable 
+        * child, and has focus. */
+       if (result && GTK_IS_CONTAINER(result)) {
+               GtkWidget *tmp =  gtkut_get_focused_child(GTK_CONTAINER(result)); 
+               
+               if (tmp) 
+                       result = tmp;
+       } else {
+               /* Try the same for each container in the chain */
+               for (c = child_list; c != NULL && !result; c = g_list_next(c)) {
+                       if (c->data && GTK_IS_WIDGET(c->data) 
+                       &&  GTK_IS_CONTAINER(c->data)) {
+                               result = gtkut_get_focused_child
+                                       (GTK_CONTAINER(c->data));
+                       }
+               }
+       
+       }
+       
+       g_list_free(child_list);
+               
+       return result;
+}
index 143d42c..d007c4b 100644 (file)
@@ -181,5 +181,5 @@ gboolean gtkut_text_buffer_is_uri_string(GtkTextBuffer      *text,
                                         guint           start_pos,
                                         guint           text_len);
 gchar *gtkut_text_view_get_selection   (GtkTextView    *textview);
-
+GtkWidget *gtkut_get_focused_child     (GtkContainer   *parent);
 #endif /* __GTKUTILS_H__ */
index 680b020..75b41c7 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <string.h>
 #include <gtk/gtk.h>
+#include <gtk/gtktext.h>
 #include <gdk/gdkkeysyms.h>
 
 #include "intl.h"
@@ -206,8 +207,10 @@ gint compare_func(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2)
 }
 
 static gboolean prefswindow_key_pressed(GtkWidget *widget, GdkEventKey *event,
-                                   gpointer data)
+                                   PrefsWindow *data)
 {
+       GtkWidget *focused_child;
+
        if (event) {
                switch (event->keyval) {
                        case GDK_Escape :
@@ -215,7 +218,13 @@ static gboolean prefswindow_key_pressed(GtkWidget *widget, GdkEventKey *event,
                                break;
                        case GDK_Return : 
                        case GDK_KP_Enter :
-                               ok_button_released(NULL, data);
+                               focused_child = gtkut_get_focused_child
+                                       (GTK_CONTAINER(data->notebook));
+                               /* Press ok, if the focused child is not a text view
+                                * and text (anything that accepts return) (can pass
+                                * NULL to any of the GTK_xxx() casts) */
+                               if (!GTK_IS_TEXT_VIEW(focused_child))
+                                       ok_button_released(NULL, data);
                                break;
                        default:
                                break;
index a650702..0a1ab22 100644 (file)
@@ -1087,7 +1087,7 @@ int message_process(struct transport *trans, char *username, int max_size,
 
 void message_cleanup(struct message *m)
 {
-    if (m->out != NULL && m->pre != NULL && m->out != m->pre+m->pre_len)
+    if (m->out != NULL)
        free(m->out);
     if (m->raw != NULL)
        free(m->raw);