summaryrefslogtreecommitdiff
path: root/gtk/gtktoolbar.c
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2013-02-22 09:14:10 -0500
committerCosimo Cecchi <cosimoc@gnome.org>2013-02-23 14:53:23 -0500
commita07f767ed417323cf2511f5ada4b2f120904b601 (patch)
tree7258af520f011e6435a49b8596dcfbecd0bebd76 /gtk/gtktoolbar.c
parent894f84c623f2e280376be2945159fbf354377913 (diff)
downloadgtk+-a07f767ed417323cf2511f5ada4b2f120904b601.tar.gz
Revert "toolbar: Don't special-case RTL toolbar child positions anymore"
This reverts commit 821a675013e04598503d3c5ea23ab91607f98e70. https://bugzilla.gnome.org/show_bug.cgi?id=694451
Diffstat (limited to 'gtk/gtktoolbar.c')
-rw-r--r--gtk/gtktoolbar.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c
index 0ca1b7eea4..e4dbfa45eb 100644
--- a/gtk/gtktoolbar.c
+++ b/gtk/gtktoolbar.c
@@ -231,6 +231,8 @@ static GtkWidgetPath * gtk_toolbar_get_path_for_child
GtkWidget *child);
static void gtk_toolbar_invalidate_order (GtkToolbar *toolbar);
+static void gtk_toolbar_direction_changed (GtkWidget *widget,
+ GtkTextDirection previous_direction);
static void gtk_toolbar_orientation_changed (GtkToolbar *toolbar,
GtkOrientation orientation);
static void gtk_toolbar_real_style_changed (GtkToolbar *toolbar,
@@ -394,6 +396,7 @@ gtk_toolbar_class_init (GtkToolbarClass *klass)
widget_class->unmap = gtk_toolbar_unmap;
widget_class->popup_menu = gtk_toolbar_popup_menu;
widget_class->show_all = gtk_toolbar_show_all;
+ widget_class->direction_changed = gtk_toolbar_direction_changed;
container_class->add = gtk_toolbar_add;
container_class->remove = gtk_toolbar_remove;
@@ -3855,6 +3858,10 @@ gtk_toolbar_get_visible_position (GtkToolbar *toolbar,
g_assert (count.found);
+ if (toolbar->priv->orientation == GTK_ORIENTATION_HORIZONTAL &&
+ gtk_widget_get_direction (GTK_WIDGET (toolbar)) == GTK_TEXT_DIR_RTL)
+ return count.after;
+
return count.before;
}
@@ -3875,18 +3882,23 @@ gtk_toolbar_get_path_for_child (GtkContainer *container,
{
GtkWidgetPath *path;
GtkToolbar *toolbar;
+ GtkToolbarPrivate *priv;
GtkWidgetPath *sibling_path;
gint vis_index;
GList *children;
toolbar = GTK_TOOLBAR (container);
+ priv = toolbar->priv;
/* build a path for all the visible children;
* get_children works in visible order
*/
sibling_path = gtk_widget_path_new ();
children = _gtk_container_get_all_children (container);
- children = g_list_reverse (children);
+
+ if (priv->orientation != GTK_ORIENTATION_HORIZONTAL ||
+ gtk_widget_get_direction (GTK_WIDGET (toolbar)) != GTK_TEXT_DIR_RTL)
+ children = g_list_reverse (children);
g_list_foreach (children, add_widget_to_path, sibling_path);
g_list_free (children);
@@ -3924,3 +3936,12 @@ gtk_toolbar_invalidate_order (GtkToolbar *toolbar)
NULL);
}
+static void
+gtk_toolbar_direction_changed (GtkWidget *widget,
+ GtkTextDirection previous_direction)
+{
+ GTK_WIDGET_CLASS (gtk_toolbar_parent_class)->direction_changed (widget, previous_direction);
+
+ gtk_toolbar_invalidate_order (GTK_TOOLBAR (widget));
+}
+