diff options
author | raveit65 <[email protected]> | 2019-11-22 21:29:30 +0100 |
---|---|---|
committer | raveit65 <[email protected]> | 2019-11-22 21:29:30 +0100 |
commit | ea81a5e3bd1cc8e9ba2b92ced9db1ebae803e24d (patch) | |
tree | 23472009e1e9bcdd6b04a9450bcd12d0cecb4e0b | |
parent | 8c07068221e5702372affbbbbdb57ce0ba33d22b (diff) | |
download | caja-ea81a5e3bd1cc8e9ba2b92ced9db1ebae803e24d.tar.bz2 caja-ea81a5e3bd1cc8e9ba2b92ced9db1ebae803e24d.tar.xz |
canvas-item: Don't hyphenate filenames
fixes https://github.com/mate-desktop/caja/issues/1284
Pango 1.44 got the ability to automatically hyphenate on line breaks,
which is on by default, but can be set off by a new attribute.
As a result, we now hyphenate filenames, which is confusing, because
a filename may already include hyphens.
To restore the previous behavior, let's not insert hyphens when
breaking filenames in multiple lines.
Inspired by https://gitlab.gnome.org/GNOME/nautilus/commit/9738d85
-rw-r--r-- | libcaja-private/caja-icon-canvas-item.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libcaja-private/caja-icon-canvas-item.c b/libcaja-private/caja-icon-canvas-item.c index 71d56fc3..cb2d8316 100644 --- a/libcaja-private/caja-icon-canvas-item.c +++ b/libcaja-private/caja-icon-canvas-item.c @@ -60,6 +60,14 @@ #define MAX_TEXT_WIDTH_BESIDE 90 #define MAX_TEXT_WIDTH_BESIDE_TOP_TO_BOTTOM 150 +#ifndef PANGO_CHECK_VERSION +#define PANGO_CHECK_VERSION(major, minor, micro) \ + (PANGO_VERSION_MAJOR > (major) || \ + (PANGO_VERSION_MAJOR == (major) && PANGO_VERSION_MINOR > (minor)) || \ + (PANGO_VERSION_MAJOR == (major) && PANGO_VERSION_MINOR == (minor) && \ + PANGO_VERSION_MICRO >= (micro))) +#endif + /* special text height handling * each item has three text height variables: * + text_height: actual height of the displayed (i.e. on-screen) PangoLayout. @@ -1967,12 +1975,18 @@ create_label_layout (CajaIconCanvasItem *item, GString *str; char *zeroified_text; const char *p; + #if PANGO_CHECK_VERSION (1, 44, 0) + PangoAttrList *attr_list; + #endif canvas_item = EEL_CANVAS_ITEM (item); container = CAJA_ICON_CONTAINER (canvas_item->canvas); context = gtk_widget_get_pango_context (GTK_WIDGET (canvas_item->canvas)); layout = pango_layout_new (context); + #if PANGO_CHECK_VERSION (1, 44, 0) + attr_list = pango_attr_list_new (); + #endif zeroified_text = NULL; @@ -2019,6 +2033,11 @@ create_label_layout (CajaIconCanvasItem *item, pango_layout_set_spacing (layout, LABEL_LINE_SPACING); pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR); + #if PANGO_CHECK_VERSION (1, 44, 0) + pango_attr_list_insert (attr_list, pango_attr_insert_hyphens_new (FALSE)); + pango_layout_set_attributes (layout, attr_list); + #endif + /* Create a font description */ if (container->details->font) { @@ -2034,6 +2053,9 @@ create_label_layout (CajaIconCanvasItem *item, pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); g_free (zeroified_text); + #if PANGO_CHECK_VERSION (1, 44, 0) + pango_attr_list_unref (attr_list); + #endif return layout; } |