client: Fix handling of 'mark messages' menu
- Replace unused show-mark-menu action - Remove compact actions from conversation actions (not useful as only response buttons are enabled) - Do not update trash button for compact actions (same reason as above) - Add missing this for accessing some properties (Geary Vala Coding Conventions)
This commit is contained in:
parent
f583378b7d
commit
7aa950deed
2 changed files with 28 additions and 13 deletions
|
|
@ -27,7 +27,6 @@ public class Application.MainWindow :
|
|||
public const string ACTION_SEARCH = "search";
|
||||
public const string ACTION_SELECT_INBOX = "select-inbox";
|
||||
public const string ACTION_SHOW_COPY_MENU = "show-copy-menu";
|
||||
public const string ACTION_SHOW_MARK_MENU = "show-mark-menu";
|
||||
public const string ACTION_SHOW_MOVE_MENU = "show-move-menu";
|
||||
public const string ACTION_TOGGLE_JUNK = "toggle-conversation-junk";
|
||||
public const string ACTION_TRASH_CONVERSATION = "trash-conversation";
|
||||
|
|
@ -61,7 +60,6 @@ public class Application.MainWindow :
|
|||
{ ACTION_CONVERSATION_UP, on_conversation_up },
|
||||
{ ACTION_CONVERSATION_DOWN, on_conversation_down },
|
||||
// Message marking actions
|
||||
{ ACTION_SHOW_MARK_MENU, on_show_mark_menu },
|
||||
{ ACTION_MARK_AS_READ, on_mark_as_read },
|
||||
{ ACTION_MARK_AS_UNREAD, on_mark_as_unread },
|
||||
{ ACTION_MARK_AS_STARRED, on_mark_as_starred },
|
||||
|
|
@ -673,6 +671,10 @@ public class Application.MainWindow :
|
|||
this.cert_problem_infobar.get_action_area().add(cert_retry);
|
||||
|
||||
this.conversation_list_view.grab_focus();
|
||||
|
||||
foreach (var actions in this.folder_conversation_actions) {
|
||||
actions.mark_message_button_toggled.connect(on_show_mark_menu);
|
||||
}
|
||||
}
|
||||
|
||||
~MainWindow() {
|
||||
|
|
@ -1399,10 +1401,9 @@ public class Application.MainWindow :
|
|||
|
||||
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) {
|
||||
foreach (var actions in this.folder_conversation_actions) {
|
||||
var move = actions.move_folder_menu;
|
||||
this.folder_popovers += move;
|
||||
move.folder_selected.connect(on_move_conversation);
|
||||
|
|
@ -1827,7 +1828,7 @@ public class Application.MainWindow :
|
|||
get_window_action(ACTION_FORWARD_CONVERSATION).set_enabled(reply_sensitive);
|
||||
|
||||
bool move_enabled = (
|
||||
sensitive && (selected_folder is Geary.FolderSupport.Move)
|
||||
sensitive && (this.selected_folder is Geary.FolderSupport.Move)
|
||||
);
|
||||
get_window_action(ACTION_SHOW_MOVE_MENU).set_enabled(move_enabled);
|
||||
foreach (var actions in this.folder_conversation_actions) {
|
||||
|
|
@ -1835,21 +1836,28 @@ public class Application.MainWindow :
|
|||
}
|
||||
|
||||
bool copy_enabled = (
|
||||
sensitive && (selected_folder is Geary.FolderSupport.Copy)
|
||||
sensitive && (this.selected_folder is Geary.FolderSupport.Copy)
|
||||
);
|
||||
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);
|
||||
}
|
||||
|
||||
bool mark_enabled = (
|
||||
sensitive && (this.selected_folder is Geary.FolderSupport.Mark)
|
||||
);
|
||||
foreach (var actions in this.folder_conversation_actions) {
|
||||
actions.set_mark_sensitive(mark_enabled);
|
||||
}
|
||||
|
||||
get_window_action(ACTION_ARCHIVE_CONVERSATION).set_enabled(
|
||||
sensitive && (selected_folder is Geary.FolderSupport.Archive)
|
||||
sensitive && (this.selected_folder is Geary.FolderSupport.Archive)
|
||||
);
|
||||
get_window_action(ACTION_TRASH_CONVERSATION).set_enabled(
|
||||
sensitive && this.selected_folder_supports_trash
|
||||
);
|
||||
get_window_action(ACTION_DELETE_CONVERSATION).set_enabled(
|
||||
sensitive && (selected_folder is Geary.FolderSupport.Remove)
|
||||
sensitive && (this.selected_folder is Geary.FolderSupport.Remove)
|
||||
);
|
||||
|
||||
switch (count) {
|
||||
|
|
@ -1876,7 +1884,6 @@ public class Application.MainWindow :
|
|||
);
|
||||
this.conversation_list_actions.update_trash_button(show_trash);
|
||||
this.main_toolbar.full_actions.update_trash_button(show_trash);
|
||||
this.main_toolbar.compact_actions.update_trash_button(show_trash);
|
||||
}
|
||||
|
||||
private async void update_context_dependent_actions(bool sensitive) {
|
||||
|
|
@ -1915,10 +1922,6 @@ public class Application.MainWindow :
|
|||
supported_operations.add_all(selected_operations.get_values());
|
||||
}
|
||||
|
||||
get_window_action(ACTION_SHOW_MARK_MENU).set_enabled(
|
||||
sensitive &&
|
||||
(typeof(Geary.FolderSupport.Mark) in supported_operations)
|
||||
);
|
||||
get_window_action(ACTION_SHOW_COPY_MENU).set_enabled(
|
||||
sensitive &&
|
||||
(supported_operations.contains(typeof(Geary.FolderSupport.Copy)))
|
||||
|
|
|
|||
|
|
@ -60,6 +60,11 @@ public class Components.ConversationActions : Gtk.Box {
|
|||
this.copy_message_button.popover = copy_folder_menu;
|
||||
this.move_message_button.popover = move_folder_menu;
|
||||
|
||||
this.mark_message_button.toggled.connect((button) => {
|
||||
if (button.active)
|
||||
mark_message_button_toggled();
|
||||
});
|
||||
|
||||
this.response_buttons.set_visible(this.show_response_actions);
|
||||
this.mark_copy_move_buttons.set_visible(this.show_conversation_actions);
|
||||
this.archive_trash_delete_buttons.set_visible(this.show_conversation_actions);
|
||||
|
|
@ -82,6 +87,10 @@ public class Components.ConversationActions : Gtk.Box {
|
|||
this.copy_message_button.sensitive = is_sensitive;
|
||||
}
|
||||
|
||||
public void set_mark_sensitive(bool is_sensitive) {
|
||||
this.mark_message_button.sensitive = is_sensitive;
|
||||
}
|
||||
|
||||
public void show_copy_menu() {
|
||||
this.copy_message_button.clicked();
|
||||
}
|
||||
|
|
@ -91,6 +100,9 @@ public class Components.ConversationActions : Gtk.Box {
|
|||
update_conversation_buttons();
|
||||
}
|
||||
|
||||
/** Fired when the user toggles the mark message button. */
|
||||
public signal void mark_message_button_toggled();
|
||||
|
||||
/** Updates tooltip text depending on number of conversations selected. */
|
||||
private void update_conversation_buttons() {
|
||||
this.mark_message_button.tooltip_text = ngettext(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue