From 92870852c0e00281ef15778753c51c9308844949 Mon Sep 17 00:00:00 2001 From: heliguy4599 Date: Tue, 15 Oct 2024 15:20:04 -0400 Subject: [PATCH] Move keyboard event handler to the main window, instead of individual handlers for pages --- src/main_window/window.py | 7 ++++++- src/packages_page/packages_page.py | 16 ++++++---------- src/snapshot_page/snapshot_page.py | 8 +------- src/user_data_page/user_data_page.py | 8 +------- 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/main_window/window.py b/src/main_window/window.py index 1a6fce6..e500660 100644 --- a/src/main_window/window.py +++ b/src/main_window/window.py @@ -182,13 +182,18 @@ class WarehouseWindow(Adw.ApplicationWindow): self.activate_row(self.shortcut_to_pages[letter]) def key_handler(self, controller, keyval, keycode, state): + page = self.stack.get_visible_child() if keyval == Gdk.KEY_BackSpace or keyval == Gdk.KEY_Delete: - page = self.stack.get_visible_child() try: if page.select_button.get_active(): page.on_backspace_handler() except AttributeError: pass + elif keyval == Gdk.KEY_Escape: + try: + page.on_escape_handler() + except AttributeError: + pass def __init__(self, **kwargs): super().__init__(**kwargs) diff --git a/src/packages_page/packages_page.py b/src/packages_page/packages_page.py index 2d358fe..6682c7c 100644 --- a/src/packages_page/packages_page.py +++ b/src/packages_page/packages_page.py @@ -321,13 +321,12 @@ class PackagesPage(Adw.BreakpointBin): def sort_func(self, row1, row2): return row1.package.info["name"].lower() > row2.package.info["name"].lower() - def key_handler(self, controller, keyval, keycode, state): - if keyval == Gdk.KEY_Escape: - if self.select_button.get_active(): - self.select_button.set_active(False) - elif self.filter_button.get_active(): - self.filter_button.set_active(False) - + def on_escape_handler(self): + if self.select_button.get_active(): + self.select_button.set_active(False) + elif self.filter_button.get_active(): + self.filter_button.set_active(False) + def __init__(self, main_window, **kwargs): super().__init__(**kwargs) @@ -346,10 +345,8 @@ class PackagesPage(Adw.BreakpointBin): self.selected_rows = [] self.current_row_for_properties = None self.on_backspace_handler = self.selection_uninstall - event_controller = Gtk.EventControllerKey() # Apply - self.add_controller(event_controller) self.loading_view.set_content(self.loading_packages) self.packages_list_box.set_filter_func(self.filter_func) self.packages_list_box.set_sort_func(self.sort_func) @@ -358,7 +355,6 @@ class PackagesPage(Adw.BreakpointBin): self.__class__.instance = self # Connections - event_controller.connect("key-pressed", self.key_handler) self.search_entry.connect("search-changed", self.on_invalidate) self.search_bar.set_key_capture_widget(main_window) self.packages_list_box.connect("row-activated", self.row_activate_handler) diff --git a/src/snapshot_page/snapshot_page.py b/src/snapshot_page/snapshot_page.py index d75e8cf..cc1addb 100644 --- a/src/snapshot_page/snapshot_page.py +++ b/src/snapshot_page/snapshot_page.py @@ -525,10 +525,6 @@ class SnapshotPage(Adw.BreakpointBin): case self.trash_snapshots: self.selection_trash_handler() - def key_handler(self, controller, keyval, keycode, state): - if keyval == Gdk.KEY_Escape: - self.select_button.set_active(False) - def __init__(self, main_window, **kwargs): super().__init__(**kwargs) @@ -544,10 +540,9 @@ class SnapshotPage(Adw.BreakpointBin): self.snapshotting_status = LoadingStatus("Initial Title", _("This could take a while"), True, self.on_cancel) self.new_snapshot_dialog = None self.on_backspace_handler = self.selection_trash_handler - event_controller = Gtk.EventControllerKey() + self.on_escape_handler = lambda *_: self.select_button.set_active(False) # Apply - self.add_controller(event_controller) self.search_bar.set_key_capture_widget(HostInfo.main_window) self.loading_view.set_content(LoadingStatus(_("Loading Snapshots"), _("This should only take a moment"))) self.snapshotting_view.set_content(self.snapshotting_status) @@ -556,7 +551,6 @@ class SnapshotPage(Adw.BreakpointBin): self.leftover_listbox.set_sort_func(self.sort_func) # Connections - event_controller.connect("key-pressed", self.key_handler) self.active_listbox.connect("row-activated", self.active_select_handler) self.leftover_listbox.connect("row-activated", self.leftover_select_handler) self.open_button.connect("clicked", self.open_snapshots_folder) diff --git a/src/user_data_page/user_data_page.py b/src/user_data_page/user_data_page.py index b0dd0e8..7b76333 100644 --- a/src/user_data_page/user_data_page.py +++ b/src/user_data_page/user_data_page.py @@ -247,10 +247,6 @@ class UserDataPage(Adw.BreakpointBin): case self.more_trash: self.selection_trash_handler() - def key_handler(self, controller, keyval, keycode, state): - if keyval == Gdk.KEY_Escape: - self.select_button.set_active(False) - def __init__(self, main_window, **kwargs): super().__init__(**kwargs) @@ -270,10 +266,9 @@ class UserDataPage(Adw.BreakpointBin): } self.buttons_to_sort_modes = {} self.on_backspace_handler = self.selection_trash_handler - event_controller = Gtk.EventControllerKey() + self.on_escape_handler = lambda *_: self.select_button.set_active(False) # Apply - self.add_controller(event_controller) for key, button in self.sort_modes_to_buttons.items(): self.buttons_to_sort_modes[button] = key @@ -291,7 +286,6 @@ class UserDataPage(Adw.BreakpointBin): ) # Connections - event_controller.connect("key-pressed", self.key_handler) self.open_button.connect("clicked", self.open_data_folder) self.stack.connect("notify::visible-child", self.view_change_handler) self.select_button.connect("toggled", self.select_toggle_handler)