From aab0a6889cb15681be6a87a5c9ad61bab274f5f2 Mon Sep 17 00:00:00 2001 From: eerielili Date: Sat, 19 Jul 2025 19:22:42 +0200 Subject: Add keyboard shortcut to close conversation (#1434) closes #876 Co-authored-by: fiaxh --- main/data/gtk/help-overlay.ui | 6 ++++++ main/src/ui/conversation_titlebar/menu_entry.vala | 7 +------ main/src/ui/conversation_view_controller.vala | 9 +++++++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/main/data/gtk/help-overlay.ui b/main/data/gtk/help-overlay.ui index 92c3d74b..8212f001 100644 --- a/main/data/gtk/help-overlay.ui +++ b/main/data/gtk/help-overlay.ui @@ -49,6 +49,12 @@ Send a file + + + <ctrl>W + Close conversation + + diff --git a/main/src/ui/conversation_titlebar/menu_entry.vala b/main/src/ui/conversation_titlebar/menu_entry.vala index 7a6688ae..ca8c23b3 100644 --- a/main/src/ui/conversation_titlebar/menu_entry.vala +++ b/main/src/ui/conversation_titlebar/menu_entry.vala @@ -18,7 +18,7 @@ class MenuEntry : Plugins.ConversationTitlebarEntry, Object { Menu menu_model = new Menu(); menu_model.append(_("Conversation Details"), "conversation.details"); - menu_model.append(_("Close Conversation"), "conversation.close"); + menu_model.append(_("Close Conversation"), "app.close-current-conversation"); Gtk.PopoverMenu popover_menu = new Gtk.PopoverMenu.from_model(menu_model); button.popover = popover_menu; @@ -29,11 +29,6 @@ class MenuEntry : Plugins.ConversationTitlebarEntry, Object { GLib.Application.get_default().activate_action("open-conversation-details", variant); }); action_group.insert(details_action); - SimpleAction close_action = new SimpleAction("close", null); - close_action.activate.connect((parameter) => { - stream_interactor.get_module(ConversationManager.IDENTITY).close_conversation(conversation); - }); - action_group.insert(close_action); button.insert_action_group("conversation", action_group); } diff --git a/main/src/ui/conversation_view_controller.vala b/main/src/ui/conversation_view_controller.vala index 5b768271..21459669 100644 --- a/main/src/ui/conversation_view_controller.vala +++ b/main/src/ui/conversation_view_controller.vala @@ -23,6 +23,8 @@ public class ConversationViewController : Object { private StreamInteractor stream_interactor; private Conversation? conversation; + private const string[] KEY_COMBINATION_CLOSE_CONVERSATION = {"W", null}; + public ConversationViewController(ConversationView view, ConversationTitlebar titlebar, StreamInteractor stream_interactor) { this.view = view; this.titlebar = titlebar; @@ -112,6 +114,13 @@ public class ConversationViewController : Object { return false; })); ((Gtk.Window)view.get_root()).add_shortcut(shortcut); + + SimpleAction close_conversation_action = new SimpleAction("close-current-conversation", null); + close_conversation_action.activate.connect(() => { + stream_interactor.get_module(ConversationManager.IDENTITY).close_conversation(conversation); + }); + app.add_action(close_conversation_action); + app.set_accels_for_action("app.close-current-conversation", KEY_COMBINATION_CLOSE_CONVERSATION); } public void select_conversation(Conversation? conversation, bool default_initialize_conversation) { -- cgit v1.3