aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-12-21 08:19:23 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-12-21 08:19:23 +0000
commita185556cfbf5881f994da3575777ebdcafd91091 (patch)
treee8460871671266a33da23796dbad3c3a4f753a32 /src
parentcf84cac1795e9141138a8c630ba8d5b516d24a47 (diff)
some modification of searching.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@848 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r--src/compose.c2
-rw-r--r--src/folderview.c1
-rw-r--r--src/prefs_folder_item.c4
-rw-r--r--src/summary_search.c11
-rw-r--r--src/summaryview.c24
5 files changed, 31 insertions, 11 deletions
diff --git a/src/compose.c b/src/compose.c
index 123d4df1..b1d12dcc 100644
--- a/src/compose.c
+++ b/src/compose.c
@@ -768,6 +768,7 @@ void compose_reply(MsgInfo *msginfo, FolderItem *item, ComposeMode mode,
MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_FORWARDED);
MSG_SET_PERM_FLAGS(msginfo->flags, MSG_REPLIED);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
msginfo->folder->mark_dirty = TRUE;
if (MSG_IS_IMAP(msginfo->flags))
imap_msg_set_perm_flags(msginfo, MSG_REPLIED);
@@ -859,6 +860,7 @@ void compose_forward(GSList *mlist, FolderItem *item, gboolean as_attach,
msginfo = (MsgInfo *)cur->data;
MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_REPLIED);
MSG_SET_PERM_FLAGS(msginfo->flags, MSG_FORWARDED);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
msginfo->folder->mark_dirty = TRUE;
}
msginfo = (MsgInfo *)mlist->data;
diff --git a/src/folderview.c b/src/folderview.c
index 8dca27ae..d79dd587 100644
--- a/src/folderview.c
+++ b/src/folderview.c
@@ -1601,6 +1601,7 @@ static gboolean folderview_menu_popup(FolderView *folderview,
}
if (item->stype == F_VIRTUAL) {
rename_folder = delete_folder = TRUE;
+ search_folder = FALSE;
}
if (FOLDER_TYPE(folder) == F_IMAP ||
FOLDER_TYPE(folder) == F_NEWS) {
diff --git a/src/prefs_folder_item.c b/src/prefs_folder_item.c
index 9d777eba..37ad6be2 100644
--- a/src/prefs_folder_item.c
+++ b/src/prefs_folder_item.c
@@ -253,6 +253,8 @@ static void prefs_folder_item_general_create(PrefsFolderItemDialog *dialog)
gtk_widget_set_sensitive(optmenu, FALSE);
gtk_widget_set_sensitive(vbox2, FALSE);
}
+ if (dialog->item->stype == F_VIRTUAL)
+ gtk_widget_set_sensitive(optmenu, FALSE);
dialog->name_entry = name_entry;
dialog->id_label = id_label;
@@ -527,7 +529,7 @@ static void prefs_folder_item_apply_cb(GtkWidget *widget,
type = (SpecialFolderItemType)
g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID);
- if (item->stype != type) {
+ if (item->stype != type && item->stype != F_VIRTUAL) {
switch (type) {
case F_NORMAL:
break;
diff --git a/src/summary_search.c b/src/summary_search.c
index e63f1ef9..a5ff8f76 100644
--- a/src/summary_search.c
+++ b/src/summary_search.c
@@ -60,6 +60,7 @@
#include "manage_window.h"
#include "alertpanel.h"
#include "foldersel.h"
+#include "statusbar.h"
#include "procmsg.h"
#include "procheader.h"
#include "folder.h"
@@ -176,7 +177,7 @@ void summary_search(FolderItem *item)
else
gtk_widget_hide(search_window.window);
- if (item) {
+ if (item && item->stype != F_VIRTUAL) {
id = folder_item_get_identifier(item);
gtk_entry_set_text(GTK_ENTRY(search_window.folder_entry), id);
g_free(id);
@@ -515,6 +516,7 @@ static void summary_search_query(void)
gtk_button_set_label(GTK_BUTTON(search_window.search_btn),
GTK_STOCK_FIND);
gtk_label_set_text(GTK_LABEL(search_window.status_label), _("Done."));
+ statusbar_pop_all();
if (search_window.cancelled)
debug_print("* query search cancelled.\n");
@@ -533,7 +535,7 @@ static void summary_search_folder(FolderItem *item)
gint count = 1, total;
GTimeVal tv_prev, tv_cur;
- if (!item->path)
+ if (!item->path || item->stype == F_VIRTUAL)
return;
folder_name = g_path_get_basename(item->path);
@@ -729,7 +731,7 @@ static void summary_select_folder(GtkButton *button, gpointer data)
gchar *id;
item = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL);
- if (!item)
+ if (!item || item->stype == F_VIRTUAL)
return;
id = folder_item_get_identifier(item);
@@ -779,7 +781,7 @@ static void summary_search_save_dialog_select_folder(GtkButton *button,
gchar *id;
item = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL);
- if (!item)
+ if (!item || item->no_sub || item->stype == F_VIRTUAL)
return;
id = folder_item_get_identifier(item);
@@ -929,6 +931,7 @@ static FolderItem *summary_search_create_vfolder(FolderItem *parent,
item = folder_item_new(name, path);
item->stype = F_VIRTUAL;
+ item->no_sub = TRUE;
folder_item_append(parent, item);
g_free(path);
diff --git a/src/summaryview.c b/src/summaryview.c
index bf10d2a7..39940ce1 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -2271,6 +2271,7 @@ static void summary_display_msg_full(SummaryView *summaryview,
MSG_IS_UNREAD(msginfo->flags)) {
MSG_UNSET_PERM_FLAGS
(msginfo->flags, MSG_NEW | MSG_UNREAD);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
summaryview->folder_item->mark_dirty = TRUE;
if (MSG_IS_IMAP(msginfo->flags))
imap_msg_unset_perm_flags
@@ -2450,15 +2451,17 @@ static void summary_mark_row(SummaryView *summaryview, GtkTreeIter *iter)
GET_MSG_INFO(msginfo, iter);
msginfo->to_folder = NULL;
- if (MSG_IS_DELETED(msginfo->flags))
+ if (MSG_IS_DELETED(msginfo->flags)) {
summaryview->deleted--;
+ MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED);
+ }
if (MSG_IS_MOVE(msginfo->flags))
summaryview->moved--;
if (MSG_IS_COPY(msginfo->flags))
summaryview->copied--;
- MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED);
MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_MOVE | MSG_COPY);
MSG_SET_PERM_FLAGS(msginfo->flags, MSG_MARKED);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
summaryview->folder_item->mark_dirty = TRUE;
summary_set_row(summaryview, iter, msginfo);
@@ -2508,6 +2511,7 @@ static void summary_mark_row_as_read(SummaryView *summaryview,
summaryview->folder_item->unread--;
if (MSG_IS_NEW(msginfo->flags) || MSG_IS_UNREAD(msginfo->flags)) {
MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_NEW | MSG_UNREAD);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
summaryview->folder_item->mark_dirty = TRUE;
summary_set_row(summaryview, iter, msginfo);
debug_print(_("Message %d is marked as being read\n"),
@@ -2597,6 +2601,7 @@ static void summary_mark_row_as_unread(SummaryView *summaryview,
debug_print(_("Message %d is marked as unread\n"),
msginfo->msgnum);
}
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
summary_set_row(summaryview, iter, msginfo);
}
@@ -2646,6 +2651,7 @@ static void summary_delete_row(SummaryView *summaryview, GtkTreeIter *iter)
summaryview->copied--;
MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_MOVE | MSG_COPY);
MSG_SET_PERM_FLAGS(msginfo->flags, MSG_DELETED);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
summaryview->deleted++;
summaryview->folder_item->mark_dirty = TRUE;
@@ -2771,6 +2777,7 @@ static void summary_unmark_row(SummaryView *summaryview, GtkTreeIter *iter)
summaryview->copied--;
MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_MARKED | MSG_DELETED);
MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_MOVE | MSG_COPY);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
summaryview->folder_item->mark_dirty = TRUE;
summary_set_row(summaryview, iter, msginfo);
@@ -2818,9 +2825,11 @@ static void summary_move_row_to(SummaryView *summaryview, GtkTreeIter *iter,
GET_MSG_INFO(msginfo, iter);
msginfo->to_folder = to_folder;
- if (MSG_IS_DELETED(msginfo->flags))
+ if (MSG_IS_DELETED(msginfo->flags)) {
summaryview->deleted--;
- MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED);
+ MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
+ }
MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_COPY);
if (!MSG_IS_MOVE(msginfo->flags)) {
MSG_SET_TMP_FLAGS(msginfo->flags, MSG_MOVE);
@@ -2889,9 +2898,11 @@ static void summary_copy_row_to(SummaryView *summaryview, GtkTreeIter *iter,
GET_MSG_INFO(msginfo, iter);
msginfo->to_folder = to_folder;
- if (MSG_IS_DELETED(msginfo->flags))
+ if (MSG_IS_DELETED(msginfo->flags)) {
summaryview->deleted--;
- MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED);
+ MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
+ }
MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_MOVE);
if (!MSG_IS_COPY(msginfo->flags)) {
MSG_SET_TMP_FLAGS(msginfo->flags, MSG_COPY);
@@ -4254,6 +4265,7 @@ void summary_set_colorlabel(SummaryView *summaryview, guint labelcolor,
MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_CLABEL_FLAG_MASK);
MSG_SET_COLORLABEL_VALUE(msginfo->flags, labelcolor);
+ MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED);
summary_set_row(summaryview, &iter, msginfo);
}