summaryrefslogtreecommitdiff
path: root/gtk/gtkcellrenderertext.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2004-10-01 21:39:01 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-10-01 21:39:01 +0000
commita263e0564676fb48a3eeaec4fc4996fea29bacc6 (patch)
tree8650df94f4e5f5049f245695a8045fc7749c76bf /gtk/gtkcellrenderertext.c
parent8439956a9caa505b280eba27eb75c2f93ec5d0e3 (diff)
downloadgtk+-a263e0564676fb48a3eeaec4fc4996fea29bacc6.tar.gz
Fix bug #150790:
2004-10-01 Matthias Clasen <mclasen@redhat.com> Fix bug #150790: * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_get_size): Fix the calculation of x_offset when ellipsized and in RTL mode. (gtk_cell_renderer_text_render): Fix the calculation of the layout width when ellipsized.
Diffstat (limited to 'gtk/gtkcellrenderertext.c')
-rw-r--r--gtk/gtkcellrenderertext.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c
index dfb770d57a..ec7aaa33c3 100644
--- a/gtk/gtkcellrenderertext.c
+++ b/gtk/gtkcellrenderertext.c
@@ -1412,11 +1412,13 @@ gtk_cell_renderer_text_get_size (GtkCellRenderer *cell,
{
if (x_offset)
{
- *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ?
- (1.0 - cell->xalign) : cell->xalign) * (cell_area->width - rect.width - (2 * cell->xpad));
if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
- *x_offset -= rect.width;
- *x_offset = MAX (*x_offset, 0);
+ *x_offset = (1.0 - cell->xalign) * (cell_area->width - rect.width - (2 * cell->xpad));
+ else
+ *x_offset = cell->xalign * (cell_area->width - rect.width - (2 * cell->xpad));
+
+ if (priv->ellipsize)
+ *x_offset = MAX(*x_offset, 0);
}
if (y_offset)
{
@@ -1503,7 +1505,8 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell,
}
if (priv->ellipsize)
- pango_layout_set_width (layout, cell_area->width * PANGO_SCALE);
+ pango_layout_set_width (layout,
+ (cell_area->width - x_offset - 2 * cell->xpad) * PANGO_SCALE);
else
pango_layout_set_width (layout, -1);