libwtk-sdl2  0.0.1
embedded_widget.hpp
1 #ifndef LIBWTK_SDL2_EMBEDDED_WIDGET_HPP
2 #define LIBWTK_SDL2_EMBEDDED_WIDGET_HPP
3 
4 #include <utility>
5 
6 #include "widget.hpp"
7 
12 template <typename BaseWidget>
14 {
18  template <typename... Args>
19  embedded_widget(Args &&... args)
20  : _embedded_widget(std::forward<Args>(args)...)
21  {
22  _embedded_widget.set_parent(this);
23  }
24 
25  ~embedded_widget() override {}
26 
27  void on_draw(draw_context & dc, selection_context const & sc) const override { _embedded_widget.on_draw(dc, sc); }
28  void on_mouse_up_event(mouse_up_event const & e) override { _embedded_widget.on_mouse_up_event(e); }
29  void on_mouse_down_event(mouse_down_event const & e) override { _embedded_widget.on_mouse_down_event(e); }
30  void on_mouse_move_event(mouse_move_event const & e) override { _embedded_widget.on_mouse_move_event(e); }
31  void on_key_event(key_event const & e) override { _embedded_widget.on_key_event(e); }
32  void on_activate() override { _embedded_widget.on_activate(); }
33  std::vector<widget *> get_children() override { return { &_embedded_widget }; }
34  std::vector<widget const *> get_children() const override { return { &_embedded_widget }; }
35  void on_box_allocated() override { _embedded_widget.apply_layout(get_box()); }
36  widget * find_selectable(navigation_type nt, point center) override { return _embedded_widget.find_selectable(nt, center); }
37  widget * navigate_selectable(navigation_type nt, point center) override { return _embedded_widget.navigate_selectable(nt, center); }
38  widget * navigate_selectable_from_children(navigation_type nt, widget * w, point center) override { return navigate_selectable_parent(nt, center); }
39  size_hint get_size_hint(int width, int height) const override { return _embedded_widget.get_size_hint(width, height); }
40  virtual bool can_use_intermediate_size() const { return _embedded_widget.can_use_intermediate_size(); }
41 
42  protected:
43 
44  BaseWidget _embedded_widget;
45 };
46 
47 #endif
48 
void on_activate() override
Definition: embedded_widget.hpp:32
Definition: mouse_event.hpp:19
embedded_widget(Args &&... args)
Definition: embedded_widget.hpp:19
SDL_Rect const & get_box() const
Definition: mouse_event.hpp:8
virtual bool can_use_intermediate_size() const
Definition: embedded_widget.hpp:40
widget * find_selectable(navigation_type nt, point center) override
Definition: embedded_widget.hpp:36
Definition: draw_context.hpp:126
void on_draw(draw_context &dc, selection_context const &sc) const override
Definition: embedded_widget.hpp:27
Definition: embedded_widget.hpp:13
Definition: key_event.hpp:4
widget * navigate_selectable(navigation_type nt, point center) override
Definition: embedded_widget.hpp:37
std::vector< widget * > get_children() override
Definition: embedded_widget.hpp:33
Definition: geometry.hpp:6
widget * navigate_selectable_parent(navigation_type nt, point center)
size_hint get_size_hint(int width, int height) const override
Definition: embedded_widget.hpp:39
widget * navigate_selectable_from_children(navigation_type nt, widget *w, point center) override
Definition: embedded_widget.hpp:38
void on_box_allocated() override
Definition: embedded_widget.hpp:35
Definition: selection_context.hpp:18
Definition: mouse_event.hpp:26
Definition: widget.hpp:52
Definition: widget.hpp:35