diff --git a/libs/ui/include/psemek/ui/element.hpp b/libs/ui/include/psemek/ui/element.hpp index 9acfae49..5b76f2ba 100644 --- a/libs/ui/include/psemek/ui/element.hpp +++ b/libs/ui/include/psemek/ui/element.hpp @@ -63,6 +63,8 @@ namespace psemek::ui virtual void hide() { set_hidden(true); } virtual void show() { set_hidden(false); } + virtual bool transparent() const { return false; } + virtual std::shared_ptr style() const { return style_; } virtual std::shared_ptr own_style() const { return own_style_; } virtual std::shared_ptr set_style(std::shared_ptr st); diff --git a/libs/ui/include/psemek/ui/event_interceptor.hpp b/libs/ui/include/psemek/ui/event_interceptor.hpp index d027a2bc..8a404571 100644 --- a/libs/ui/include/psemek/ui/event_interceptor.hpp +++ b/libs/ui/include/psemek/ui/event_interceptor.hpp @@ -25,6 +25,8 @@ namespace psemek::ui bool on_event(mouse_wheel const & event) override; bool on_event(key_press const & event) override; + bool transparent() const override { return true; } + void draw(painter &) const override {} private: diff --git a/libs/ui/include/psemek/ui/grid_layout.hpp b/libs/ui/include/psemek/ui/grid_layout.hpp index 3e194c14..184ae2d8 100644 --- a/libs/ui/include/psemek/ui/grid_layout.hpp +++ b/libs/ui/include/psemek/ui/grid_layout.hpp @@ -52,6 +52,8 @@ namespace psemek::ui struct shape const & shape() const override { return shape_; } void reshape(geom::box const & bbox) override; + bool transparent() const override { return true; } + void draw(painter &) const override {} ~grid_layout() override; diff --git a/libs/ui/include/psemek/ui/image_view.hpp b/libs/ui/include/psemek/ui/image_view.hpp index 7ee6320d..aec9d3aa 100644 --- a/libs/ui/include/psemek/ui/image_view.hpp +++ b/libs/ui/include/psemek/ui/image_view.hpp @@ -31,6 +31,8 @@ namespace psemek::ui geom::box size_constraints() const override; + bool transparent() const override { return true; } + void draw(painter & p) const override; private: diff --git a/libs/ui/include/psemek/ui/label.hpp b/libs/ui/include/psemek/ui/label.hpp index 8bc5616d..15e93011 100644 --- a/libs/ui/include/psemek/ui/label.hpp +++ b/libs/ui/include/psemek/ui/label.hpp @@ -75,6 +75,8 @@ namespace psemek::ui void style_updated() override; void own_style_updated() override; + bool transparent() const override { return true; } + void draw(painter & p) const override; protected: diff --git a/libs/ui/include/psemek/ui/positioner.hpp b/libs/ui/include/psemek/ui/positioner.hpp index 6fb09112..08a5c71c 100644 --- a/libs/ui/include/psemek/ui/positioner.hpp +++ b/libs/ui/include/psemek/ui/positioner.hpp @@ -28,6 +28,8 @@ namespace psemek::ui virtual void set_position(geom::point const & p, x_align x, y_align y, bool clamp = true); + bool transparent() const override { return true; } + void draw(ui::painter &) const override {} private: diff --git a/libs/ui/include/psemek/ui/screen.hpp b/libs/ui/include/psemek/ui/screen.hpp index 6b54ba16..5f8dfa99 100644 --- a/libs/ui/include/psemek/ui/screen.hpp +++ b/libs/ui/include/psemek/ui/screen.hpp @@ -42,6 +42,8 @@ namespace psemek::ui geom::box size_constraints() const override; + bool transparent() const override { return true; } + void draw(painter &) const override {} ~screen() override; diff --git a/libs/ui/source/controller.cpp b/libs/ui/source/controller.cpp index f60e4f82..7af3983f 100644 --- a/libs/ui/source/controller.cpp +++ b/libs/ui/source/controller.cpp @@ -41,6 +41,11 @@ namespace psemek::ui return root->size_constraints(); } + bool transparent() const override + { + return true; + } + void draw(painter &) const override {} std::shared_ptr root;