From b49f713fb23711e63973e28c2febda766dcfb9be Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Sat, 29 Nov 2003 06:16:11 +0000 Subject: [PATCH] Patch from to handle RTL support for column resizers, Sat Nov 29 00:55:28 2003 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_new_column_width): * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button): Patch from to handle RTL support for column resizers, #127874 --- ChangeLog | 7 +++++++ ChangeLog.pre-2-10 | 7 +++++++ ChangeLog.pre-2-4 | 7 +++++++ ChangeLog.pre-2-6 | 7 +++++++ ChangeLog.pre-2-8 | 7 +++++++ gtk/gtktreeview.c | 16 ++++++++++------ gtk/gtktreeviewcolumn.c | 5 +++-- 7 files changed, 48 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d498451dc..4b9f12736f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat Nov 29 00:55:28 2003 Jonathan Blandford + + * gtk/gtktreeview.c (gtk_tree_view_new_column_width): + * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button): + Patch from to handle RTL support for column + resizers, #127874 + Fri Nov 28 00:26:24 2003 Matthias Clasen * gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 9d498451dc..4b9f12736f 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +Sat Nov 29 00:55:28 2003 Jonathan Blandford + + * gtk/gtktreeview.c (gtk_tree_view_new_column_width): + * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button): + Patch from to handle RTL support for column + resizers, #127874 + Fri Nov 28 00:26:24 2003 Matthias Clasen * gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 9d498451dc..4b9f12736f 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,10 @@ +Sat Nov 29 00:55:28 2003 Jonathan Blandford + + * gtk/gtktreeview.c (gtk_tree_view_new_column_width): + * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button): + Patch from to handle RTL support for column + resizers, #127874 + Fri Nov 28 00:26:24 2003 Matthias Clasen * gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 9d498451dc..4b9f12736f 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,10 @@ +Sat Nov 29 00:55:28 2003 Jonathan Blandford + + * gtk/gtktreeview.c (gtk_tree_view_new_column_width): + * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button): + Patch from to handle RTL support for column + resizers, #127874 + Fri Nov 28 00:26:24 2003 Matthias Clasen * gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 9d498451dc..4b9f12736f 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +Sat Nov 29 00:55:28 2003 Jonathan Blandford + + * gtk/gtktreeview.c (gtk_tree_view_new_column_width): + * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_realize_button): + Patch from to handle RTL support for column + resizers, #127874 + Fri Nov 28 00:26:24 2003 Matthias Clasen * gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index f04ad6faa0..d21bc34753 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 4e176ff5cc..6bd4000e6f 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);