Move keyboard event handler to the main window, instead of individual handlers for pages

This commit is contained in:
heliguy4599
2024-10-15 15:20:04 -04:00
parent 67c2b9bd90
commit 92870852c0
4 changed files with 14 additions and 25 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)