summaryrefslogtreecommitdiff
path: root/gtk/gtktreeviewcolumn.c
diff options
context:
space:
mode:
authorBill Haneman <billh@src.gnome.org>2002-01-28 20:19:42 +0000
committerBill Haneman <billh@src.gnome.org>2002-01-28 20:19:42 +0000
commit011cb31f184b29aa3985d1d61294f23b98d10d58 (patch)
treea48d995b2712a2e3d2c3ade1e5431dc5349b158e /gtk/gtktreeviewcolumn.c
parentd8068f867cd25f28298fb510c39ba0fd20be6ce5 (diff)
downloadgtk+-011cb31f184b29aa3985d1d61294f23b98d10d58.tar.gz
Changes to gtktreeview to better support thicker focus lines,
and enhancements to the visibility of the default expander when its size has been increased.
Diffstat (limited to 'gtk/gtktreeviewcolumn.c')
-rw-r--r--gtk/gtktreeviewcolumn.c51
1 files changed, 33 insertions, 18 deletions
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c
index a0291277c4..df79c9b66c 100644
--- a/gtk/gtktreeviewcolumn.c
+++ b/gtk/gtktreeviewcolumn.c
@@ -2131,6 +2131,7 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column,
{
GList *list;
gboolean first_cell = TRUE;
+ gint focus_line_width;
g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column));
@@ -2139,6 +2140,8 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column,
if (width)
* width = 0;
+ gtk_widget_style_get (tree_column->tree_view, "focus-line-width", &focus_line_width, NULL);
+
for (list = tree_column->cell_list; list; list = list->next)
{
GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data;
@@ -2162,8 +2165,8 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column,
&new_height);
if (height)
- * height = MAX (*height, new_height);
- info->requested_width = MAX (info->requested_width, new_width);
+ * height = MAX (*height, new_height + focus_line_width * 2);
+ info->requested_width = MAX (info->requested_width, new_width + focus_line_width * 2);
if (width)
* width += info->requested_width;
first_cell = TRUE;
@@ -2190,6 +2193,7 @@ gtk_tree_view_column_cell_render_or_focus (GtkTreeViewColumn *tree_column,
gint full_requested_width = 0;
gint extra_space;
gint min_x, min_y, max_x, max_y;
+ gint focus_line_width;
min_x = G_MAXINT;
min_y = G_MAXINT;
@@ -2198,6 +2202,8 @@ gtk_tree_view_column_cell_render_or_focus (GtkTreeViewColumn *tree_column,
real_cell_area = *cell_area;
+ gtk_widget_style_get (GTK_WIDGET (tree_column->tree_view),
+ "focus-line-width", &focus_line_width, NULL);
/* Find out how my extra space we have to allocate */
for (list = tree_column->cell_list; list; list = list->next)
{
@@ -2227,6 +2233,7 @@ gtk_tree_view_column_cell_render_or_focus (GtkTreeViewColumn *tree_column,
real_cell_area.width = info->requested_width +
(info->expand?extra_space:0);
+ real_cell_area.x += focus_line_width;
if (render)
{
gtk_cell_renderer_render (info->cell,
@@ -2284,17 +2291,17 @@ gtk_tree_view_column_cell_render_or_focus (GtkTreeViewColumn *tree_column,
if (min_x >= max_x || min_y >= max_y)
{
*focus_rectangle = *cell_area;
- focus_rectangle->x -= 1;
- focus_rectangle->y -= 1;
- focus_rectangle->width += 2;
- focus_rectangle->height += 2;
+ focus_rectangle->x -= focus_line_width;
+ focus_rectangle->y -= focus_line_width;
+ focus_rectangle->width += 2 * focus_line_width;
+ focus_rectangle->height += 2 * focus_line_width;
}
else
{
- focus_rectangle->x = min_x - 1;
- focus_rectangle->y = min_y - 1;
- focus_rectangle->width = (max_x - min_x) + 2;
- focus_rectangle->height = (max_y - min_y) + 2;
+ focus_rectangle->x = min_x - focus_line_width;
+ focus_rectangle->y = min_y - focus_line_width;
+ focus_rectangle->width = (max_x - min_x) + 2 * focus_line_width;
+ focus_rectangle->height = (max_y - min_y) + 2 * focus_line_width;
}
}
}
@@ -2400,23 +2407,28 @@ gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn *tree_column,
GdkRectangle *expose_area,
guint flags)
{
+ gint focus_line_width;
+ GtkStateType cell_state;
+
g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column));
+ gtk_widget_style_get (GTK_WIDGET (tree_column->tree_view),
+ "focus-line-width", &focus_line_width, NULL);
if (tree_column->editable_widget)
{
/* This function is only called on the editable row when editing.
*/
-
+#if 0
gtk_paint_focus (tree_column->tree_view->style,
window,
GTK_WIDGET_STATE (tree_column->tree_view),
NULL,
tree_column->tree_view,
"treeview",
- cell_area->x - 1,
- cell_area->y - 1,
- cell_area->width + 2,
- cell_area->height + 2);
-
+ cell_area->x - focus_line_width,
+ cell_area->y - focus_line_width,
+ cell_area->width + 2 * focus_line_width,
+ cell_area->height + 2 * focus_line_width);
+#endif
}
else
{
@@ -2429,10 +2441,13 @@ gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn *tree_column,
flags,
FALSE,
&focus_rectangle);
-
+
+ cell_state = flags & GTK_CELL_RENDERER_SELECTED ? GTK_STATE_SELECTED :
+ (flags & GTK_CELL_RENDERER_PRELIT ? GTK_STATE_PRELIGHT :
+ (flags & GTK_CELL_RENDERER_INSENSITIVE ? GTK_STATE_INSENSITIVE : GTK_STATE_NORMAL));
gtk_paint_focus (tree_column->tree_view->style,
window,
- GTK_WIDGET_STATE (tree_column->tree_view),
+ cell_state,
NULL,
tree_column->tree_view,
"treeview",