diff options
Diffstat (limited to 'gtk/gtktreeitem.c')
-rw-r--r-- | gtk/gtktreeitem.c | 102 |
1 files changed, 36 insertions, 66 deletions
diff --git a/gtk/gtktreeitem.c b/gtk/gtktreeitem.c index aa7a11298..a4f57e3d5 100644 --- a/gtk/gtktreeitem.c +++ b/gtk/gtktreeitem.c @@ -648,23 +648,28 @@ gtk_tree_item_draw (GtkWidget *widget, GTK_TREE (widget->parent)->current_indent + 2); item_area.height = widget->allocation.height; - if (gdk_rectangle_intersect (&item_area, area, &child_area)) + if (gdk_rectangle_intersect(&item_area, area, &child_area)) { - if (!GTK_WIDGET_IS_SENSITIVE (widget)) - gtk_style_set_background (widget->style, widget->window, - GTK_STATE_INSENSITIVE); - else if(GTK_TREE(widget->parent)->view_mode == GTK_TREE_VIEW_LINE && - widget->state == GTK_STATE_SELECTED) - gtk_style_set_background (widget->style, widget->window, widget->state); - else - gdk_window_set_background (widget->window, - &widget->style->base[GTK_STATE_NORMAL]); - - gdk_window_clear_area (widget->window, - child_area.x, child_area.y, - child_area.width, child_area.height); - - /* gtk_tree_item_draw_lines(widget); */ + if (widget->state == GTK_STATE_NORMAL) + { + gdk_window_set_back_pixmap (widget->window, NULL, TRUE); + gdk_window_clear_area (widget->window, area->x, area->y, area->width, area->height); + } + else + { + if (!GTK_WIDGET_IS_SENSITIVE (widget)) + gtk_paint_flat_box(widget->style, widget->window, + widget->state, GTK_STATE_INSENSITIVE, + area, widget, "treeitem", + 0, 0, -1, -1); + else + gtk_paint_flat_box(widget->style, widget->window, + widget->state, GTK_SHADOW_ETCHED_OUT, + area, widget, "treeitem", + 0, 0, -1, -1); + } + + gtk_tree_item_draw_lines(widget); if (tree_item->pixmaps_box && GTK_WIDGET_VISIBLE(tree_item->pixmaps_box) && @@ -673,66 +678,31 @@ gtk_tree_item_draw (GtkWidget *widget, } /* draw right side */ - if (gtk_widget_intersect (bin->child, area, &child_area)) + if (gtk_widget_intersect (bin->child, area, &child_area)) { - if (!GTK_WIDGET_IS_SENSITIVE (widget)) - gtk_style_set_background (widget->style, widget->window, - GTK_STATE_INSENSITIVE); - else if (widget->state == GTK_STATE_NORMAL) - gdk_window_set_background (widget->window, &widget->style->base[GTK_STATE_NORMAL]); - else - gtk_style_set_background (widget->style, widget->window, widget->state); - - gdk_window_clear_area (widget->window, child_area.x, child_area.y, - child_area.width+1, child_area.height); - - if (bin->child && - GTK_WIDGET_VISIBLE(bin->child) && - gtk_widget_intersect (bin->child, area, &child_area)) - gtk_widget_draw (bin->child, &child_area); - } + if (bin->child && + GTK_WIDGET_VISIBLE(bin->child) && + gtk_widget_intersect (bin->child, area, &child_area)) + gtk_widget_draw (bin->child, &child_area); + } + + if (GTK_WIDGET_HAS_FOCUS (widget)) + gtk_paint_focus (widget->style, widget->window, + NULL, widget, "treeitem", + 0, 0, + widget->allocation.width - 1, + widget->allocation.height - 1); - gtk_widget_draw_focus (widget); } } static void gtk_tree_item_draw_focus (GtkWidget *widget) { - GdkGC *gc; - int dx; - g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_TREE_ITEM (widget)); - if (GTK_WIDGET_DRAWABLE (widget)) - { - if (GTK_WIDGET_HAS_FOCUS (widget)) - gc = widget->style->black_gc; - else if (!GTK_WIDGET_IS_SENSITIVE (widget)) - gc = widget->style->bg_gc[GTK_STATE_INSENSITIVE]; - else if (widget->state == GTK_STATE_NORMAL) - gc = widget->style->base_gc[GTK_STATE_NORMAL]; - else - gc = widget->style->bg_gc[widget->state]; - - dx = 0; - - if (GTK_TREE(widget->parent)->view_mode == GTK_TREE_VIEW_ITEM) - dx = (GTK_TREE_ITEM(widget)->pixmaps_box->allocation.width + DEFAULT_DELTA + - GTK_TREE(widget->parent)->current_indent + 1); - - gdk_draw_rectangle (widget->window, gc, FALSE, dx, 0, - widget->allocation.width - 1 - dx, - widget->allocation.height - 1); - - if (GTK_TREE (widget->parent)->view_line && - (!GTK_IS_ROOT_TREE (widget->parent) || - (GTK_IS_ROOT_TREE (widget->parent) && GTK_TREE_ITEM(widget)->subtree))) - { - gtk_tree_item_draw_lines(widget); - } - } + gtk_widget_draw(widget, NULL); } static gint @@ -848,7 +818,7 @@ gtk_real_tree_item_toggle (GtkItem *item) { /* Should we really bother with this bit? A listitem not in a list? * -Johannes Keukelaar - * yes, always be on the save side! + * yes, always be on the safe side! * -timj */ if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED) |