]> Pileus Git - ~andy/gtk/commitdiff
bnc447004 - Flip tree lines around in the right-to-left case
authorFederico Mena Quintero <federico@novell.com>
Sat, 29 Nov 2008 22:15:37 +0000 (22:15 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Sat, 29 Nov 2008 22:15:37 +0000 (22:15 +0000)
2008-11-29  Federico Mena Quintero  <federico@novell.com>

* gtk/gtktreeview.c (gtk_tree_view_bin_expose): If tree lines are
enabled, flip them around for the right-to-left case.  Fixes
https://bugzilla.novell.com/show_bug.cgi?id=447004.  Patch by
Ricardo Cruz <rpmcruz@alunos.dcc.fc.up.pt>

Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=21829

ChangeLog
gtk/gtktreeview.c

index 54fe33d5372e5fa6bd276bf2b3ec399bf2c294d5..97442f247a371e69baea05230e7d56e4fb77d607 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-29  Federico Mena Quintero  <federico@novell.com>
+
+       * gtk/gtktreeview.c (gtk_tree_view_bin_expose): If tree lines are
+       enabled, flip them around for the right-to-left case.  Fixes
+       https://bugzilla.novell.com/show_bug.cgi?id=447004.  Patch by
+       Ricardo Cruz <rpmcruz@alunos.dcc.fc.up.pt>
+
 2008-11-29  Christian Persch  <chpe@gnome.org>
 
        * gtk/gtkselection.c: Typo fix.
index 0ef05b26722c8a1a367acc95e3b9ed89484655c3..451500b39f1aee2653caf1a09263ad0b3c8ffa79 100644 (file)
@@ -4572,24 +4572,33 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
          if (gtk_tree_view_is_expander_column (tree_view, column) &&
              tree_view->priv->tree_lines_enabled)
            {
+             gint x = background_area.x;
+             gint mult = rtl ? -1 : 1;
+             gint y0 = background_area.y;
+             gint y1 = background_area.y + background_area.height/2;
+             gint y2 = background_area.y + background_area.height;
+
+             if (rtl)
+               x += background_area.width - 1;
+
              if ((node->flags & GTK_RBNODE_IS_PARENT) == GTK_RBNODE_IS_PARENT
                  && depth > 1)
                {
                  gdk_draw_line (event->window,
                                 tree_view->priv->tree_line_gc,
-                                background_area.x + tree_view->priv->expander_size * (depth - 1.5),
-                                background_area.y + background_area.height / 2,
-                                background_area.x + tree_view->priv->expander_size * (depth - 1.1),
-                                background_area.y + background_area.height / 2);
+                                x + tree_view->priv->expander_size * (depth - 1.5) * mult,
+                                y1,
+                                x + tree_view->priv->expander_size * (depth - 1.1) * mult,
+                                y1);
                }
              else if (depth > 1)
                {
                  gdk_draw_line (event->window,
                                 tree_view->priv->tree_line_gc,
-                                background_area.x + tree_view->priv->expander_size * (depth - 1.5),
-                                background_area.y + background_area.height / 2,
-                                background_area.x + tree_view->priv->expander_size * (depth - 0.5),
-                                background_area.y + background_area.height / 2);
+                                x + tree_view->priv->expander_size * (depth - 1.5) * mult,
+                                y1,
+                                x + tree_view->priv->expander_size * (depth - 0.5) * mult,
+                                y1);
                }
 
              if (depth > 1)
@@ -4601,17 +4610,17 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
                  if (!_gtk_rbtree_next (tree, node))
                    gdk_draw_line (event->window,
                                   tree_view->priv->tree_line_gc,
-                                  background_area.x + tree_view->priv->expander_size * (depth - 1.5),
-                                  background_area.y,
-                                  background_area.x + tree_view->priv->expander_size * (depth - 1.5),
-                                  background_area.y + background_area.height / 2);
+                                  x + tree_view->priv->expander_size * (depth - 1.5) * mult,
+                                  y0,
+                                  x + tree_view->priv->expander_size * (depth - 1.5) * mult,
+                                  y1);
                  else
                    gdk_draw_line (event->window,
                                   tree_view->priv->tree_line_gc,
-                                  background_area.x + tree_view->priv->expander_size * (depth - 1.5),
-                                  background_area.y,
-                                  background_area.x + tree_view->priv->expander_size * (depth - 1.5),
-                                  background_area.y + background_area.height);
+                                  x + tree_view->priv->expander_size * (depth - 1.5) * mult,
+                                  y0,
+                                  x + tree_view->priv->expander_size * (depth - 1.5) * mult,
+                                  y2);
 
                  tmp_node = tree->parent_node;
                  tmp_tree = tree->parent_tree;
@@ -4621,10 +4630,10 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
                      if (_gtk_rbtree_next (tmp_tree, tmp_node))
                        gdk_draw_line (event->window,
                                       tree_view->priv->tree_line_gc,
-                                      background_area.x + tree_view->priv->expander_size * (i - 0.5),
-                                      background_area.y,
-                                      background_area.x + tree_view->priv->expander_size * (i - 0.5),
-                                      background_area.y + background_area.height);
+                                      x + tree_view->priv->expander_size * (i - 0.5) * mult,
+                                      y0,
+                                      x + tree_view->priv->expander_size * (i - 0.5) * mult,
+                                      y2);
 
                      tmp_node = tmp_tree->parent_node;
                      tmp_tree = tmp_tree->parent_tree;