diff --git a/src/downgrade_window.py b/src/downgrade_window.py index 9ebf9ee..7a18434 100644 --- a/src/downgrade_window.py +++ b/src/downgrade_window.py @@ -23,8 +23,8 @@ class DowngradeWindow(Adw.Window): main_stack = Gtk.Template.Child() outerbox = Gtk.Template.Child() - def key_handler(self, _a, event, _c, _d): - if event == Gdk.KEY_Escape: + def key_handler(self, controller, keyval, keycode, state): + if keyval == Gdk.KEY_Escape or (keyval == Gdk.KEY_w and state == Gdk.ModifierType.CONTROL_MASK): self.close() def selection_handler(self, button, index): diff --git a/src/filter_window.py b/src/filter_window.py index 74bb70e..583db75 100644 --- a/src/filter_window.py +++ b/src/filter_window.py @@ -21,8 +21,8 @@ class FilterWindow(Adw.Window): runtimes_expander = Gtk.Template.Child() reset_button = Gtk.Template.Child() - def key_handler(self, _a, event, _c, _d): - if event == Gdk.KEY_Escape: + def key_handler(self, controller, keyval, keycode, state): + if keyval == Gdk.KEY_Escape or (keyval == Gdk.KEY_w and state == Gdk.ModifierType.CONTROL_MASK): self.close() def gsettings_bool_set(self, key, value): diff --git a/src/orphans_window.py b/src/orphans_window.py index 635a68b..7e8074e 100644 --- a/src/orphans_window.py +++ b/src/orphans_window.py @@ -35,8 +35,8 @@ class OrphansWindow(Adw.Window): no_close_id = 0 is_result = False - def key_handler(self, _a, event, _c, _d): - if event == Gdk.KEY_Escape: + def key_handler(self, controller, keyval, keycode, state): + if keyval == Gdk.KEY_Escape or (keyval == Gdk.KEY_w and state == Gdk.ModifierType.CONTROL_MASK): self.close() def selection_handler(self, widget, dir_name): diff --git a/src/properties_window.py b/src/properties_window.py index d4b189f..0da1c26 100644 --- a/src/properties_window.py +++ b/src/properties_window.py @@ -31,6 +31,10 @@ class PropertiesWindow(Adw.Window): eol_runtime_banner = Gtk.Template.Child() mask_banner = Gtk.Template.Child() + def key_handler(self, controller, keyval, keycode, state): + if keyval == Gdk.KEY_Escape or (keyval == Gdk.KEY_w and state == Gdk.ModifierType.CONTROL_MASK): + self.close() + def copy_item(self, to_copy, to_toast=None): self.get_clipboard().set(to_copy) if to_toast: @@ -206,12 +210,8 @@ class PropertiesWindow(Adw.Window): _("{} is masked and will not be updated").format(self.app_name) ) - def key_handler(_a, event, _c, _d): - if event == Gdk.KEY_Escape: - self.close() - event_controller = Gtk.EventControllerKey() - event_controller.connect("key-pressed", key_handler) + event_controller.connect("key-pressed", self.key_handler) self.add_controller(event_controller) self.generate_upper() diff --git a/src/remotes_window.py b/src/remotes_window.py index d24daf7..8e154b9 100644 --- a/src/remotes_window.py +++ b/src/remotes_window.py @@ -27,9 +27,13 @@ class RemotesWindow(Adw.Window): rows_in_list = [] rows_in_popular_list = [] - def key_handler(self, _a, event, _c, _d): - if event == Gdk.KEY_Escape: + def key_handler(self, controller, keyval, keycode, state): + if keyval == Gdk.KEY_Escape or (keyval == Gdk.KEY_w and state == Gdk.ModifierType.CONTROL_MASK): self.close() + if keyval == Gdk.KEY_o and state == Gdk.ModifierType.CONTROL_MASK: + self.add_file_handler() + if keyval == Gdk.KEY_n and state == Gdk.ModifierType.CONTROL_MASK: + self.add_handler(None) def make_toast(self, text): self.toast_overlay.add_toast(Adw.Toast.new(text)) @@ -665,7 +669,7 @@ class RemotesWindow(Adw.Window): except GLib.GError: pass - def add_file_handler(self, widet): + def add_file_handler(self): filter = Gtk.FileFilter(name=_("Flatpak Repos")) filter.add_suffix("flatpakrepo") filters = Gio.ListStore.new(Gtk.FileFilter) @@ -701,7 +705,7 @@ class RemotesWindow(Adw.Window): self.add_from_file.add_suffix( Gtk.Image.new_from_icon_name("right-large-symbolic") ) - self.add_from_file.connect("activated", self.add_file_handler) + self.add_from_file.connect("activated", lambda *_: self.add_file_handler()) self.custom_remote.add_suffix( Gtk.Image.new_from_icon_name("right-large-symbolic") ) diff --git a/src/search_install_window.py b/src/search_install_window.py index 6788add..9d36d85 100644 --- a/src/search_install_window.py +++ b/src/search_install_window.py @@ -27,6 +27,10 @@ class SearchInstallWindow( is_debug = GLib.environ_getenv(GLib.get_environ(), "G_MESSAGES_DEBUG") == "all" + def key_handler(self, controller, keyval, keycode, state): + if keyval == Gdk.KEY_Escape or (keyval == Gdk.KEY_w and state == Gdk.ModifierType.CONTROL_MASK): + self.close() + def search_response(self, a, b): self.results_list_box.remove_all() print(self.search_results) @@ -120,10 +124,6 @@ class SearchInstallWindow( self.remotes_dropdown.set_popover(remotes_pop) - def key_handler(self, _a, event, _c, _d): - if event == Gdk.KEY_Escape: - self.close() - def __init__(self, parent_window, **kwargs): super().__init__(**kwargs) diff --git a/src/snapshots_window.py b/src/snapshots_window.py index 70a90db..12f0f0a 100644 --- a/src/snapshots_window.py +++ b/src/snapshots_window.py @@ -29,6 +29,10 @@ class SnapshotsWindow(Adw.Window): loading_label = Gtk.Template.Child() action_bar = Gtk.Template.Child() + def key_handler(self, controller, keyval, keycode, state): + if keyval == Gdk.KEY_Escape or (keyval == Gdk.KEY_w and state == Gdk.ModifierType.CONTROL_MASK): + self.close() + def show_list_or_empty(self): try: self.disconnect(self.no_close_id) # Make window able to close @@ -248,10 +252,6 @@ class SnapshotsWindow(Adw.Window): except GLib.GError: self.toast_overlay.add_toast(Adw.Toast.new(_("Could not open folder"))) - def key_handler(self, _a, event, _c, _d): - if event == Gdk.KEY_Escape: - self.close() - def __init__(self, parent_window, flatpak_row, **kwargs): super().__init__(**kwargs) diff --git a/src/window.py b/src/window.py index b82b923..84af4df 100644 --- a/src/window.py +++ b/src/window.py @@ -516,8 +516,10 @@ class WarehouseWindow(Adw.ApplicationWindow): if not widget.get_active(): self.batch_select_all_button.set_active(False) - def batch_key_handler(self, _b, event, _c, _d): - if event == Gdk.KEY_Escape: + def key_handler(self, controller, keyval, keycode, state): + if keyval == Gdk.KEY_w and state == Gdk.ModifierType.CONTROL_MASK: + self.close() + if keyval == Gdk.KEY_Escape: self.batch_mode_button.set_active(False) def batch_actions_enable(self, should_enable): @@ -870,7 +872,7 @@ class WarehouseWindow(Adw.ApplicationWindow): self.reset_filters_button.connect("clicked", lambda *_: self.reset_filters()) self.batch_actions_enable(False) event_controller = Gtk.EventControllerKey() - event_controller.connect("key-pressed", self.batch_key_handler) + event_controller.connect("key-pressed", self.key_handler) self.add_controller(event_controller) self.main_overlay.add_overlay(self.main_progress_bar)