[Xfce4-commits] <thunar:andrzejr/ellipsize> Ellipsize labels in a compact list mode.
Andrzej
noreply at xfce.org
Sat Oct 13 22:00:02 CEST 2012
Updating branch refs/heads/andrzejr/ellipsize
to aff11a4b52c15101d91053b9095596ebfa34ece0 (commit)
from c4d3a3a9abe1977251779aa5427b854d2bc0435b (commit)
commit aff11a4b52c15101d91053b9095596ebfa34ece0
Author: Andrzej <ndrwrdck at gmail.com>
Date: Sat Oct 13 20:50:38 2012 +0100
Ellipsize labels in a compact list mode.
thunar/thunar-compact-view.c | 3 +-
thunar/thunar-text-renderer.c | 63 ++++++++++++++++++++++++++++++-----------
2 files changed, 48 insertions(+), 18 deletions(-)
diff --git a/thunar/thunar-compact-view.c b/thunar/thunar-compact-view.c
index 68d1473..49f11f0 100644
--- a/thunar/thunar-compact-view.c
+++ b/thunar/thunar-compact-view.c
@@ -80,7 +80,8 @@ thunar_compact_view_init (ThunarCompactView *compact_view)
/* setup the name renderer (wrap only very long names) */
g_object_set (G_OBJECT (THUNAR_STANDARD_VIEW (compact_view)->name_renderer),
"wrap-mode", PANGO_WRAP_WORD_CHAR,
- "wrap-width", 1280,
+ "ellipsize-mode", PANGO_ELLIPSIZE_MIDDLE,
+ "wrap-width", 200,
"xalign", 0.0f,
"yalign", 0.5f,
NULL);
diff --git a/thunar/thunar-text-renderer.c b/thunar/thunar-text-renderer.c
index 9972641..0da6fb6 100644
--- a/thunar/thunar-text-renderer.c
+++ b/thunar/thunar-text-renderer.c
@@ -46,6 +46,7 @@ enum
PROP_TEXT,
PROP_WRAP_MODE,
PROP_WRAP_WIDTH,
+ PROP_ELLIPSIZE_MODE,
};
enum
@@ -117,27 +118,28 @@ struct _ThunarTextRendererClass
struct _ThunarTextRenderer
{
- GtkCellRenderer __parent__;
-
- PangoLayout *layout;
- GtkWidget *widget;
- gboolean text_static;
- gchar *text;
- gint char_width;
- gint char_height;
- PangoWrapMode wrap_mode;
- gint wrap_width;
- gboolean follow_state;
- gint focus_width;;
- PangoAlignment alignment;
+ GtkCellRenderer __parent__;
+
+ PangoLayout *layout;
+ GtkWidget *widget;
+ gboolean text_static;
+ gchar *text;
+ gint char_width;
+ gint char_height;
+ PangoWrapMode wrap_mode;
+ gint wrap_width;
+ PangoEllipsizeMode ellipsize_mode;
+ gboolean follow_state;
+ gint focus_width;
+ PangoAlignment alignment;
/* underline prelited rows */
- gboolean follow_prelit;
+ gboolean follow_prelit;
/* cell editing support */
- GtkWidget *entry;
- gboolean entry_menu_active;
- gint entry_menu_popdown_timer_id;
+ GtkWidget *entry;
+ gboolean entry_menu_active;
+ gint entry_menu_popdown_timer_id;
};
@@ -254,6 +256,24 @@ thunar_text_renderer_class_init (ThunarTextRendererClass *klass)
-1, G_MAXINT, -1,
EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarTextRenderer:ellipsize-mode:
+ *
+ * Specifies whether to break the string into multiple lines or
+ * to shorten the line, if the cell renderer does not have enough room
+ * to display the entire string. This property has
+ * no effect unless the wrap-width property is set.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_ELLIPSIZE_MODE,
+ g_param_spec_enum ("ellipsize-mode",
+ "ellipsize-mode",
+ "ellipsize-mode",
+ PANGO_TYPE_ELLIPSIZE_MODE,
+ PANGO_ELLIPSIZE_NONE,
+ EXO_PARAM_READWRITE));
+
/**
* ThunarTextRenderer::edited:
* @text_renderer : a #ThunarTextRenderer.
@@ -336,6 +356,10 @@ thunar_text_renderer_get_property (GObject *object,
g_value_set_int (value, text_renderer->wrap_width);
break;
+ case PROP_ELLIPSIZE_MODE:
+ g_value_set_enum (value, text_renderer->ellipsize_mode);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -389,6 +413,10 @@ thunar_text_renderer_set_property (GObject *object,
gtk_cell_renderer_set_fixed_size (GTK_CELL_RENDERER (text_renderer), -1, -1);
break;
+ case PROP_ELLIPSIZE_MODE:
+ text_renderer->ellipsize_mode = g_value_get_enum (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -432,6 +460,7 @@ thunar_text_renderer_get_size (GtkCellRenderer *renderer,
/* calculate the real text dimension */
pango_layout_set_width (text_renderer->layout, text_renderer->wrap_width * PANGO_SCALE);
pango_layout_set_wrap (text_renderer->layout, text_renderer->wrap_mode);
+ pango_layout_set_ellipsize (text_renderer->layout, text_renderer->ellipsize_mode);
pango_layout_set_text (text_renderer->layout, text_renderer->text, -1);
pango_layout_get_pixel_size (text_renderer->layout, &text_width, &text_height);
}
More information about the Xfce4-commits
mailing list