mirror of
https://github.com/morgan9e/warehouse
synced 2026-04-14 00:04:08 +09:00
Move keyboard event handler to the main window, instead of individual handlers for pages
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user