diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2003-11-18 06:34:38 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2003-11-18 06:34:38 +0800 |
commit | e86602f0ef887fcace201e6f898bd8f2437deaaf (patch) | |
tree | ccb48c53b8ab4e3befc473b71906761f4c676459 | |
parent | 561b83c1a1128305b27026cf284320c333966f4a (diff) | |
download | gsoc2013-evolution-e86602f0ef887fcace201e6f898bd8f2437deaaf.tar gsoc2013-evolution-e86602f0ef887fcace201e6f898bd8f2437deaaf.tar.gz gsoc2013-evolution-e86602f0ef887fcace201e6f898bd8f2437deaaf.tar.bz2 gsoc2013-evolution-e86602f0ef887fcace201e6f898bd8f2437deaaf.tar.lz gsoc2013-evolution-e86602f0ef887fcace201e6f898bd8f2437deaaf.tar.xz gsoc2013-evolution-e86602f0ef887fcace201e6f898bd8f2437deaaf.tar.zst gsoc2013-evolution-e86602f0ef887fcace201e6f898bd8f2437deaaf.zip |
Fixed to check fi->child as well (since mbox does it right).
2003-11-17 Jeffrey Stedfast <fejj@ximian.com>
* em-folder-tree.c (tree_row_expanded): Fixed to check fi->child
as well (since mbox does it right).
(emft_popup_new_folder_response): Fixed to subscribe to the
correct folder.
(emft_popup_delete_folders): Fixed to use the full_name rather
than the path.
svn path=/trunk/; revision=23407
-rw-r--r-- | mail/ChangeLog | 4 | ||||
-rw-r--r-- | mail/em-folder-tree.c | 27 |
2 files changed, 19 insertions, 12 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index b2733b5314..91613fcc5d 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -2,6 +2,10 @@ * em-folder-tree.c (tree_row_expanded): Fixed to check fi->child as well (since mbox does it right). + (emft_popup_new_folder_response): Fixed to subscribe to the + correct folder. + (emft_popup_delete_folders): Fixed to use the full_name rather + than the path. * em-folder-selection-button.c (set_contents): Fixed to not include leading '/' in the folder name in the label. diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c index 6adf2f18d1..9aa51ce1fa 100644 --- a/mail/em-folder-tree.c +++ b/mail/em-folder-tree.c @@ -1231,11 +1231,11 @@ emft_popup_new_folder_response (EMFolderSelector *emfs, int response, EMFolderTr /* FIXME: ugh, kludge-a-licious: EMFolderSelector uses EMFolderTree so we can poke emfs->emft internals */ struct _EMFolderTreePrivate *priv = emfs->emft->priv; struct _EMFolderTreeModelStoreInfo *si; - const char *uri, *parent; + const char *uri, *parent, *path, *full_name; + char *name, *namebuf = NULL; GtkWidget *dialog; CamelStore *store; CamelException ex; - char *path, *name; if (response != GTK_RESPONSE_OK) { gtk_widget_destroy ((GtkWidget *) emfs); @@ -1243,7 +1243,7 @@ emft_popup_new_folder_response (EMFolderSelector *emfs, int response, EMFolderTr } uri = em_folder_selector_get_selected_uri (emfs); - path = (char *) em_folder_selector_get_selected_path (emfs); + path = em_folder_selector_get_selected_path (emfs); d(printf ("Creating folder: %s (%s)\n", path, uri)); camel_exception_init (&ex); @@ -1259,13 +1259,14 @@ emft_popup_new_folder_response (EMFolderSelector *emfs, int response, EMFolderTr camel_object_unref (store); /* FIXME: camel_store_create_folder should just take full path names */ - path = g_strdup (path[0] == '/' ? path + 1 : path); - if (!(name = strrchr (path, '/'))) { - name = path; + full_name = path[0] == '/' ? path + 1 : path; + namebuf = g_strdup (full_name); + if (!(name = strrchr (namebuf, '/'))) { + name = namebuf; parent = ""; } else { *name++ = '\0'; - parent = path; + parent = namebuf; } d(printf ("creating folder name='%s' path='%s'\n", name, path)); @@ -1274,12 +1275,12 @@ emft_popup_new_folder_response (EMFolderSelector *emfs, int response, EMFolderTr if (camel_exception_is_set (&ex)) { goto exception; } else if (camel_store_supports_subscriptions (si->store)) { - camel_store_subscribe_folder (si->store, path, &ex); + camel_store_subscribe_folder (si->store, full_name, &ex); if (camel_exception_is_set (&ex)) goto exception; } - g_free (path); + g_free (namebuf); gtk_widget_destroy ((GtkWidget *) emfs); @@ -1291,7 +1292,7 @@ emft_popup_new_folder_response (EMFolderSelector *emfs, int response, EMFolderTr GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("%s"), ex.desc); g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog); camel_exception_clear (&ex); - g_free (path); + g_free (namebuf); gtk_widget_show (dialog); } @@ -1351,15 +1352,17 @@ emft_popup_delete_rec (CamelStore *store, CamelFolderInfo *fi, CamelException *e } static void -emft_popup_delete_folders (CamelStore *store, const char *base, CamelException *ex) +emft_popup_delete_folders (CamelStore *store, const char *path, CamelException *ex) { guint32 flags = CAMEL_STORE_FOLDER_INFO_RECURSIVE; + const char *full_name; CamelFolderInfo *fi; if (camel_store_supports_subscriptions (store)) flags |= CAMEL_STORE_FOLDER_INFO_SUBSCRIBED; - fi = camel_store_get_folder_info (store, base, flags, ex); + full_name = path[0] == '/' ? path + 1 : path; + fi = camel_store_get_folder_info (store, full_name, flags, ex); if (camel_exception_is_set (ex)) return; |