Allow clicking entire rows to select them, instead of opening subpages

This commit is contained in:
Heliguy
2024-10-27 17:30:06 -04:00
parent e676e11cce
commit 5ea61ad590
2 changed files with 32 additions and 4 deletions

View File

@@ -53,6 +53,7 @@ class PackagesPage(Adw.BreakpointBin):
# This must be set to the created object from within the class's __init__ method
instance = None
page_name = "packages"
last_activated_row = None
def set_status(self, to_set):
@@ -198,6 +199,11 @@ class PackagesPage(Adw.BreakpointBin):
self.scrolled_window.set_vadjustment(Gtk.Adjustment.new(0,0,0,0,0,0)) # Scroll list to top
def row_activate_handler(self, list_box, row):
if self.select_button.get_active():
row.check_button.set_active(not row.check_button.get_active())
return
self.last_activated_row = row
self.properties_page.set_properties(row.package)
self.properties_page.nav_view.pop()
self.packages_split.set_show_content(True)
@@ -213,6 +219,12 @@ class PackagesPage(Adw.BreakpointBin):
return True
def set_selection_mode(self, is_enabled):
if is_enabled:
self.packages_list_box.set_selection_mode(Gtk.SelectionMode.NONE)
else:
self.packages_list_box.set_selection_mode(Gtk.SelectionMode.SINGLE)
self.packages_list_box.select_row(self.last_activated_row)
i = 0
while row := self.packages_list_box.get_row_at_index(i):
i += 1
@@ -284,6 +296,7 @@ class PackagesPage(Adw.BreakpointBin):
dialog.present(self.main_window)
def start_loading(self):
self.last_activated_row = None
self.packages_navpage.set_title(_("Packages"))
self.select_button.set_active(False)
self.set_status(self.loading_packages)

View File

@@ -87,6 +87,7 @@ class SnapshotPage(Adw.BreakpointBin):
instance = None
page_name = "snapshots"
is_trash_dialog_open = False
last_activated_row = None
def sort_snapshots(self, *args):
self.active_snapshot_paks.clear()
@@ -139,8 +140,6 @@ class SnapshotPage(Adw.BreakpointBin):
if len(self.active_snapshot_paks) > 0:
self.active_box.set_visible(True)
# first_row = self.active_listbox.get_row_at_index(0)
# self.active_listbox.select_row(first_row)
else:
self.active_box.set_visible(False)
@@ -154,17 +153,25 @@ class SnapshotPage(Adw.BreakpointBin):
self.leftover_box.set_visible(True)
if len(self.active_snapshot_paks) == 0:
self.stack.set_visible_child(self.scrolled_window)
# first_row = self.leftover_listbox.get_row_at_index(0)
# self.leftover_listbox.select_row(first_row)
else:
self.leftover_box.set_visible(False)
def active_select_handler(self, listbox, row, should_show_content=True, refresh=False):
if row.check_button.get_visible():
row.check_button.set_active(not row.check_button.get_active())
return
self.last_activated_row = row
self.leftover_listbox.select_row(None)
self.list_page.set_snapshots(row.package, refresh)
self.split_view.set_show_content(should_show_content)
def leftover_select_handler(self, listbox, row, should_show_content=True, refresh=False):
if row.check_button.get_visible():
row.check_button.set_active(not row.check_button.get_active())
return
self.last_activated_row = row
self.active_listbox.select_row(None)
self.list_page.set_snapshots(row.folder, refresh)
self.split_view.set_show_content(should_show_content)
@@ -193,6 +200,7 @@ class SnapshotPage(Adw.BreakpointBin):
self.toast_overlay.add_toast(toast)
def start_loading(self):
self.last_activated_row = None
self.search_button.set_active(False)
self.workers.clear()
self.select_button.set_active(False)
@@ -298,6 +306,13 @@ class SnapshotPage(Adw.BreakpointBin):
def set_selection_mode(self, *args):
enable = self.select_button.get_active()
self.active_listbox.set_selection_mode(Gtk.SelectionMode.NONE if enable else Gtk.SelectionMode.SINGLE)
self.leftover_listbox.set_selection_mode(Gtk.SelectionMode.NONE if enable else Gtk.SelectionMode.SINGLE)
if self.last_activated_row in self.active_listbox:
self.active_listbox.select_row(self.last_activated_row)
elif self.last_activated_row in self.leftover_listbox:
self.leftover_listbox.select_row(self.last_activated_row)
i = 0
while row := self.active_listbox.get_row_at_index(i):
i += 1