3#include "base_container_widget.hpp"
4#include <concepts/widget.hpp>
11template <
typename T,
bool can_delete = true>
13 :
deleter<T, base_container_widget, can_delete>
18 void update()
override final;
59template <
typename T,
bool can_delete>
63 static_cast<T*
>(
this)->set();
65 for (
auto& c : this->children) c->update();
68template <
typename T,
bool can_delete>
71 this->held.push_back(
widget);
74 static_cast<T*
>(
this)->on_held_added();
77template <
typename T,
bool can_delete>
80 if (this->held.empty())
return;
82 const auto it{std::find(this->held.begin()
83 , this->held.end(),
widget)};
84 if (it == this->held.end())
return;
88 static_cast<T*
>(
this)->on_held_removed();
91template <
typename T,
bool can_delete>
94 auto x_offset{this->parent->get_x()};
95 auto y_offset{this->parent->get_y()};
99 auto x{this->get_x()};
100 auto y{this->get_y()};
102 painter.ofset(x_offset + x, y_offset + y);
103 static_cast<const T*
>(
this)->paint(
painter);
107 painter.ofset(x_offset, y_offset);
109 for (
const auto& c : this->children) c->handle_painter(
painter);
111 painter.ofset(-x_offset, -y_offset);
114template <
typename T,
bool can_delete>
117 auto p_x{this->parent->get_x()};
118 auto p_y{this->parent->get_y()};
128 for (
const auto& c : this->children)
129 if (c->handle_presser(
presser))
134 presser.get_bool() ? this->parent->add_held(
this)
135 : this->parent->remove_held(
this);
139 this->parent->remove_held(
this);
148 auto x{this->get_x()};
149 auto y{this->get_y()};
150 auto x_offset{x + p_x};
151 auto y_offset{y + p_y};
166 static_cast<T*
>(
this)->on_double_press(
presser);
167 presser.ofset(-x_offset, -y_offset);
174 static_cast<T*
>(
this)->on_drag(
presser);
175 presser.ofset(-x_offset, -y_offset);
182 this->parent->remove_held(
this);
183 static_cast<T*
>(
this)->on_drop(
presser);
184 presser.ofset(-x_offset, -y_offset);
189 presser.get_bool() ? this->parent->add_held(
this)
190 : this->parent->remove_held(
this);
193 static_cast<T*
>(
this)->on_press(
presser);
195 presser.ofset(-x_offset, -y_offset);
199template <
typename T,
bool can_delete>
204 static_cast<T*
>(
this)->on_child_Delete();
Definition deleter.hpp:12
The painter class.
Definition painter.hpp:12
Definition presser.hpp:14