aboutsummaryrefslogtreecommitdiff
path: root/src/folderview.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-25 08:25:41 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-25 08:25:41 +0000
commit88fe3b7e37244b83076c243741e2c71338d37360 (patch)
tree375da95ed456ed7e4487222905047e9b0de07922 /src/folderview.c
parent34a24148d4315d15e092760c983ff45115a32e00 (diff)
exclude trash on recursive search.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@928 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/folderview.c')
-rw-r--r--src/folderview.c32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/folderview.c b/src/folderview.c
index 5a903324..2ede96d2 100644
--- a/src/folderview.c
+++ b/src/folderview.c
@@ -2756,12 +2756,32 @@ static void folderview_search_cb(FolderView *folderview, guint action,
FolderItem *item;
item = folderview_get_selected_item(folderview);
- if (item) {
- if (item->stype == F_VIRTUAL)
- prefs_search_folder_open(item);
- else
- summary_search(item);
- }
+ if (!item)
+ return;
+
+ if (item->stype == F_VIRTUAL) {
+ GtkTreePath *sel_path, *open_path;
+
+ sel_path = gtk_tree_row_reference_get_path
+ (folderview->selected);
+ open_path = gtk_tree_row_reference_get_path(folderview->opened);
+
+ if (prefs_search_folder_open(item)) {
+ if (sel_path && open_path &&
+ gtk_tree_path_compare(open_path, sel_path) == 0) {
+ GtkTreeRowReference *row;
+ row = gtk_tree_row_reference_copy(folderview->opened);
+ folderview_unselect(folderview);
+ summary_clear_all(folderview->summaryview);
+ folderview_select_row_ref(folderview, row);
+ gtk_tree_row_reference_free(row);
+ }
+ }
+
+ gtk_tree_path_free(open_path);
+ gtk_tree_path_free(sel_path);
+ } else
+ summary_search(item);
}
static void folderview_property_cb(FolderView *folderview, guint action,