libwtk-sdl2  0.0.1
bin.hpp
1 #ifndef LIBWTK_SDL2_BIN_HPP
2 #define LIBWTK_SDL2_BIN_HPP
3 
4 #include "widget.hpp"
5 
6 // Base class for containers that have a single child.
7 struct bin : widget
8 {
9  bin(widget_ptr child);
10  ~bin() override;
11 
12  void on_draw(draw_context & dc, selection_context const & sc) const override;
13  void on_mouse_down_event(mouse_down_event const & me) override;
14  void on_mouse_up_event(mouse_up_event const & me) override;
15  void on_mouse_move_event(mouse_move_event const & e) override;
16 
17  void on_box_allocated() override = 0;
18 
19  widget * find_selectable(navigation_type nt, point center) override;
20  widget * navigate_selectable_from_children(navigation_type nt, widget * w, point center) override;
21 
22  // Should be provided when the geometry of a child is not equal to the
23  // geometry of the bin (i.e. if there is some kind of padding).
24  size_hint get_size_hint(int width, int height) const override;
25 
26  std::vector<widget *> get_children() override;
27  std::vector<widget const *> get_children() const override;
28 
29  protected:
30 
31  widget_ptr _child;
32 };
33 
34 #endif
size_hint get_size_hint(int width, int height) const override
Definition: mouse_event.hpp:19
Definition: mouse_event.hpp:8
Definition: bin.hpp:7
widget * find_selectable(navigation_type nt, point center) override
Definition: draw_context.hpp:126
void on_box_allocated() override=0
widget * navigate_selectable_from_children(navigation_type nt, widget *w, point center) override
void on_draw(draw_context &dc, selection_context const &sc) const override
Definition: geometry.hpp:6
Definition: selection_context.hpp:18
Definition: mouse_event.hpp:26
Definition: widget.hpp:52
std::vector< widget * > get_children() override
Definition: widget.hpp:35