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 PROP_EDITABLE
}; };
static gint icon_size = GTK_ICON_SIZE_DIALOG;
/* Forward Declarations */ /* Forward Declarations */
static void e_attachment_icon_view_interface_init static void e_attachment_icon_view_interface_init
(EAttachmentViewInterface *iface); (EAttachmentViewInterface *iface);
@ -59,12 +57,6 @@ G_DEFINE_TYPE_WITH_CODE (
G_IMPLEMENT_INTERFACE ( G_IMPLEMENT_INTERFACE (
E_TYPE_EXTENSIBLE, NULL)) E_TYPE_EXTENSIBLE, NULL))
void
e_attachment_icon_view_set_default_icon_size (gint size)
{
icon_size = size;
}
static void static void
attachment_icon_view_set_property (GObject *object, attachment_icon_view_set_property (GObject *object,
guint property_id, guint property_id,
@ -139,6 +131,7 @@ attachment_icon_view_constructed (GObject *object)
G_OBJECT_CLASS (e_attachment_icon_view_parent_class)->constructed (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_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); cell_layout = GTK_CELL_LAYOUT (object);
@ -146,7 +139,11 @@ attachment_icon_view_constructed (GObject *object)
* so that GtkCellLayout.get_area() returns something valid. */ * so that GtkCellLayout.get_area() returns something valid. */
renderer = gtk_cell_renderer_pixbuf_new (); 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_pack_start (cell_layout, renderer, FALSE);
gtk_cell_layout_add_attribute ( gtk_cell_layout_add_attribute (
@ -154,10 +151,16 @@ attachment_icon_view_constructed (GObject *object)
E_ATTACHMENT_STORE_COLUMN_ICON); E_ATTACHMENT_STORE_COLUMN_ICON);
renderer = gtk_cell_renderer_text_new (); renderer = gtk_cell_renderer_text_new ();
g_object_set ( g_object_set (renderer,
renderer, "alignment", PANGO_ALIGN_CENTER, "alignment", PANGO_ALIGN_LEFT,
"wrap-mode", PANGO_WRAP_WORD, "wrap-width", 150, "ellipsize", PANGO_ELLIPSIZE_END,
"yalign", 0.0, NULL); "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_pack_start (cell_layout, renderer, FALSE);
gtk_cell_layout_add_attribute ( gtk_cell_layout_add_attribute (

View File

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

View File

@ -347,6 +347,8 @@ static void
picture_gallery_constructed (GObject *object) picture_gallery_constructed (GObject *object)
{ {
GtkIconView *icon_view; GtkIconView *icon_view;
GtkCellLayout *cell_layout;
GtkCellRenderer *renderer;
GtkListStore *list_store; GtkListStore *list_store;
GtkTargetEntry *targets; GtkTargetEntry *targets;
GtkTargetList *list; GtkTargetList *list;
@ -362,14 +364,37 @@ picture_gallery_constructed (GObject *object)
gtk_icon_view_set_model (icon_view, GTK_TREE_MODEL (list_store)); gtk_icon_view_set_model (icon_view, GTK_TREE_MODEL (list_store));
g_object_unref (list_store); g_object_unref (list_store);
gtk_icon_view_set_pixbuf_column (icon_view, COL_PIXBUF); gtk_icon_view_set_item_width (icon_view, 96);
gtk_icon_view_set_text_column (icon_view, COL_FILENAME_TEXT);
gtk_icon_view_set_tooltip_column (icon_view, -1);
/* Fit more icons by letting text wrap, especially with long filenames. cell_layout = GTK_CELL_LAYOUT (icon_view);
* The thumbnail is usually 128x128, so match it, as the text won't wrap
* smaller than the thumbnail width anyway. */ /* This needs to happen after constructor properties are set
gtk_icon_view_set_item_width (icon_view, 128); * 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); list = gtk_target_list_new (NULL, 0);
gtk_target_list_add_uri_targets (list, 0); gtk_target_list_add_uri_targets (list, 0);