[geary/wip/search-fixes: 28/29] Fix search including results from spam, trash and drafts
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/wip/search-fixes: 28/29] Fix search including results from spam, trash and drafts
- Date: Tue, 13 Aug 2019 11:28:59 +0000 (UTC)
commit ee4e240476bda294e9cb23e1ca826ee68e371c61
Author: Michael Gratton <mike vee net>
Date: Tue Aug 6 23:18:09 2019 +1000
Fix search including results from spam, trash and drafts
ImapDB.SearchFolder wasn't paying attention to the
Account.folders_special_type signal, hence folders getting promoted to
these were missed.
.../imap-db/search/imap-db-search-folder.vala | 26 +++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
---
diff --git a/src/engine/imap-db/search/imap-db-search-folder.vala
b/src/engine/imap-db/search/imap-db-search-folder.vala
index b01d2575..cfd1cf89 100644
--- a/src/engine/imap-db/search/imap-db-search-folder.vala
+++ b/src/engine/imap-db/search/imap-db-search-folder.vala
@@ -13,7 +13,7 @@ private class Geary.ImapDB.SearchFolder : Geary.SearchFolder, Geary.FolderSuppor
/** The canonical name of the search folder. */
public const string MAGIC_BASENAME = "$GearySearchFolder$";
- private const Geary.SpecialFolderType[] exclude_types = {
+ private const Geary.SpecialFolderType[] EXCLUDE_TYPES = {
Geary.SpecialFolderType.SPAM,
Geary.SpecialFolderType.TRASH,
Geary.SpecialFolderType.DRAFTS,
@@ -34,6 +34,7 @@ private class Geary.ImapDB.SearchFolder : Geary.SearchFolder, Geary.FolderSuppor
);
account.folders_available_unavailable.connect(on_folders_available_unavailable);
+ account.folders_special_type.connect(on_folders_special_type);
account.email_locally_complete.connect(on_email_locally_complete);
account.email_removed.connect(on_account_email_removed);
@@ -46,6 +47,7 @@ private class Geary.ImapDB.SearchFolder : Geary.SearchFolder, Geary.FolderSuppor
~SearchFolder() {
account.folders_available_unavailable.disconnect(on_folders_available_unavailable);
+ account.folders_special_type.disconnect(on_folders_special_type);
account.email_locally_complete.disconnect(on_email_locally_complete);
account.email_removed.disconnect(on_account_email_removed);
}
@@ -55,7 +57,7 @@ private class Geary.ImapDB.SearchFolder : Geary.SearchFolder, Geary.FolderSuppor
if (available != null) {
// Exclude it from searching if it's got the right special type.
foreach(Geary.Folder folder in Geary.traverse<Geary.Folder>(available)
- .filter(f => f.special_folder_type in exclude_types))
+ .filter(f => f.special_folder_type in EXCLUDE_TYPES))
exclude_folder(folder);
}
}
@@ -382,17 +384,31 @@ private class Geary.ImapDB.SearchFolder : Geary.SearchFolder, Geary.FolderSuppor
return yield account.get_search_matches_async(search_query, ids, cancellable);
}
+ private void include_folder(Geary.Folder folder) {
+ this.exclude_folders.remove(folder.path);
+ }
+
private void exclude_folder(Geary.Folder folder) {
- exclude_folders.add(folder.path);
+ this.exclude_folders.add(folder.path);
}
private void exclude_orphan_emails() {
- exclude_folders.add(null);
+ this.exclude_folders.add(null);
}
private void clear_search_results() {
search_results = new Gee.TreeSet<ImapDB.SearchEmailIdentifier>(
ImapDB.SearchEmailIdentifier.compare_descending);
}
-}
+ private void on_folders_special_type(Gee.Collection<Geary.Folder> folders) {
+ foreach (Geary.Folder folder in folders) {
+ if (folder.special_folder_type in EXCLUDE_TYPES) {
+ exclude_folder(folder);
+ } else {
+ include_folder(folder);
+ }
+ }
+ }
+
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]