16#include <boost/range/adaptor/reversed.hpp>
26 _name =
"CanvasItemGroup";
33 _name =
"CanvasItemGroup:Root";
39 items.clear_and_dispose([] (
auto c) {
delete c; });
61 item._mark_net_invisible();
69 if (!
item.is_visible())
continue;
70 item.visit_page_rects(f);
84 c._invalidate_ctrl_handles();
93 std::cout <<
"CanvasItemGroup::pick_item:" << std::endl;
94 std::cout <<
" PICKING: In group: " <<
_name <<
" bounds: " <<
_bounds << std::endl;
97 for (
auto &
item : boost::adaptors::reverse(
items)) {
98 if constexpr (
DEBUG_LOGGING) std::cout <<
" PICKING: Checking: " <<
item.get_name() <<
" bounds: " <<
item.get_bounds() << std::endl;
100 if (
item.is_visible() &&
item.is_pickable() &&
item.contains(p)) {
102 if (
auto ret = group->pick_item(p)) {
constexpr bool DEBUG_LOGGING
A CanvasItem that contains other CanvasItem's.
Two-dimensional point that doubles as a vector.
Axis aligned, non-empty rectangle.
CanvasItem * pick_item(Geom::Point const &p)
void _update(bool propagate) override
void _mark_net_invisible() override
~CanvasItemGroup() override
void visit_page_rects(std::function< void(Geom::Rect const &)> const &) const override
void _render(Inkscape::CanvasItemBuffer &buf) const override
void _invalidate_ctrl_handles() override
friend class CanvasItemGroup
void update(SPCtx *ctx, unsigned int flags) override
Helper class to stream background task notifications as a series of messages.
Class used when rendering canvas items.