diff --git a/data/styles/SearchPage.scss b/data/styles/SearchPage.scss index 1157dd5d5..de58382d1 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 74bcbef90..d518fd823 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,25 @@ 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 + grid_view = new Gtk.GridView (selection_model, factory) { + halign = CENTER, + max_columns = 2, + single_click_activate = true + }; + + scrolled = new Gtk.ScrolledWindow () { + child = grid_view, + hscrollbar_policy = NEVER }; stack = new Gtk.Stack () { vhomogeneous = false }; stack.add_child (alert_view); - stack.add_child (list_view); - - var clamp = new Adw.Clamp () { - child = stack, - maximum_size = 800, - tightening_threshold = 800 - }; - - var scrolled = new Gtk.ScrolledWindow () { - child = clamp, - hscrollbar_policy = NEVER - }; + stack.add_child (scrolled); var toolbarview = new Adw.ToolbarView () { - content = scrolled + content = stack }; toolbarview.add_top_bar (headerbar); @@ -121,7 +116,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 +164,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 98b02ab7a..2857f9f45 100644 --- a/src/Widgets/SearchListItem.vala +++ b/src/Widgets/SearchListItem.vala @@ -32,13 +32,19 @@ public class AppCenter.SearchListItem : Gtk.Grid { app_icon = new AppIcon (48); name_label = new Gtk.Label (null) { + ellipsize = END, + max_width_chars = 30, 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, + width_chars = 20, + max_width_chars = 35, valign = START, wrap = true, xalign = 0