I#1291 - EAttachmentIconView: Improve display settings

Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1291
This commit is contained in:
Milan Crha
2021-08-31 10:55:02 +02:00
parent 6e9062a06e
commit 277a602d09
3 changed files with 49 additions and 22 deletions

View File

@ -43,8 +43,6 @@ enum {
PROP_EDITABLE
};
static gint icon_size = GTK_ICON_SIZE_DIALOG;
/* Forward Declarations */
static void e_attachment_icon_view_interface_init
(EAttachmentViewInterface *iface);
@ -59,12 +57,6 @@ G_DEFINE_TYPE_WITH_CODE (
G_IMPLEMENT_INTERFACE (
E_TYPE_EXTENSIBLE, NULL))
void
e_attachment_icon_view_set_default_icon_size (gint size)
{
icon_size = size;
}
static void
attachment_icon_view_set_property (GObject *object,
guint property_id,
@ -139,6 +131,7 @@ attachment_icon_view_constructed (GObject *object)
G_OBJECT_CLASS (e_attachment_icon_view_parent_class)->constructed (object);
gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (object), GTK_SELECTION_MULTIPLE);
gtk_icon_view_set_item_width (GTK_ICON_VIEW (object), 96);
cell_layout = GTK_CELL_LAYOUT (object);
@ -146,7 +139,11 @@ attachment_icon_view_constructed (GObject *object)
* so that GtkCellLayout.get_area() returns something valid. */
renderer = gtk_cell_renderer_pixbuf_new ();
g_object_set (renderer, "stock-size", icon_size, NULL);
g_object_set (renderer,
"stock-size", GTK_ICON_SIZE_DIALOG,
"xalign", 0.5,
"yalign", 0.5,
NULL);
gtk_cell_layout_pack_start (cell_layout, renderer, FALSE);
gtk_cell_layout_add_attribute (
@ -154,10 +151,16 @@ attachment_icon_view_constructed (GObject *object)
E_ATTACHMENT_STORE_COLUMN_ICON);
renderer = gtk_cell_renderer_text_new ();
g_object_set (
renderer, "alignment", PANGO_ALIGN_CENTER,
"wrap-mode", PANGO_WRAP_WORD, "wrap-width", 150,
"yalign", 0.0, NULL);
g_object_set (renderer,
"alignment", PANGO_ALIGN_LEFT,
"ellipsize", PANGO_ELLIPSIZE_END,
"wrap-mode", PANGO_WRAP_WORD,
"wrap-width", 96,
"scale", 0.8,
"xpad", 0,
"xalign", 0.5,
"yalign", 0.0,
NULL);
gtk_cell_layout_pack_start (cell_layout, renderer, FALSE);
gtk_cell_layout_add_attribute (

View File

@ -63,8 +63,7 @@ struct _EAttachmentIconViewClass {
GType e_attachment_icon_view_get_type (void) G_GNUC_CONST;
GtkWidget * e_attachment_icon_view_new (void);
void e_attachment_icon_view_set_default_icon_size
(gint size);
G_END_DECLS
#endif /* E_ATTACHMENT_ICON_VIEW_H */

View File

@ -347,6 +347,8 @@ static void
picture_gallery_constructed (GObject *object)
{
GtkIconView *icon_view;
GtkCellLayout *cell_layout;
GtkCellRenderer *renderer;
GtkListStore *list_store;
GtkTargetEntry *targets;
GtkTargetList *list;
@ -362,14 +364,37 @@ picture_gallery_constructed (GObject *object)
gtk_icon_view_set_model (icon_view, GTK_TREE_MODEL (list_store));
g_object_unref (list_store);
gtk_icon_view_set_pixbuf_column (icon_view, COL_PIXBUF);
gtk_icon_view_set_text_column (icon_view, COL_FILENAME_TEXT);
gtk_icon_view_set_tooltip_column (icon_view, -1);
gtk_icon_view_set_item_width (icon_view, 96);
/* Fit more icons by letting text wrap, especially with long filenames.
* The thumbnail is usually 128x128, so match it, as the text won't wrap
* smaller than the thumbnail width anyway. */
gtk_icon_view_set_item_width (icon_view, 128);
cell_layout = GTK_CELL_LAYOUT (icon_view);
/* This needs to happen after constructor properties are set
* so that GtkCellLayout.get_area() returns something valid. */
renderer = gtk_cell_renderer_pixbuf_new ();
g_object_set (renderer,
"stock-size", GTK_ICON_SIZE_DIALOG,
"xalign", 0.5,
"yalign", 0.5,
NULL);
gtk_cell_layout_pack_start (cell_layout, renderer, FALSE);
gtk_cell_layout_add_attribute (cell_layout, renderer, "pixbuf", COL_PIXBUF);
renderer = gtk_cell_renderer_text_new ();
g_object_set (renderer,
"alignment", PANGO_ALIGN_LEFT,
"ellipsize", PANGO_ELLIPSIZE_END,
"wrap-mode", PANGO_WRAP_WORD,
"wrap-width", 96,
"scale", 0.8,
"xpad", 0,
"xalign", 0.5,
"yalign", 0.0,
NULL);
gtk_cell_layout_pack_start (cell_layout, renderer, FALSE);
gtk_cell_layout_add_attribute (cell_layout, renderer, "text", COL_FILENAME_TEXT);
list = gtk_target_list_new (NULL, 0);
gtk_target_list_add_uri_targets (list, 0);