+2002-12-18
+
+ * src/main.c: process command line option before gtk_init() to
+ enable remote operation without X (thanks to Ruslan N. Balkin).
+ * src/codeconv.c: conv_encode_header(): fixed a potential buffer
+ overflow.
+
+2002-12-18
+
+ * src/Makefile.am: changed $(target_alias) to $(target_triplet)
+ (the spec of autotools seems to be changed).
+
+2002-12-18
+
+ * src/imap.c: get path separator using LIST command if server
+ doesn't support NAMESPACE (based on the patch by Brian Sammon).
+ imap_parse_list(): added an argument to return path separator.
+ imap_get_namespace_by_list(): new.
+
+2002-12-17
+
+ * src/addr_compl.c: add_address(): removed the debug print.
+ * src/gtkutils.[ch]: gtkut_window_popup()
+ src/mainwindow.c: main_window_popup(): applied the patch to fix
+ the behavior of window popup from Sergey Vlasov (thanks!)
+ * src/account.c: account_edit_create(): use signal_connect_after
+ for row_move signal to fix the row position bug.
+ account_row_moved(): scroll the CList half page.
+ * src/prefs_filter.c: prefs_filter_row_move(): scroll the CList
+ half page.
+ * src/summaryview.c: summary_reply(): use selection text only if
+ the displayed message is selected (thanks to Sergey Vlasov).
+
2002-12-13
* src/codeconv.c: conv_encode_header(): reimplemented the routine
-2002-12-14 [christoph] 0.8.6claws114
+2002-12-18 [paul] 0.8.6claws115
+
+ * src/Makefile.am
+ * src/account.c
+ * src/codeconv.c
+ * src/gtkutils.[ch]
+ * src/imap.c
+ sync with 0.8.6cvs22.
+ see ChangeLog 2002-12-17 and 2002-12-18
+
+2002-12-17 [christoph] 0.8.6claws114
* src/imap.c
o don't create a session if imap greeting fails
o don't close socket when authentication fails
this is done by imap_session_destroy
-2002-12-14 [thorsten] 0.8.6claws113
+2002-12-17 [thorsten] 0.8.6claws113
* tools/Makefile.am
tools/README
tools/google_msgid.pl ** NEW FILE **
Added "search for message-id" script and doc
-2002-12-14 [thorsten] 0.8.6claws112
+2002-12-17 [thorsten] 0.8.6claws112
* po/hu.po
Updated hungarian translation
(updated by Gal Zoltan)
-2002-12-14 [christoph] 0.8.6claws111
+2002-12-16 [christoph] 0.8.6claws111
* src/addr_compl.c
remove stupid addressbook dump to debug output
+2002-12-18
+
+ * src/main.c: X ¤Ê¤·¤Ç¥ê¥â¡¼¥ÈÁàºî¤ò²Äǽ¤Ë¤¹¤ë¤¿¤á¤Ë gtk_init()
+ ¤ÎÁ°¤Ë¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤ò½èÍý¤¹¤ë¤è¤¦¤Ë¤·¤¿(Ruslan N.
+ Balkin ¤µ¤ó thanks)¡£
+ * src/codeconv.c: conv_encode_header(): ÀøºßŪ¤Ê¥Ð¥Ã¥Õ¥¡¥ª¡¼¥Ð¡¼
+ ¥Õ¥í¡¼¤ò½¤Àµ¡£
+
+2002-12-18
+
+ * src/Makefile.am: $(target_alias) ¤ò $(target_triplet) ¤ËÊѹ¹
+ (autotools ¤Î»ÅÍÍÊѹ¹¤ÎÌÏÍÍ)¡£
+
+2002-12-18
+
+ * src/imap.c: ¥µ¡¼¥Ð¤¬ NAMESPACE ¥³¥Þ¥ó¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤È¤
+ LIST ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¥Ñ¥¹¥»¥Ñ¥ì¡¼¥¿¤ò¼èÆÀ¤¹¤ë¤è¤¦¤Ë¤·¤¿(Brian
+ Sammon ¤µ¤ó¤Î¥Ñ¥Ã¥Á¤Ë´ð¤Å¤¯)¡£
+ imap_parse_list(): ¥Ñ¥¹¥»¥Ñ¥ì¡¼¥¿¤òÊÖ¤¹¤¿¤á¤Î°ú¿ô¤òÄɲá£
+ imap_get_namespace_by_list(): ¿·µ¬¡£
+
+2002-12-17
+
+ * src/addr_compl.c: add_address(): ¥Ç¥Ð¥Ã¥°½ÐÎϤòºï½ü¡£
+ * src/gtkutils.[ch]: gtkut_window_popup()
+ src/mainwindow.c: main_window_popup(): ¥¦¥£¥ó¥É¥¦¤Î¥Ý¥Ã¥×¥¢¥Ã¥×¤Î
+ µóÆ°¤ò½¤Àµ¤¹¤ë Sergey Vlasov ¤µ¤ó¤Î¥Ñ¥Ã¥Á¤òŬÍÑ(thanks!)
+ * src/account.c: account_edit_create(): row_move ¥·¥°¥Ê¥ë¤Ë
+ signal_connect_after ¤ò»ÈÍѤ·¤Æ¹Ô°ÌÃ֤ΥХ°¤ò½¤Àµ¡£
+ account_row_moved(): CList ¤òȾ¥Ú¡¼¥¸¥¹¥¯¥í¡¼¥ë¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£
+ * src/prefs_filter.c: prefs_filter_row_move(): CList ¤òȾ¥Ú¡¼¥¸
+ ¥¹¥¯¥í¡¼¥ë¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£
+ * src/summaryview.c: summary_reply(): ɽ¼¨¤µ¤ì¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸¤¬
+ ÁªÂò¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Î¤ßÁªÂòÉô¥Æ¥¥¹¥È¤ò»ÈÍѤ¹¤ë¤è¤¦¤Ë¤·¤¿(Sergey
+ Vlasov ¤µ¤ó thanks)¡£
+
2002-12-13
* src/codeconv.c: conv_encode_header(): MIME ¥Ø¥Ã¥À¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
MICRO_VERSION=6
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=claws114
+EXTRA_VERSION=claws115
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
-DLOCALEDIR=\""$(localedir)"\" \
-DMANUALDIR=\""$(manualdir)"\" \
-DFAQDIR=\""$(faqdir)"\" \
- -DTARGET_ALIAS=\""$(target_alias)"\" \
+ -DTARGET_ALIAS=\""$(target_triplet)"\" \
-DSYSCONFDIR=\""$(sysconfdir)"\"
YFLAGS = -d
gtk_signal_connect (GTK_OBJECT (clist), "select_row",
GTK_SIGNAL_FUNC (account_selected), NULL);
- gtk_signal_connect (GTK_OBJECT (clist), "row_move",
- GTK_SIGNAL_FUNC (account_row_moved), NULL);
+ gtk_signal_connect_after (GTK_OBJECT (clist), "row_move",
+ GTK_SIGNAL_FUNC (account_row_moved), NULL);
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox2);
if (!clist->selection) return;
row = GPOINTER_TO_INT(clist->selection->data);
- if (row > 0) {
+ if (row > 0)
gtk_clist_row_move(clist, row, row - 1);
- account_list_set();
- }
}
static void account_down(void)
if (!clist->selection) return;
row = GPOINTER_TO_INT(clist->selection->data);
- if (row < clist->rows - 1) {
+ if (row < clist->rows - 1)
gtk_clist_row_move(clist, row, row + 1);
- account_list_set();
- }
-
}
static void account_set_default(void)
static void account_row_moved(GtkCList *clist, gint source_row, gint dest_row)
{
account_list_set();
- if (gtk_clist_row_is_visible(clist, dest_row) != GTK_VISIBILITY_FULL) {
- gtk_clist_moveto(clist, dest_row, -1,
- source_row < dest_row ? 1.0 : 0.0, 0.0);
- }
+ if (gtk_clist_row_is_visible(clist, dest_row) != GTK_VISIBILITY_FULL)
+ gtk_clist_moveto(clist, dest_row, -1, 0.5, 0.0);
}
static void account_key_pressed(GtkWidget *widget, GdkEventKey *event,
#define LBREAK_IF_REQUIRED(cond) \
{ \
- if (len - (destp - dest) < MAX_LINELEN) { \
+ if (len - (destp - dest) < MAX_LINELEN + 2) { \
*destp = '\0'; \
return; \
} \
gtk_container_remove(container, widget);
}
+void gtkut_window_popup(GtkWidget *window)
+{
+ gint x, y, sx, sy, new_x, new_y;
+
+ g_return_if_fail(window != NULL);
+ g_return_if_fail(window->window != NULL);
+
+ sx = gdk_screen_width();
+ sy = gdk_screen_height();
+
+ gdk_window_get_origin(window->window, &x, &y);
+ new_x = x % sx; if (new_x < 0) new_x = 0;
+ new_y = y % sy; if (new_y < 0) new_y = 0;
+ if (new_x != x || new_y != y)
+ gdk_window_move(window->window, new_x, new_y);
+
+ gdk_window_raise(window->window);
+ gdk_window_show(window->window);
+}
+
+void gtkut_widget_get_uposition(GtkWidget *widget, gint *px, gint *py)
+{
+ gint x, y;
+ gint sx, sy;
+
+ g_return_if_fail(widget != NULL);
+ g_return_if_fail(widget->window != NULL);
+
+ sx = gdk_screen_width();
+ sy = gdk_screen_height();
+
+ /* gdk_window_get_root_origin ever return *rootwindow*'s position */
+ gdk_window_get_root_origin(widget->window, &x, &y);
+
+ x %= sx; if (x < 0) x = 0;
+ y %= sy; if (y < 0) y = 0;
+ *px = x;
+ *py = y;
+}
+
void gtkut_widget_disable_theme_engine(GtkWidget *widget)
{
GtkStyle *style, *new_style;
gtk_main_iteration();
}
-void gtkut_widget_get_uposition(GtkWidget *widget, gint *px, gint *py)
-{
- gint x, y;
- gint sx, sy;
-
- g_return_if_fail(widget != NULL);
- g_return_if_fail(widget->window != NULL);
-
- /* gdk_window_get_root_origin ever return *rootwindow*'s position*/
- gdk_window_get_root_origin(widget->window, &x, &y);
-
- sx = gdk_screen_width();
- sy = gdk_screen_height();
- x %= sx; if (x < 0) x = 0;
- y %= sy; if (y < 0) y = 0;
- *px = x;
- *py = y;
-}
-
-void gtkut_window_popup(GtkWidget *window)
-{
- gint x, y, sx, sy, new_x, new_y;
-
- g_return_if_fail(window != NULL);
- g_return_if_fail(window->window != NULL);
-
- gdk_window_get_origin(window->window, &x, &y);
- sx = gdk_screen_width();
- sy = gdk_screen_height();
- new_x = x % sx; if (new_x < 0) new_x = 0;
- new_y = y % sy; if (new_y < 0) new_y = 0;
- if (new_x != x || new_y != y)
- gdk_window_move(window->window, new_x, new_y);
-
- gdk_window_raise(window->window);
- gdk_window_show(window->window);
-}
-
-
static void gtkut_clist_bindings_add(GtkWidget *clist)
{
GtkBindingSet *binding_set;
void gtkut_container_remove (GtkContainer *container,
GtkWidget *widget);
-void gtkut_widget_disable_theme_engine (GtkWidget *widget);
-void gtkut_widget_wait_for_draw (GtkWidget *widget);
-void gtkut_widget_get_uposition (GtkWidget *widget,
- gint *px,
- gint *py);
void gtkut_window_popup (GtkWidget *window);
+void gtkut_widget_get_uposition (GtkWidget *widget,
+ gint *px,
+ gint *py);
+void gtkut_widget_disable_theme_engine (GtkWidget *widget);
+void gtkut_widget_wait_for_draw (GtkWidget *widget);
void gtkut_widget_init (void);
void gtkut_widget_set_app_icon (GtkWidget *widget);
FolderItem *item);
static GSList *imap_parse_list (Folder *folder,
IMAPSession *session,
- const gchar *real_path);
+ const gchar *real_path,
+ gchar *separator);
static void imap_create_missing_folders (Folder *folder);
static FolderItem *imap_create_special_folder
static void imap_parse_namespace (IMAPSession *session,
IMAPFolder *folder);
+static void imap_get_namespace_by_list (IMAPSession *session,
+ IMAPFolder *folder);
static IMAPNameSpace *imap_find_namespace (IMAPFolder *folder,
const gchar *path);
static gchar imap_get_path_separator (IMAPFolder *folder,
wildcard_path);
strtailchomp(real_path, separator);
- item_list = imap_parse_list(folder, session, real_path);
+ item_list = imap_parse_list(folder, session, real_path, NULL);
g_free(real_path);
for (cur = item_list; cur != NULL; cur = cur->next) {
return IMAP_SUCCESS;
}
-static GSList *imap_parse_list(Folder *folder, IMAPSession *session, const gchar *real_path)
+static GSList *imap_parse_list(Folder *folder, IMAPSession *session,
+ const gchar *real_path, gchar *separator)
{
gchar buf[IMAPBUFSIZE];
gchar flags[256];
- gchar separator[16];
+ gchar separator_str[16];
gchar *p;
gchar *name;
gchar *loc_name, *loc_path;
if (!p) continue;
while (*p == ' ') p++;
- p = strchr_cpy(p, ' ', separator, sizeof(separator));
+ p = strchr_cpy(p, ' ', separator_str, sizeof(separator_str));
if (!p) continue;
- extract_quote(separator, '"');
- if (!strcmp(separator, "NIL"))
- separator[0] = '\0';
+ extract_quote(separator_str, '"');
+ if (!strcmp(separator_str, "NIL"))
+ separator_str[0] = '\0';
+ if (separator)
+ *separator = separator_str[0];
buf[0] = '\0';
while (*p == ' ') p++;
buf, sizeof(buf), str);
else
strncpy2(buf, p, sizeof(buf));
- strtailchomp(buf, separator[0]);
+ strtailchomp(buf, separator_str[0]);
if (buf[0] == '\0') continue;
if (!strcmp(buf, real_path)) continue;
- if (separator[0] != '\0')
- subst_char(buf, separator[0], '/');
+ if (separator_str[0] != '\0')
+ subst_char(buf, separator_str[0], '/');
name = g_basename(buf);
if (name[0] == '.') continue;
if (imap_cmd_namespace(SESSION(session)->sock, &ns_str)
!= IMAP_SUCCESS) {
log_warning(_("can't get namespace\n"));
+ imap_get_namespace_by_list(session, folder);
return;
}
g_free(ns_str);
}
+static void imap_get_namespace_by_list(IMAPSession *session, IMAPFolder *folder)
+{
+ GSList *item_list, *cur;
+ gchar separator = '\0';
+ IMAPNameSpace *namespace;
+
+ g_return_if_fail(session != NULL);
+ g_return_if_fail(folder != NULL);
+
+ if (folder->ns_personal != NULL ||
+ folder->ns_others != NULL ||
+ folder->ns_shared != NULL)
+ return;
+
+ imap_cmd_gen_send(SESSION(session)->sock, "LIST \"\" \"\"");
+ item_list = imap_parse_list(NULL, session, "", &separator);
+ for (cur = item_list; cur != NULL; cur = cur->next)
+ folder_item_destroy(FOLDER_ITEM(cur->data));
+ g_slist_free(item_list);
+
+ namespace = g_new(IMAPNameSpace, 1);
+ namespace->name = g_strdup("");
+ namespace->separator = separator;
+ folder->ns_personal = g_list_append(NULL, namespace);
+}
+
static IMAPNameSpace *imap_find_namespace_from_list(GList *ns_list,
const gchar *path)
{