static void gossip_cell_renderer_expander_render (GtkCellRenderer *cell, cairo_t *cr, GtkWidget *widget, const GdkRectangle *background_area, const GdkRectangle *cell_area, GtkCellRendererState flags) { GossipCellRendererExpander *expander; GossipCellRendererExpanderPriv *priv; GtkStyleContext *style_context; gint x_offset, y_offset; gint xpad, ypad; expander = (GossipCellRendererExpander*) cell; priv = GET_PRIV (expander); gossip_cell_renderer_expander_get_size (cell, widget, cell_area, &x_offset, &y_offset, NULL, NULL); gtk_cell_renderer_get_padding (cell, &xpad, &ypad); style_context = gtk_widget_get_style_context (widget); gtk_style_context_set_state (style_context, priv->style_flags); gtk_render_expander (gtk_widget_get_style_context (widget), cr, cell_area->x + x_offset + xpad, cell_area->y + y_offset + ypad, priv->expander_size, priv->expander_size); }
static void gossip_cell_renderer_expander_render (GtkCellRenderer *cell, cairo_t *cr, GtkWidget *widget, const GdkRectangle *background_area, const GdkRectangle *cell_area, GtkCellRendererState flags) { GossipCellRendererExpander *expander; GossipCellRendererExpanderPriv *priv; GtkExpanderStyle expander_style; gint x_offset, y_offset; gint xpad, ypad; expander = (GossipCellRendererExpander*) cell; priv = GET_PRIV (expander); if (priv->animation_node) { GtkTreePath *path; GdkRectangle rect; /* Not sure if I like this ... */ path = gtk_tree_row_reference_get_path (priv->animation_node); gtk_tree_view_get_background_area (priv->animation_view, path, NULL, &rect); gtk_tree_path_free (path); if (background_area->y == rect.y) expander_style = priv->animation_style; else expander_style = priv->expander_style; } else expander_style = priv->expander_style; gossip_cell_renderer_expander_get_size (cell, widget, cell_area, &x_offset, &y_offset, NULL, NULL); gtk_cell_renderer_get_padding (cell, &xpad, &ypad); gtk_paint_expander (gtk_widget_get_style (widget), cr, GTK_STATE_NORMAL, widget, "treeview", cell_area->x + x_offset + xpad + priv->expander_size / 2, cell_area->y + y_offset + ypad + priv->expander_size / 2, expander_style); }