From 74047044315c7d8840c61b27890f37c3f639dc3a Mon Sep 17 00:00:00 2001 From: Yair Hershkovitz Date: Sun, 21 Dec 2008 08:10:53 +0000 Subject: [PATCH] Bug 565203: RTL locales: icons are misplaced when horizontal gtkiconview 2008-12-21 Yair Hershkovitz Bug 565203: RTL locales: icons are misplaced when horizontal gtkiconview is contained in a gtkscrolledwindow. * gtk/gtkiconview.c (gtk_icon_view_layout_single_row): Fix horizontal icon positions when in RTL locale. svn path=/trunk/; revision=21918 --- ChangeLog | 8 ++++++++ gtk/gtkiconview.c | 11 +++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index c514fa786f..9533713bf1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-12-21 Yair Hershkovitz + + Bug 565203: RTL locales: icons are misplaced when horizontal + gtkiconview is contained in a gtkscrolledwindow. + + * gtk/gtkiconview.c (gtk_icon_view_layout_single_row): + Fix horizontal icon positions when in RTL locale. + 2008-12-19 Matthias Clasen * NEWS: Update diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c index 8b095997f3..81ef0bded7 100644 --- a/gtk/gtkiconview.c +++ b/gtk/gtkiconview.c @@ -2575,7 +2575,7 @@ gtk_icon_view_layout_single_row (GtkIconView *icon_view, current_width += icon_view->priv->column_spacing + 2 * focus_width; item->y = *y + focus_width; - item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - item->width - x : x; + item->x = x; x = current_width - (icon_view->priv->margin + focus_width); @@ -2599,14 +2599,17 @@ gtk_icon_view_layout_single_row (GtkIconView *icon_view, { GtkIconViewItem *item = items->data; + if (rtl) + { + item->x = *maximum_width - item->width - item->x; + item->col = col - 1 - item->col; + } + gtk_icon_view_calculate_item_size2 (icon_view, item, max_height); /* We may want to readjust the new y coordinate. */ if (item->y + item->height + focus_width + icon_view->priv->row_spacing > *y) *y = item->y + item->height + focus_width + icon_view->priv->row_spacing; - - if (rtl) - item->col = col - 1 - item->col; } g_free (max_height);