diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | libsylph/virtual.c | 16 | ||||
-rw-r--r-- | src/folderview.c | 4 |
3 files changed, 21 insertions, 4 deletions
@@ -1,3 +1,8 @@ +2010-07-23 + + * libsylph/virtual.c + src/folderview.c: enabled moving of virtual folders. + 2010-07-22 * src/addressbook.c: implemeted drag and drop of addresses. diff --git a/libsylph/virtual.c b/libsylph/virtual.c index 5452d1da..ead73eee 100644 --- a/libsylph/virtual.c +++ b/libsylph/virtual.c @@ -1,6 +1,6 @@ /* * LibSylph -- E-Mail client library - * Copyright (C) 1999-2009 Hiroyuki Yamamoto + * Copyright (C) 1999-2010 Hiroyuki Yamamoto * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -108,6 +108,9 @@ static gint virtual_scan_folder (Folder *folder, static gint virtual_rename_folder (Folder *folder, FolderItem *item, const gchar *name); +static gint virtual_move_folder (Folder *folder, + FolderItem *item, + FolderItem *new_parent); static gint virtual_remove_folder (Folder *folder, FolderItem *item); @@ -142,7 +145,7 @@ static FolderClass virtual_class = NULL, virtual_rename_folder, - NULL, + virtual_move_folder, virtual_remove_folder, }; @@ -571,6 +574,15 @@ static gint virtual_rename_folder(Folder *folder, FolderItem *item, return mh_get_class()->rename_folder(folder, item, name); } +static gint virtual_move_folder(Folder *folder, FolderItem *item, + FolderItem *new_parent) +{ + g_return_val_if_fail(item != NULL, -1); + g_return_val_if_fail(item->stype == F_VIRTUAL, -1); + + return mh_get_class()->move_folder(folder, item, new_parent); +} + static gint virtual_remove_folder(Folder *folder, FolderItem *item) { gchar *path; diff --git a/src/folderview.c b/src/folderview.c index 66ff0576..fe1d3dee 100644 --- a/src/folderview.c +++ b/src/folderview.c @@ -1547,7 +1547,7 @@ void folderview_move_folder(FolderView *folderview) g_return_if_fail(item->folder != NULL); if (!item->path) return; - if (item->stype != F_NORMAL) return; + if (item->stype != F_NORMAL || item->stype != F_VIRTUAL) return; if (item->folder->klass->move_folder) folderview_move_folder_cb(folderview, 0, NULL); @@ -1701,7 +1701,7 @@ static gboolean folderview_menu_popup(FolderView *folderview, } if (item->stype == F_VIRTUAL) { new_folder = FALSE; - rename_folder = delete_folder = TRUE; + move_folder = rename_folder = delete_folder = TRUE; } if (FOLDER_TYPE(folder) == F_IMAP || FOLDER_TYPE(folder) == F_NEWS) { |