From b5975eab52076f6262d37b00680f6a39553a9166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Sat, 30 Aug 2025 09:45:42 -0700 Subject: [PATCH 1/2] SearchView: use GridView --- src/Views/SearchView.vala | 34 ++++++++++++++++----------------- src/Widgets/SearchListItem.vala | 5 ++++- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/Views/SearchView.vala b/src/Views/SearchView.vala index 74bcbef90f..bfbb051c94 100644 --- a/src/Views/SearchView.vala +++ b/src/Views/SearchView.vala @@ -28,8 +28,9 @@ public class AppCenter.SearchView : Adw.NavigationPage { public bool mimetype { get; set; default = false; } private AppCenterCore.SearchEngine search_engine; - private Gtk.ListView list_view; + private Gtk.GridView grid_view; private Gtk.NoSelection selection_model; + private Gtk.ScrolledWindow scrolled; private Gtk.SearchEntry search_entry; private Gtk.Stack stack; private Granite.Placeholder alert_view; @@ -72,31 +73,30 @@ public class AppCenter.SearchView : Adw.NavigationPage { var factory = new Gtk.SignalListItemFactory (); - list_view = new Gtk.ListView (selection_model, factory) { - single_click_activate = true, - hexpand = true, - vexpand = true - }; - - stack = new Gtk.Stack () { - vhomogeneous = false + grid_view = new Gtk.GridView (selection_model, factory) { + max_columns = 2, + single_click_activate = true }; - stack.add_child (alert_view); - stack.add_child (list_view); var clamp = new Adw.Clamp () { - child = stack, + child = grid_view, maximum_size = 800, tightening_threshold = 800 }; - var scrolled = new Gtk.ScrolledWindow () { + scrolled = new Gtk.ScrolledWindow () { child = clamp, hscrollbar_policy = NEVER }; + stack = new Gtk.Stack () { + vhomogeneous = false + }; + stack.add_child (alert_view); + stack.add_child (scrolled); + var toolbarview = new Adw.ToolbarView () { - content = scrolled + content = stack }; toolbarview.add_top_bar (headerbar); @@ -121,7 +121,7 @@ public class AppCenter.SearchView : Adw.NavigationPage { ((SearchListItem) list_item.child).package = (AppCenterCore.Package) list_item.item; }); - list_view.activate.connect ((index) => { + grid_view.activate.connect ((index) => { show_app ((AppCenterCore.Package) selection_model.get_item (index)); }); @@ -169,10 +169,10 @@ public class AppCenter.SearchView : Adw.NavigationPage { } private void on_items_changed () { - list_view.scroll_to (0, NONE, null); + grid_view.scroll_to (0, NONE, null); if (selection_model.n_items > 0) { - stack.visible_child = list_view; + stack.visible_child = scrolled; } else { stack.visible_child = alert_view; } diff --git a/src/Widgets/SearchListItem.vala b/src/Widgets/SearchListItem.vala index 98b02ab7a8..1ca43aee8b 100644 --- a/src/Widgets/SearchListItem.vala +++ b/src/Widgets/SearchListItem.vala @@ -32,13 +32,16 @@ public class AppCenter.SearchListItem : Gtk.Grid { app_icon = new AppIcon (48); name_label = new Gtk.Label (null) { + ellipsize = END, valign = END, - wrap = true, xalign = 0 }; name_label.add_css_class (Granite.STYLE_CLASS_H3_LABEL); summary_label = new Gtk.Label (null) { + ellipsize = END, + hexpand = true, + lines = 2, valign = START, wrap = true, xalign = 0 From 4fcaee86440ea2b453287aed37f9001717904d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Tue, 2 Sep 2025 13:21:11 -0700 Subject: [PATCH 2/2] Fix spacing issues --- data/styles/SearchPage.scss | 6 ++++-- src/Views/SearchView.vala | 9 ++------- src/Widgets/SearchListItem.vala | 3 +++ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/data/styles/SearchPage.scss b/data/styles/SearchPage.scss index 1157dd5d54..de58382d1d 100644 --- a/data/styles/SearchPage.scss +++ b/data/styles/SearchPage.scss @@ -1,5 +1,7 @@ -navigation-view-page.search stack.large row { - border-radius: 0.25em; +navigation-view-page.search { + gridview { + border-spacing: 1em 2em; + } } search-list-item { diff --git a/src/Views/SearchView.vala b/src/Views/SearchView.vala index bfbb051c94..d518fd8235 100644 --- a/src/Views/SearchView.vala +++ b/src/Views/SearchView.vala @@ -74,18 +74,13 @@ public class AppCenter.SearchView : Adw.NavigationPage { var factory = new Gtk.SignalListItemFactory (); grid_view = new Gtk.GridView (selection_model, factory) { + halign = CENTER, max_columns = 2, single_click_activate = true }; - var clamp = new Adw.Clamp () { - child = grid_view, - maximum_size = 800, - tightening_threshold = 800 - }; - scrolled = new Gtk.ScrolledWindow () { - child = clamp, + child = grid_view, hscrollbar_policy = NEVER }; diff --git a/src/Widgets/SearchListItem.vala b/src/Widgets/SearchListItem.vala index 1ca43aee8b..2857f9f45b 100644 --- a/src/Widgets/SearchListItem.vala +++ b/src/Widgets/SearchListItem.vala @@ -33,6 +33,7 @@ public class AppCenter.SearchListItem : Gtk.Grid { name_label = new Gtk.Label (null) { ellipsize = END, + max_width_chars = 30, valign = END, xalign = 0 }; @@ -42,6 +43,8 @@ public class AppCenter.SearchListItem : Gtk.Grid { ellipsize = END, hexpand = true, lines = 2, + width_chars = 20, + max_width_chars = 35, valign = START, wrap = true, xalign = 0