From 8a86bd2ad7409142417bd6b12469c1e00a9b4901 Mon Sep 17 00:00:00 2001 From: "Kai A. Hiller" Date: Fri, 9 Jul 2021 19:03:22 +0200 Subject: [PATCH] content: Unselect room on ESC --- data/resources/ui/shortcuts.ui | 7 ++++++- src/application.rs | 1 + src/session/mod.rs | 2 +- src/window.rs | 7 +++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/data/resources/ui/shortcuts.ui b/data/resources/ui/shortcuts.ui index e1a75664..33a33378 100644 --- a/data/resources/ui/shortcuts.ui +++ b/data/resources/ui/shortcuts.ui @@ -27,10 +27,15 @@ win.toggle-room-search + + + Close Room + win.close-room + + - diff --git a/src/application.rs b/src/application.rs index f8775c62..d7039ccb 100644 --- a/src/application.rs +++ b/src/application.rs @@ -125,6 +125,7 @@ impl Application { self.set_accels_for_action("app.quit", &["q"]); self.set_accels_for_action("win.show-help-overlay", &["question"]); self.set_accels_for_action("win.toggle-room-search", &["k"]); + self.set_accels_for_action("win.close-room", &["Escape"]); } fn setup_css(&self) { diff --git a/src/session/mod.rs b/src/session/mod.rs index cf0d36ef..92c7c87e 100644 --- a/src/session/mod.rs +++ b/src/session/mod.rs @@ -202,7 +202,7 @@ impl Session { priv_.selected_room.borrow().clone() } - fn set_selected_room(&self, selected_room: Option) { + pub fn set_selected_room(&self, selected_room: Option) { let priv_ = imp::Session::from_instance(self); if self.selected_room() == selected_room { diff --git a/src/window.rs b/src/window.rs index 8ec431ae..266d0b07 100644 --- a/src/window.rs +++ b/src/window.rs @@ -1,4 +1,5 @@ use crate::config::{APP_ID, PROFILE}; +use crate::gio::SimpleAction; use crate::secret; use crate::Application; use crate::Login; @@ -115,6 +116,12 @@ impl Window { "search-mode-enabled", ); self.add_action(&room_search_toggle_action); + + let close_room_action = SimpleAction::new("close-room", None); + close_room_action.connect_activate(clone!(@weak session => move |_, _| { + session.set_selected_room(None); + })); + self.add_action(&close_room_action); } fn restore_sessions(&self) {