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
+
+
+
-
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) {