treeview: Unify all line drawing into the same function
This is useful because the dashing stuff needs to be done and it seems like a good idea to unify it.
This commit is contained in:
parent
526aac1fda
commit
8dd3317502
@ -4221,6 +4221,44 @@ draw_empty_focus (GtkTreeView *tree_view, GdkRectangle *clip_area)
|
|||||||
1, 1, w, h);
|
1, 1, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GTK_TREE_VIEW_GRID_LINE,
|
||||||
|
GTK_TREE_VIEW_TREE_LINE,
|
||||||
|
GTK_TREE_VIEW_FOREGROUND_LINE
|
||||||
|
} GtkTreeViewLineType;
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_tree_view_draw_line (GtkTreeView *tree_view,
|
||||||
|
GdkWindow *window,
|
||||||
|
GtkTreeViewLineType type,
|
||||||
|
int x1,
|
||||||
|
int y1,
|
||||||
|
int x2,
|
||||||
|
int y2)
|
||||||
|
{
|
||||||
|
GdkGC *gc;
|
||||||
|
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case GTK_TREE_VIEW_TREE_LINE:
|
||||||
|
gc = tree_view->priv->tree_line_gc;
|
||||||
|
break;
|
||||||
|
case GTK_TREE_VIEW_GRID_LINE:
|
||||||
|
gc = tree_view->priv->grid_line_gc;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
g_assert_not_reached ();
|
||||||
|
/* fall through */
|
||||||
|
case GTK_TREE_VIEW_FOREGROUND_LINE:
|
||||||
|
gc = GTK_WIDGET (tree_view)->style->fg_gc[gtk_widget_get_state (GTK_WIDGET (tree_view))];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
gdk_draw_line (window, gc,
|
||||||
|
x1, y1,
|
||||||
|
x2, y2);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_tree_view_draw_grid_lines (GtkTreeView *tree_view,
|
gtk_tree_view_draw_grid_lines (GtkTreeView *tree_view,
|
||||||
GdkEventExpose *event,
|
GdkEventExpose *event,
|
||||||
@ -4248,8 +4286,8 @@ gtk_tree_view_draw_grid_lines (GtkTreeView *tree_view,
|
|||||||
|
|
||||||
current_x += column->width;
|
current_x += column->width;
|
||||||
|
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
tree_view->priv->grid_line_gc,
|
GTK_TREE_VIEW_GRID_LINE,
|
||||||
current_x - 1, 0,
|
current_x - 1, 0,
|
||||||
current_x - 1, tree_view->priv->height);
|
current_x - 1, tree_view->priv->height);
|
||||||
}
|
}
|
||||||
@ -4704,15 +4742,15 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
|
|||||||
if (draw_hgrid_lines)
|
if (draw_hgrid_lines)
|
||||||
{
|
{
|
||||||
if (background_area.y > 0)
|
if (background_area.y > 0)
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
tree_view->priv->grid_line_gc,
|
GTK_TREE_VIEW_GRID_LINE,
|
||||||
background_area.x, background_area.y,
|
background_area.x, background_area.y,
|
||||||
background_area.x + background_area.width,
|
background_area.x + background_area.width,
|
||||||
background_area.y);
|
background_area.y);
|
||||||
|
|
||||||
if (y_offset + max_height >= event->area.height)
|
if (y_offset + max_height >= event->area.height)
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
tree_view->priv->grid_line_gc,
|
GTK_TREE_VIEW_GRID_LINE,
|
||||||
background_area.x, background_area.y + max_height,
|
background_area.x, background_area.y + max_height,
|
||||||
background_area.x + background_area.width,
|
background_area.x + background_area.width,
|
||||||
background_area.y + max_height);
|
background_area.y + max_height);
|
||||||
@ -4733,8 +4771,8 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
|
|||||||
if ((node->flags & GTK_RBNODE_IS_PARENT) == GTK_RBNODE_IS_PARENT
|
if ((node->flags & GTK_RBNODE_IS_PARENT) == GTK_RBNODE_IS_PARENT
|
||||||
&& depth > 1)
|
&& depth > 1)
|
||||||
{
|
{
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
tree_view->priv->tree_line_gc,
|
GTK_TREE_VIEW_TREE_LINE,
|
||||||
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
||||||
y1,
|
y1,
|
||||||
x + tree_view->priv->expander_size * (depth - 1.1) * mult,
|
x + tree_view->priv->expander_size * (depth - 1.1) * mult,
|
||||||
@ -4742,8 +4780,8 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
else if (depth > 1)
|
else if (depth > 1)
|
||||||
{
|
{
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
tree_view->priv->tree_line_gc,
|
GTK_TREE_VIEW_TREE_LINE,
|
||||||
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
||||||
y1,
|
y1,
|
||||||
x + tree_view->priv->expander_size * (depth - 0.5) * mult,
|
x + tree_view->priv->expander_size * (depth - 0.5) * mult,
|
||||||
@ -4757,15 +4795,15 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
|
|||||||
GtkRBTree *tmp_tree;
|
GtkRBTree *tmp_tree;
|
||||||
|
|
||||||
if (!_gtk_rbtree_next (tree, node))
|
if (!_gtk_rbtree_next (tree, node))
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
tree_view->priv->tree_line_gc,
|
GTK_TREE_VIEW_TREE_LINE,
|
||||||
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
||||||
y0,
|
y0,
|
||||||
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
||||||
y1);
|
y1);
|
||||||
else
|
else
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
tree_view->priv->tree_line_gc,
|
GTK_TREE_VIEW_TREE_LINE,
|
||||||
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
||||||
y0,
|
y0,
|
||||||
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
x + tree_view->priv->expander_size * (depth - 1.5) * mult,
|
||||||
@ -4777,8 +4815,8 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
|
|||||||
for (i = depth - 2; i > 0; i--)
|
for (i = depth - 2; i > 0; i--)
|
||||||
{
|
{
|
||||||
if (_gtk_rbtree_next (tmp_tree, tmp_node))
|
if (_gtk_rbtree_next (tmp_tree, tmp_node))
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
tree_view->priv->tree_line_gc,
|
GTK_TREE_VIEW_TREE_LINE,
|
||||||
x + tree_view->priv->expander_size * (i - 0.5) * mult,
|
x + tree_view->priv->expander_size * (i - 0.5) * mult,
|
||||||
y0,
|
y0,
|
||||||
x + tree_view->priv->expander_size * (i - 0.5) * mult,
|
x + tree_view->priv->expander_size * (i - 0.5) * mult,
|
||||||
@ -4866,8 +4904,8 @@ gtk_tree_view_bin_expose (GtkWidget *widget,
|
|||||||
|
|
||||||
if (highlight_y >= 0)
|
if (highlight_y >= 0)
|
||||||
{
|
{
|
||||||
gdk_draw_line (event->window,
|
gtk_tree_view_draw_line (tree_view, event->window,
|
||||||
widget->style->fg_gc[gtk_widget_get_state (widget)],
|
GTK_TREE_VIEW_FOREGROUND_LINE,
|
||||||
rtl ? highlight_x + expander_cell_width : highlight_x,
|
rtl ? highlight_x + expander_cell_width : highlight_x,
|
||||||
highlight_y,
|
highlight_y,
|
||||||
rtl ? 0 : bin_window_width,
|
rtl ? 0 : bin_window_width,
|
||||||
|
Loading…
Reference in New Issue
Block a user