static gboolean st_box_layout_get_paint_volume (ClutterActor *actor, ClutterPaintVolume *volume) { StBoxLayout *self = ST_BOX_LAYOUT (actor); gdouble x, y; if (!CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->get_paint_volume (actor, volume)) return FALSE; /* When scrolled, st_box_layout_apply_transform() includes the scroll offset * and affects paint volumes. This is right for our children, but our paint volume * is determined by our allocation and borders and doesn't scroll, so we need * to reverse-compensate here, the same as we do when painting. */ get_border_paint_offsets (self, &x, &y); if (x != 0 || y != 0) { ClutterVertex origin; clutter_paint_volume_get_origin (volume, &origin); origin.x += x; origin.y += y; clutter_paint_volume_set_origin (volume, &origin); } return TRUE; }
static gboolean mex_column_get_paint_volume (ClutterActor *self, ClutterPaintVolume *volume) { MexColumnPrivate *priv = MEX_COLUMN (self)->priv; ClutterVertex v; if (!clutter_paint_volume_set_from_allocation (volume, self)) return FALSE; if (priv->adjustment) { clutter_paint_volume_get_origin (volume, &v); v.y += priv->adjustment_value, clutter_paint_volume_set_origin (volume, &v); } return TRUE; }
static gboolean st_box_layout_get_paint_volume (ClutterActor *actor, ClutterPaintVolume *volume) { StBoxLayout *self = ST_BOX_LAYOUT (actor); gdouble x, y; StBoxLayoutPrivate *priv = self->priv; StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor)); ClutterActorBox allocation_box; ClutterActorBox content_box; ClutterVertex origin; /* When have an adjustment we are clipped to the content box, so base * our paint volume on that. */ if (priv->hadjustment || priv->vadjustment) { clutter_actor_get_allocation_box (actor, &allocation_box); st_theme_node_get_content_box (theme_node, &allocation_box, &content_box); origin.x = content_box.x1 - allocation_box.x1; origin.y = content_box.y1 - allocation_box.y2; origin.z = 0.f; clutter_paint_volume_set_width (volume, content_box.x2 - content_box.x1); clutter_paint_volume_set_height (volume, content_box.y2 - content_box.y1); } else if (!CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->get_paint_volume (actor, volume)) return FALSE; /* When scrolled, st_box_layout_apply_transform() includes the scroll offset * and affects paint volumes. This is right for our children, but our paint volume * is determined by our allocation and borders and doesn't scroll, so we need * to reverse-compensate here, the same as we do when painting. */ get_border_paint_offsets (self, &x, &y); if (x != 0 || y != 0) { clutter_paint_volume_get_origin (volume, &origin); origin.x += x; origin.y += y; clutter_paint_volume_set_origin (volume, &origin); } return TRUE; }
static gboolean mx_viewport_get_paint_volume (ClutterActor *actor, ClutterPaintVolume *volume) { MxViewportPrivate *priv = MX_VIEWPORT (actor)->priv; ClutterVertex vertex; if (!clutter_paint_volume_set_from_allocation (volume, actor)) return FALSE; clutter_paint_volume_get_origin (volume, &vertex); if (priv->hadjustment) vertex.x += mx_adjustment_get_value (priv->hadjustment); if (priv->vadjustment) vertex.y += mx_adjustment_get_value (priv->vadjustment); clutter_paint_volume_set_origin (volume, &vertex); return TRUE; }