diff options
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtktreeview.c | 16 | ||||
-rw-r--r-- | gtk/gtktreeviewcolumn.c | 5 |
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); |