summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtktreeview.c16
-rw-r--r--gtk/gtktreeviewcolumn.c5
2 files changed, 13 insertions, 8 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index f04ad6faa..d21bc3475 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -1825,7 +1825,7 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget)
if (column->window)
gdk_window_move_resize (column->window,
- allocation.x + allocation.width - TREE_VIEW_DRAG_WIDTH/2,
+ allocation.x + (rtl ? 0 : allocation.width) - TREE_VIEW_DRAG_WIDTH/2,
allocation.y,
TREE_VIEW_DRAG_WIDTH, allocation.height);
}
@@ -1951,11 +1951,13 @@ gtk_tree_view_button_press (GtkWidget *widget,
GdkRectangle cell_area;
gint vertical_separator;
gint horizontal_separator;
+ gboolean rtl;
g_return_val_if_fail (GTK_IS_TREE_VIEW (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
tree_view = GTK_TREE_VIEW (widget);
+ rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL);
gtk_tree_view_stop_editing (tree_view, FALSE);
gtk_widget_style_get (widget,
"vertical_separator", &vertical_separator,
@@ -2294,7 +2296,7 @@ gtk_tree_view_button_press (GtkWidget *widget,
gtk_widget_grab_focus (widget);
tree_view->priv->drag_pos = i;
- tree_view->priv->x_drag = (column->button->allocation.x + column->button->allocation.width);
+ tree_view->priv->x_drag = column->button->allocation.x + (rtl ? 0 : column->button->allocation.width);
break;
}
}
@@ -8253,14 +8255,15 @@ gtk_tree_view_new_column_width (GtkTreeView *tree_view,
{
GtkTreeViewColumn *column;
gint width;
+ gboolean rtl;
/* first translate the x position from widget->window
* to clist->clist_window
*/
-
+ rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL);
column = g_list_nth (tree_view->priv->columns, i)->data;
- width = *x - column->button->allocation.x;
-
+ width = rtl ? (column->button->allocation.x + column->button->allocation.width - *x) : (*x - column->button->allocation.x);
+
/* Clamp down the value */
if (column->min_width == -1)
width = MAX (column->button->requisition.width,
@@ -8270,8 +8273,9 @@ gtk_tree_view_new_column_width (GtkTreeView *tree_view,
width);
if (column->max_width != -1)
width = MIN (width, column->max_width != -1);
- *x = column->button->allocation.x + width;
+ *x = rtl ? (column->button->allocation.x + column->button->allocation.width - width) : (column->button->allocation.x + width);
+
return width;
}
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c
index 4e176ff5c..6bd4000e6 100644
--- a/gtk/gtktreeviewcolumn.c
+++ b/gtk/gtktreeviewcolumn.c
@@ -1187,8 +1187,10 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column)
GtkTreeView *tree_view;
GdkWindowAttr attr;
guint attributes_mask;
+ gboolean rtl;
tree_view = (GtkTreeView *)column->tree_view;
+ rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL);
g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
g_return_if_fail (GTK_WIDGET_REALIZED (tree_view));
@@ -1217,8 +1219,7 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column)
attr.width = TREE_VIEW_DRAG_WIDTH;
attr.height = tree_view->priv->header_height;
- attr.x = (column->button->allocation.x + column->button->allocation.width) - 3;
-
+ attr.x = (column->button->allocation.x + (rtl ? 0 : column->button->allocation.width)) - 3;
column->window = gdk_window_new (tree_view->priv->header_window,
&attr, attributes_mask);
gdk_window_set_user_data (column->window, tree_view);