[geary/mjog/1193-conversation-buttons-resize-race: 11/11] client: Ensure all folder-based conversation actions get updated
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/mjog/1193-conversation-buttons-resize-race: 11/11] client: Ensure all folder-based conversation actions get updated
- Date: Sun, 11 Apr 2021 06:52:45 +0000 (UTC)
commit 7072aaefdabc14a08491eaa282ce4d484f92b2ea
Author: Michael Gratton <mike vee net>
Date: Sun Apr 11 16:51:15 2021 +1000
client: Ensure all folder-based conversation actions get updated
.../application/application-main-window.vala | 67 ++++++++++++++--------
.../components-conversation-actions.vala | 12 +++-
2 files changed, 53 insertions(+), 26 deletions(-)
---
diff --git a/src/client/application/application-main-window.vala
b/src/client/application/application-main-window.vala
index 3af251db7..d30180dc2 100644
--- a/src/client/application/application-main-window.vala
+++ b/src/client/application/application-main-window.vala
@@ -420,6 +420,9 @@ public class Application.MainWindow :
[GtkChild] private unowned Gtk.Overlay overlay;
+ private Components.ConversationActions[] folder_conversation_actions = {};
+ private FolderPopover[] folder_popovers = {};
+
private Components.InfoBarStack info_bars =
new Components.InfoBarStack(SINGLE);
@@ -770,12 +773,9 @@ public class Application.MainWindow :
// selected model.
if (this.selected_folder != null) {
- this.conversation_actions.copy_folder_menu.enable_disable_folder(
- this.selected_folder, true
- );
- this.conversation_actions.move_folder_menu.enable_disable_folder(
- this.selected_folder, true
- );
+ foreach (var menu in this.folder_popovers) {
+ menu.enable_disable_folder(this.selected_folder, true);
+ }
this.progress_monitor.remove(this.selected_folder.opening_monitor);
this.selected_folder.properties.notify.disconnect(update_headerbar);
@@ -856,12 +856,9 @@ public class Application.MainWindow :
this.conversation_list_view.set_model(conversations_model);
// disable copy/move to the new folder
- this.conversation_actions.copy_folder_menu.enable_disable_folder(
- to_select, false
- );
- this.conversation_actions.move_folder_menu.enable_disable_folder(
- to_select, false
- );
+ foreach (var menu in this.folder_popovers) {
+ menu.enable_disable_folder(to_select, false);
+ }
yield open_conversation_monitor(this.conversations, cancellable);
yield this.controller.process_pending_composers();
@@ -1176,8 +1173,9 @@ public class Application.MainWindow :
foreach (var context in to_add) {
this.folder_list.add_folder(context);
if (context.folder.account == this.selected_account) {
- this.conversation_actions.copy_folder_menu.add_folder(context.folder);
- this.conversation_actions.move_folder_menu.add_folder(context.folder);
+ foreach (var menu in this.folder_popovers) {
+ menu.add_folder(context.folder);
+ }
}
context.folder.use_changed.connect(on_use_changed);
}
@@ -1197,8 +1195,9 @@ public class Application.MainWindow :
folder.use_changed.disconnect(on_use_changed);
if (folder.account == this.selected_account) {
- this.conversation_actions.copy_folder_menu.remove_folder(folder);
- this.conversation_actions.move_folder_menu.remove_folder(folder);
+ foreach (var menu in this.folder_popovers) {
+ menu.remove_folder(folder);
+ }
}
this.folder_list.remove_folder(context);
}
@@ -1348,7 +1347,6 @@ public class Application.MainWindow :
this.conversation_size_group.add_widget(this.conversation_viewer);
this.conversation_viewer_box.add(this.conversation_viewer);
-
// Main toolbar
this.main_toolbar = new Components.MainToolbar(config);
this.main_toolbar.add_to_size_groups(this.folder_size_group,
@@ -1392,6 +1390,21 @@ public class Application.MainWindow :
this.spinner.set_progress_monitor(progress_monitor);
this.status_bar.add(this.spinner);
this.status_bar.show_all();
+
+ this.folder_conversation_actions = {
+ this.main_toolbar.full_actions,
+ this.main_toolbar.compact_actions,
+ this.conversation_list_actions
+ };
+ foreach (var actions in folder_conversation_actions) {
+ var move = actions.move_folder_menu;
+ this.folder_popovers += move;
+ move.folder_selected.connect(on_move_conversation);
+
+ var copy = actions.copy_folder_menu;
+ this.folder_popovers += copy;
+ copy.folder_selected.connect(on_copy_conversation);
+ }
}
/** {@inheritDoc} */
@@ -1559,17 +1572,19 @@ public class Application.MainWindow :
private void select_account(Geary.Account? account) {
if (this.selected_account != account) {
if (this.selected_account != null) {
- this.conversation_actions.copy_folder_menu.clear();
- this.conversation_actions.move_folder_menu.clear();
+ foreach (var menu in this.folder_popovers) {
+ menu.clear();
+ }
}
this.selected_account = account;
this.search_bar.set_account(account);
if (account != null) {
- foreach (Geary.Folder folder in account.list_folders()) {
- this.conversation_actions.copy_folder_menu.add_folder(folder);
- this.conversation_actions.move_folder_menu.add_folder(folder);
+ foreach (var menu in this.folder_popovers) {
+ foreach (var folder in account.list_folders()) {
+ menu.add_folder(folder);
+ }
}
}
@@ -1807,14 +1822,18 @@ public class Application.MainWindow :
bool move_enabled = (
sensitive && (selected_folder is Geary.FolderSupport.Move)
);
- this.conversation_actions.move_message_button.set_sensitive(move_enabled);
get_window_action(ACTION_SHOW_MOVE_MENU).set_enabled(move_enabled);
+ foreach (var actions in this.folder_conversation_actions) {
+ actions.set_move_sensitive(move_enabled);
+ }
bool copy_enabled = (
sensitive && (selected_folder is Geary.FolderSupport.Copy)
);
- this.conversation_actions.copy_message_button.set_sensitive(copy_enabled);
get_window_action(ACTION_SHOW_COPY_MENU).set_enabled(move_enabled);
+ foreach (var actions in this.folder_conversation_actions) {
+ actions.set_copy_sensitive(copy_enabled);
+ }
get_window_action(ACTION_ARCHIVE_CONVERSATION).set_enabled(
sensitive && (selected_folder is Geary.FolderSupport.Archive)
diff --git a/src/client/components/components-conversation-actions.vala
b/src/client/components/components-conversation-actions.vala
index b52416ee7..9dacc8d5f 100644
--- a/src/client/components/components-conversation-actions.vala
+++ b/src/client/components/components-conversation-actions.vala
@@ -70,14 +70,22 @@ public class Components.ConversationActions : Gtk.Grid {
}
}
- public void show_copy_menu() {
- this.copy_message_button.clicked();
+ public void set_move_sensitive(bool is_sensitive) {
+ this.move_message_button.sensitive = is_sensitive;
}
public void show_move_menu() {
this.move_message_button.clicked();
}
+ public void set_copy_sensitive(bool is_sensitive) {
+ this.copy_message_button.sensitive = is_sensitive;
+ }
+
+ public void show_copy_menu() {
+ this.copy_message_button.clicked();
+ }
+
public void update_trash_button(bool show_trash) {
this.show_trash_button = show_trash;
update_conversation_buttons();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]