Fit three columns of search results
And center labels vertically that have no search matching text. https://bugzilla.gnome.org/show_bug.cgi?id=673869
This commit is contained in:
parent
620e70113c
commit
796d4ebafa
2 changed files with 19 additions and 4 deletions
|
@ -595,14 +595,18 @@ setup_search (GnomeControlCenter *shell)
|
||||||
priv->search_view = search_view = cc_shell_item_view_new ();
|
priv->search_view = search_view = cc_shell_item_view_new ();
|
||||||
gtk_icon_view_set_item_orientation (GTK_ICON_VIEW (search_view),
|
gtk_icon_view_set_item_orientation (GTK_ICON_VIEW (search_view),
|
||||||
GTK_ORIENTATION_HORIZONTAL);
|
GTK_ORIENTATION_HORIZONTAL);
|
||||||
gtk_icon_view_set_spacing (GTK_ICON_VIEW (search_view), 6);
|
gtk_icon_view_set_spacing (GTK_ICON_VIEW (search_view), 0);
|
||||||
gtk_icon_view_set_margin (GTK_ICON_VIEW (search_view), 12);
|
gtk_icon_view_set_column_spacing (GTK_ICON_VIEW (search_view), 20);
|
||||||
|
gtk_icon_view_set_row_spacing (GTK_ICON_VIEW (search_view), 20);
|
||||||
|
gtk_icon_view_set_margin (GTK_ICON_VIEW (search_view), 20);
|
||||||
|
gtk_icon_view_set_item_padding (GTK_ICON_VIEW (search_view), 0);
|
||||||
gtk_icon_view_set_model (GTK_ICON_VIEW (search_view),
|
gtk_icon_view_set_model (GTK_ICON_VIEW (search_view),
|
||||||
GTK_TREE_MODEL (priv->search_filter));
|
GTK_TREE_MODEL (priv->search_filter));
|
||||||
|
|
||||||
renderer = gtk_cell_renderer_pixbuf_new ();
|
renderer = gtk_cell_renderer_pixbuf_new ();
|
||||||
g_object_set (renderer,
|
g_object_set (renderer,
|
||||||
"follow-state", TRUE,
|
"follow-state", TRUE,
|
||||||
|
"xpad", 10,
|
||||||
NULL);
|
NULL);
|
||||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (search_view),
|
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (search_view),
|
||||||
renderer, FALSE);
|
renderer, FALSE);
|
||||||
|
|
|
@ -42,6 +42,12 @@ enum
|
||||||
PROP_SEARCH_STRING
|
PROP_SEARCH_STRING
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define FIXED_WIDTH 740
|
||||||
|
#define MARGIN 20
|
||||||
|
#define COLUMN_SPACING 20
|
||||||
|
#define ICON_SIZE 48
|
||||||
|
#define ICON_PADDING 10
|
||||||
|
#define FIXED_SEARCH_LABEL_WIDTH ((FIXED_WIDTH - 2*MARGIN - 3*ICON_SIZE - 6*ICON_PADDING - 2*COLUMN_SPACING)/3. - 2)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_search_renderer_get_property (GObject *object,
|
shell_search_renderer_get_property (GObject *object,
|
||||||
|
@ -215,7 +221,7 @@ get_size (GtkCellRenderer *cell,
|
||||||
|
|
||||||
shell_search_renderer_set_layout (SHELL_SEARCH_RENDERER (cell), widget);
|
shell_search_renderer_set_layout (SHELL_SEARCH_RENDERER (cell), widget);
|
||||||
|
|
||||||
pango_layout_set_width (priv->layout, PANGO_SCALE * 180);
|
pango_layout_set_width (priv->layout, PANGO_SCALE * FIXED_SEARCH_LABEL_WIDTH);
|
||||||
pango_layout_get_pixel_extents (priv->layout, NULL, &rect);
|
pango_layout_get_pixel_extents (priv->layout, NULL, &rect);
|
||||||
|
|
||||||
if (width) *width = rect.width;
|
if (width) *width = rect.width;
|
||||||
|
@ -281,6 +287,8 @@ shell_search_renderer_render (GtkCellRenderer *cell,
|
||||||
ShellSearchRendererPrivate *priv = SHELL_SEARCH_RENDERER (cell)->priv;
|
ShellSearchRendererPrivate *priv = SHELL_SEARCH_RENDERER (cell)->priv;
|
||||||
PangoRectangle rect;
|
PangoRectangle rect;
|
||||||
GtkStyleContext *context;
|
GtkStyleContext *context;
|
||||||
|
gint layout_height;
|
||||||
|
gint vcenter_offset;
|
||||||
|
|
||||||
context = gtk_widget_get_style_context (widget);
|
context = gtk_widget_get_style_context (widget);
|
||||||
|
|
||||||
|
@ -288,11 +296,14 @@ shell_search_renderer_render (GtkCellRenderer *cell,
|
||||||
|
|
||||||
pango_layout_get_pixel_extents (priv->layout, NULL, &rect);
|
pango_layout_get_pixel_extents (priv->layout, NULL, &rect);
|
||||||
|
|
||||||
|
pango_layout_get_pixel_size (priv->layout, NULL, &layout_height);
|
||||||
|
vcenter_offset = (cell_area->height - layout_height) / 2;
|
||||||
|
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
|
|
||||||
gtk_render_layout (context, cr,
|
gtk_render_layout (context, cr,
|
||||||
cell_area->x,
|
cell_area->x,
|
||||||
cell_area->y,
|
cell_area->y + vcenter_offset,
|
||||||
priv->layout);
|
priv->layout);
|
||||||
|
|
||||||
cairo_restore (cr);
|
cairo_restore (cr);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue