summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2002-01-27 21:11:29 +0000
committerKristian Rietveld <kristian@src.gnome.org>2002-01-27 21:11:29 +0000
commitad219f2e3a22b0ea8dfd9571917b62e3d6b56d1c (patch)
tree1ab2d4c95760e0b5639eca757a018d921f24fc68
parent529a9205e01ceebe7997e47160aa5c7ca6f4dc04 (diff)
downloadgdk-pixbuf-ad219f2e3a22b0ea8dfd9571917b62e3d6b56d1c.tar.gz
Fix for bug #69586
Sun Jan 27 22:13:02 Kristian Rietveld <kris@gtk.org> Fix for bug #69586 * gtk/gtktreeprivate.h: get rid of tab_offset, introduce expander_size * gtk/gtktreeview.c: get rid of ->priv->tab_offset, introduce expander_size caching (from style), fix CELL_HEIGHT macro, use MAX ("RBNODE_HEIGHT", expander_size) (differs per case) for row height calculation, added style_set callback
-rw-r--r--ChangeLog12
-rw-r--r--ChangeLog.pre-2-012
-rw-r--r--ChangeLog.pre-2-1012
-rw-r--r--ChangeLog.pre-2-212
-rw-r--r--ChangeLog.pre-2-412
-rw-r--r--ChangeLog.pre-2-612
-rw-r--r--ChangeLog.pre-2-812
-rw-r--r--gtk/gtktreeprivate.h2
-rw-r--r--gtk/gtktreeview.c127
9 files changed, 161 insertions, 52 deletions
diff --git a/ChangeLog b/ChangeLog
index c0a387a9d..1b6796a30 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+Sun Jan 27 22:13:02 Kristian Rietveld <kris@gtk.org>
+
+ Fix for bug #69586
+
+ * gtk/gtktreeprivate.h: get rid of tab_offset, introduce
+ expander_size
+
+ * gtk/gtktreeview.c: get rid of ->priv->tab_offset, introduce
+ expander_size caching (from style), fix CELL_HEIGHT macro,
+ use MAX ("RBNODE_HEIGHT", expander_size) (differs per case) for
+ row height calculation, added style_set callback
+
2002-01-27 Anders Carlsson <andersca@gnu.org>
* gtk/gtklabel.c (gtk_label_create_window): Set the cursor to
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index c0a387a9d..1b6796a30 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,15 @@
+Sun Jan 27 22:13:02 Kristian Rietveld <kris@gtk.org>
+
+ Fix for bug #69586
+
+ * gtk/gtktreeprivate.h: get rid of tab_offset, introduce
+ expander_size
+
+ * gtk/gtktreeview.c: get rid of ->priv->tab_offset, introduce
+ expander_size caching (from style), fix CELL_HEIGHT macro,
+ use MAX ("RBNODE_HEIGHT", expander_size) (differs per case) for
+ row height calculation, added style_set callback
+
2002-01-27 Anders Carlsson <andersca@gnu.org>
* gtk/gtklabel.c (gtk_label_create_window): Set the cursor to
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index c0a387a9d..1b6796a30 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,15 @@
+Sun Jan 27 22:13:02 Kristian Rietveld <kris@gtk.org>
+
+ Fix for bug #69586
+
+ * gtk/gtktreeprivate.h: get rid of tab_offset, introduce
+ expander_size
+
+ * gtk/gtktreeview.c: get rid of ->priv->tab_offset, introduce
+ expander_size caching (from style), fix CELL_HEIGHT macro,
+ use MAX ("RBNODE_HEIGHT", expander_size) (differs per case) for
+ row height calculation, added style_set callback
+
2002-01-27 Anders Carlsson <andersca@gnu.org>
* gtk/gtklabel.c (gtk_label_create_window): Set the cursor to
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index c0a387a9d..1b6796a30 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,15 @@
+Sun Jan 27 22:13:02 Kristian Rietveld <kris@gtk.org>
+
+ Fix for bug #69586
+
+ * gtk/gtktreeprivate.h: get rid of tab_offset, introduce
+ expander_size
+
+ * gtk/gtktreeview.c: get rid of ->priv->tab_offset, introduce
+ expander_size caching (from style), fix CELL_HEIGHT macro,
+ use MAX ("RBNODE_HEIGHT", expander_size) (differs per case) for
+ row height calculation, added style_set callback
+
2002-01-27 Anders Carlsson <andersca@gnu.org>
* gtk/gtklabel.c (gtk_label_create_window): Set the cursor to
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index c0a387a9d..1b6796a30 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,15 @@
+Sun Jan 27 22:13:02 Kristian Rietveld <kris@gtk.org>
+
+ Fix for bug #69586
+
+ * gtk/gtktreeprivate.h: get rid of tab_offset, introduce
+ expander_size
+
+ * gtk/gtktreeview.c: get rid of ->priv->tab_offset, introduce
+ expander_size caching (from style), fix CELL_HEIGHT macro,
+ use MAX ("RBNODE_HEIGHT", expander_size) (differs per case) for
+ row height calculation, added style_set callback
+
2002-01-27 Anders Carlsson <andersca@gnu.org>
* gtk/gtklabel.c (gtk_label_create_window): Set the cursor to
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index c0a387a9d..1b6796a30 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,15 @@
+Sun Jan 27 22:13:02 Kristian Rietveld <kris@gtk.org>
+
+ Fix for bug #69586
+
+ * gtk/gtktreeprivate.h: get rid of tab_offset, introduce
+ expander_size
+
+ * gtk/gtktreeview.c: get rid of ->priv->tab_offset, introduce
+ expander_size caching (from style), fix CELL_HEIGHT macro,
+ use MAX ("RBNODE_HEIGHT", expander_size) (differs per case) for
+ row height calculation, added style_set callback
+
2002-01-27 Anders Carlsson <andersca@gnu.org>
* gtk/gtklabel.c (gtk_label_create_window): Set the cursor to
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index c0a387a9d..1b6796a30 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,15 @@
+Sun Jan 27 22:13:02 Kristian Rietveld <kris@gtk.org>
+
+ Fix for bug #69586
+
+ * gtk/gtktreeprivate.h: get rid of tab_offset, introduce
+ expander_size
+
+ * gtk/gtktreeview.c: get rid of ->priv->tab_offset, introduce
+ expander_size caching (from style), fix CELL_HEIGHT macro,
+ use MAX ("RBNODE_HEIGHT", expander_size) (differs per case) for
+ row height calculation, added style_set callback
+
2002-01-27 Anders Carlsson <andersca@gnu.org>
* gtk/gtklabel.c (gtk_label_create_window): Set the cursor to
diff --git a/gtk/gtktreeprivate.h b/gtk/gtktreeprivate.h
index 19ca7f33a..f443c6939 100644
--- a/gtk/gtktreeprivate.h
+++ b/gtk/gtktreeprivate.h
@@ -84,13 +84,13 @@ struct _GtkTreeViewPrivate
/* tree information */
GtkRBTree *tree;
- gint tab_offset;
GtkRBNode *button_pressed_node;
GtkRBTree *button_pressed_tree;
GList *children;
gint width;
gint height;
+ gint expander_size;
GtkAdjustment *hadjustment;
GtkAdjustment *vadjustment;
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index ebcfa7e1b..87d972968 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -53,7 +53,7 @@
*/
#define BACKGROUND_HEIGHT(node) (GTK_RBNODE_GET_HEIGHT (node))
-#define CELL_HEIGHT(node, separator) (BACKGROUND_HEIGHT (node) - separator);
+#define CELL_HEIGHT(node, separator) ((BACKGROUND_HEIGHT (node)) - (separator))
#define TREE_WINDOW_Y_TO_RBTREE_Y(tree_view,y) ((y) + tree_view->priv->dy)
#define RBTREE_Y_TO_TREE_WINDOW_Y(tree_view,y) ((y) - tree_view->priv->dy)
@@ -170,6 +170,8 @@ static gint gtk_tree_view_focus_out (GtkWidget *widget,
GdkEventFocus *event);
static gint gtk_tree_view_focus (GtkWidget *widget,
GtkDirectionType direction);
+static void gtk_tree_view_style_set (GtkWidget *widget,
+ GtkStyle *previous_style);
/* container signals */
static void gtk_tree_view_remove (GtkContainer *container,
@@ -474,6 +476,7 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
widget_class->drag_drop = gtk_tree_view_drag_drop;
widget_class->drag_data_received = gtk_tree_view_drag_data_received;
widget_class->focus = gtk_tree_view_focus;
+ widget_class->style_set = gtk_tree_view_style_set;
/* GtkContainer signals */
container_class->remove = gtk_tree_view_remove;
@@ -893,10 +896,8 @@ gtk_tree_view_init (GtkTreeView *tree_view)
GTK_WIDGET_SET_FLAGS (tree_view, GTK_CAN_FOCUS);
tree_view->priv->flags = GTK_TREE_VIEW_IS_LIST | GTK_TREE_VIEW_SHOW_EXPANDERS | GTK_TREE_VIEW_DRAW_KEYFOCUS | GTK_TREE_VIEW_HEADERS_VISIBLE;
- gtk_widget_style_get (GTK_WIDGET (tree_view), "expander_size", &tree_view->priv->tab_offset, NULL);
/* We need some padding */
- tree_view->priv->tab_offset += EXPANDER_EXTRA_PADDING;
tree_view->priv->dy = 0;
tree_view->priv->n_columns = 0;
tree_view->priv->header_height = 1;
@@ -1720,7 +1721,8 @@ gtk_tree_view_button_press (GtkWidget *widget,
path = _gtk_tree_view_find_path (tree_view, tree, node);
depth = gtk_tree_path_get_depth (path);
background_area.y = y_offset + event->y;
- background_area.height = GTK_RBNODE_GET_HEIGHT (node);
+ background_area.height = MAX (GTK_RBNODE_GET_HEIGHT (node),
+ tree_view->priv->expander_size);
background_area.x = 0;
/* Let the column have a chance at selecting it. */
@@ -1748,8 +1750,8 @@ gtk_tree_view_button_press (GtkWidget *widget,
if (gtk_tree_view_is_expander_column (tree_view, column) &&
TREE_VIEW_DRAW_EXPANDERS(tree_view))
{
- cell_area.x += depth*tree_view->priv->tab_offset;
- cell_area.width -= depth*tree_view->priv->tab_offset;
+ cell_area.x += depth * tree_view->priv->expander_size;
+ cell_area.width -= depth * tree_view->priv->expander_size;
}
break;
}
@@ -2028,7 +2030,7 @@ coords_are_over_arrow (GtkTreeView *tree_view,
arrow.y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node);
- arrow.height = BACKGROUND_HEIGHT (node);
+ arrow.height = MAX (BACKGROUND_HEIGHT (node), tree_view->priv->expander_size);
gtk_tree_view_get_arrow_xrange (tree_view, tree, &arrow.x, &x2);
@@ -2207,13 +2209,8 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
gint i, j = 1;
GdkGC *gc;
GdkColor col;
- gint expander_size;
- gtk_widget_style_get (widget,
- "expander_size", &expander_size,
- NULL);
-
- width = expander_size;
+ width = tree_view->priv->expander_size;
/* Get x, y, width, height of arrow */
gdk_window_get_origin (tree_view->priv->header_window, &x, &y);
@@ -2227,8 +2224,8 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
x += reorder->right_column->button->allocation.x - width/2;
height = reorder->right_column->button->allocation.height;
}
- y -= expander_size/2; /* The arrow takes up only half the space */
- height += expander_size;
+ y -= tree_view->priv->expander_size/2; /* The arrow takes up only half the space */
+ height += tree_view->priv->expander_size;
/* Create the new window */
if (tree_view->priv->drag_column_window_state != DRAG_COLUMN_WINDOW_STATE_ARROW)
@@ -2281,13 +2278,8 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
gint i, j = 1;
GdkGC *gc;
GdkColor col;
- gint expander_size;
-
- gtk_widget_style_get (widget,
- "expander_size", &expander_size,
- NULL);
- width = expander_size;
+ width = tree_view->priv->expander_size;
/* Get x, y, width, height of arrow */
width = width/2; /* remember, the arrow only takes half the available width */
@@ -2300,8 +2292,8 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
else
height = reorder->right_column->button->allocation.height;
- y -= expander_size;
- height += 2*expander_size;
+ y -= tree_view->priv->expander_size;
+ height += 2*tree_view->priv->expander_size;
/* Create the new window */
if (tree_view->priv->drag_column_window_state != DRAG_COLUMN_WINDOW_STATE_ARROW_LEFT &&
@@ -2330,7 +2322,7 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
/* Draw the 2 arrows as per above */
col.pixel = 0;
gdk_gc_set_foreground (gc, &col);
- j = expander_size;
+ j = tree_view->priv->expander_size;
for (i = 0; i < width; i ++)
{
gint k;
@@ -2339,8 +2331,8 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view)
else
k = i;
gdk_draw_line (mask, gc, k, j, k, height - j);
- gdk_draw_line (mask, gc, k, 0, k, expander_size - j);
- gdk_draw_line (mask, gc, k, height, k, height - expander_size + j);
+ gdk_draw_line (mask, gc, k, 0, k, tree_view->priv->expander_size - j);
+ gdk_draw_line (mask, gc, k, height, k, height - tree_view->priv->expander_size + j);
j--;
}
gdk_gc_destroy (gc);
@@ -2679,7 +2671,7 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
{
gboolean parity;
- max_height = BACKGROUND_HEIGHT (node);
+ max_height = MAX (BACKGROUND_HEIGHT (node), tree_view->priv->expander_size);
x_offset = -event->area.x;
cell_offset = 0;
@@ -2797,8 +2789,8 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
if (gtk_tree_view_is_expander_column (tree_view, column) &&
TREE_VIEW_DRAW_EXPANDERS(tree_view))
{
- cell_area.x += depth*tree_view->priv->tab_offset;
- cell_area.width -= depth*tree_view->priv->tab_offset;
+ cell_area.x += depth * tree_view->priv->expander_size;
+ cell_area.width -= depth * tree_view->priv->expander_size;
/* If we have an expander column, the highlight underline
* starts with that column, so that it indicates which
@@ -2881,7 +2873,7 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
widget,
"treeview-drop-indicator",
0, BACKGROUND_FIRST_PIXEL (tree_view, tree, node),
- width, BACKGROUND_HEIGHT (node));
+ width, MAX (BACKGROUND_HEIGHT (node), tree_view->priv->expander_size));
break;
}
@@ -3162,7 +3154,6 @@ validate_row (GtkTreeView *tree_view,
gint depth = gtk_tree_path_get_depth (path);
gboolean retval = FALSE;
-
/* double check the row needs validating */
if (! GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_INVALID) &&
! GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_COLUMN_INVALID))
@@ -3192,9 +3183,12 @@ validate_row (GtkTreeView *tree_view,
NULL, NULL, NULL,
&tmp_width, &tmp_height);
height = MAX (height, tmp_height);
+ height = MAX (height, tree_view->priv->expander_size);
if (gtk_tree_view_is_expander_column (tree_view, column) && TREE_VIEW_DRAW_EXPANDERS (tree_view))
- tmp_width = tmp_width + horizontal_separator + depth * tree_view->priv->tab_offset;
+ {
+ tmp_width = tmp_width + horizontal_separator + depth * (tree_view->priv->expander_size);
+ }
else
tmp_width = tmp_width + horizontal_separator;
@@ -3262,7 +3256,7 @@ validate_visible_area (GtkTreeView *tree_view)
if (validate_row (tree_view, tree, node, &iter, path))
size_changed = TRUE;
}
- height -= GTK_RBNODE_GET_HEIGHT (node);
+ height -= MAX (GTK_RBNODE_GET_HEIGHT (node), tree_view->priv->expander_size);
if (node->children)
{
@@ -4653,6 +4647,34 @@ gtk_tree_view_focus (GtkWidget *widget,
return TRUE;
}
+static void
+gtk_tree_view_style_set (GtkWidget *widget,
+ GtkStyle *previous_style)
+{
+ GtkTreeView *tree_view;
+ GList *list;
+ GtkTreeViewColumn *column;
+
+ g_return_if_fail (GTK_IS_TREE_VIEW (widget));
+
+ tree_view = GTK_TREE_VIEW (widget);
+
+ gtk_widget_style_get (widget,
+ "expander_size", &tree_view->priv->expander_size,
+ NULL);
+ tree_view->priv->expander_size += EXPANDER_EXTRA_PADDING;
+
+ for (list = tree_view->priv->columns; list; list = list->next)
+ {
+ column = list->data;
+ gtk_tree_view_column_cell_set_dirty (column);
+ }
+
+ _gtk_rbtree_mark_invalid (tree_view->priv->tree);
+
+ gtk_widget_queue_resize (widget);
+}
+
static void
gtk_tree_view_set_focus_child (GtkContainer *container,
@@ -5278,7 +5300,7 @@ gtk_tree_view_get_arrow_xrange (GtkTreeView *tree_view,
NULL);
if (indent_expanders)
- x_offset += tree_view->priv->tab_offset * _gtk_rbtree_get_depth (tree);
+ x_offset += tree_view->priv->expander_size * _gtk_rbtree_get_depth (tree);
if (x1)
*x1 = x_offset;
@@ -5287,7 +5309,7 @@ gtk_tree_view_get_arrow_xrange (GtkTreeView *tree_view,
{
/* +1 because x2 isn't included in the range. */
if (x2)
- *x2 = x_offset + tree_view->priv->tab_offset + 1;
+ *x2 = x_offset + tree_view->priv->expander_size + 1;
}
else
{
@@ -5352,7 +5374,6 @@ gtk_tree_view_discover_dirty_iter (GtkTreeView *tree_view,
"horizontal_separator", &horizontal_separator,
NULL);
-
if (height)
*height = -1;
@@ -5388,7 +5409,7 @@ gtk_tree_view_discover_dirty_iter (GtkTreeView *tree_view,
if (gtk_tree_view_is_expander_column (tree_view, column) &&
TREE_VIEW_DRAW_EXPANDERS (tree_view))
{
- if (depth * tree_view->priv->tab_offset + horizontal_separator + width > column->requested_width)
+ if (depth * tree_view->priv->expander_size + horizontal_separator + width > column->requested_width)
{
gtk_tree_view_column_cell_set_dirty (column);
retval = TRUE;
@@ -5462,22 +5483,25 @@ gtk_tree_view_clamp_node_visible (GtkTreeView *tree_view,
GtkRBNode *node)
{
gint offset;
+ gint real_height;
/* We process updates because we want to clear old selected items when we scroll.
* if this is removed, we get a "selection streak" at the bottom. */
if (GTK_WIDGET_REALIZED (tree_view))
gdk_window_process_updates (tree_view->priv->bin_window, TRUE);
+ real_height = MAX (GTK_RBNODE_GET_HEIGHT (node), tree_view->priv->expander_size);
+
offset = _gtk_rbtree_node_find_offset (tree, node);
/* we reverse the order, b/c in the unusual case of the
* node's height being taller then the visible area, we'd rather
* have the node flush to the top
*/
- if (offset + GTK_RBNODE_GET_HEIGHT (node) >
+ if (offset + real_height >
tree_view->priv->vadjustment->value + tree_view->priv->vadjustment->page_size)
gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment),
- offset + GTK_RBNODE_GET_HEIGHT (node) -
+ offset + real_height -
tree_view->priv->vadjustment->page_size);
if (offset < tree_view->priv->vadjustment->value)
gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment),
@@ -5923,10 +5947,10 @@ gtk_tree_view_queue_draw_arrow (GtkTreeView *tree_view,
return;
rect.x = 0;
- rect.width = MAX (tree_view->priv->tab_offset, GTK_WIDGET (tree_view)->allocation.width);
+ rect.width = MAX (tree_view->priv->expander_size, GTK_WIDGET (tree_view)->allocation.width);
rect.y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node);
- rect.height = BACKGROUND_HEIGHT (node);
+ rect.height = MAX (BACKGROUND_HEIGHT (node), tree_view->priv->expander_size);
if (clip_rect)
{
@@ -5957,7 +5981,7 @@ _gtk_tree_view_queue_draw_node (GtkTreeView *tree_view,
rect.width = MAX (tree_view->priv->width, GTK_WIDGET (tree_view)->allocation.width);
rect.y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node);
- rect.height = BACKGROUND_HEIGHT (node);
+ rect.height = MAX (BACKGROUND_HEIGHT (node), tree_view->priv->expander_size);
if (clip_rect)
{
@@ -6006,8 +6030,8 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view,
gtk_widget_style_get (GTK_WIDGET (tree_view),
"vertical_separator", &vertical_separator,
- "expander_size", &expander_size,
NULL);
+ expander_size = tree_view->priv->expander_size - EXPANDER_EXTRA_PADDING;
if (! GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT))
return;
@@ -6019,7 +6043,7 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view,
area.x = x_offset;
area.y = CELL_FIRST_PIXEL (tree_view, tree, node, vertical_separator);
area.width = expander_size + 2;
- area.height = CELL_HEIGHT (node, vertical_separator);
+ area.height = MAX (CELL_HEIGHT (node, vertical_separator), (expander_size - vertical_separator));
if (node == tree_view->priv->button_pressed_node)
{
@@ -8513,14 +8537,15 @@ gtk_tree_view_get_cell_area (GtkTreeView *tree_view,
return;
rect->y = CELL_FIRST_PIXEL (tree_view, tree, node, vertical_separator);
- rect->height = CELL_HEIGHT (node, vertical_separator);
+ rect->height = MAX (CELL_HEIGHT (node, vertical_separator), tree_view->priv->expander_size - vertical_separator);
if (gtk_tree_view_is_expander_column (tree_view, column) &&
TREE_VIEW_DRAW_EXPANDERS (tree_view))
{
gint depth = gtk_tree_path_get_depth (path) - 1;
- rect->x += depth * tree_view->priv->tab_offset;
- rect->width -= depth * tree_view->priv->tab_offset;
+
+ rect->x += depth * tree_view->priv->expander_size;
+ rect->width -= depth * tree_view->priv->expander_size;
rect->width = MAX (rect->width, 0);
}
}
@@ -8573,7 +8598,7 @@ gtk_tree_view_get_background_area (GtkTreeView *tree_view,
rect->y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node);
- rect->height = BACKGROUND_HEIGHT (node);
+ rect->height = MAX (BACKGROUND_HEIGHT (node), tree_view->priv->expander_size);
}
if (column)
@@ -8972,7 +8997,7 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view,
cell_offset = x;
background_area.y = y;
- background_area.height = BACKGROUND_HEIGHT (node);
+ background_area.height = MAX (BACKGROUND_HEIGHT (node), tree_view->priv->expander_size);
gdk_drawable_get_size (tree_view->priv->bin_window,
&bin_window_width, NULL);
@@ -9026,8 +9051,8 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view,
if (gtk_tree_view_is_expander_column (tree_view, column) &&
TREE_VIEW_DRAW_EXPANDERS(tree_view))
{
- cell_area.x += depth * tree_view->priv->tab_offset;
- cell_area.width -= depth * tree_view->priv->tab_offset;
+ cell_area.x += depth * tree_view->priv->expander_size;
+ cell_area.width -= depth * tree_view->priv->expander_size;
}
if (gtk_tree_view_column_cell_is_visible (column))