+ Child &add_child(Widget &);
+ Geometry determine_child_geometry(const Widget &, const Part &) const;
+ void autosize_child(const Widget &, const Part &, Geometry &) const;
+ void reposition_child(Widget &, const Part &) const;
+public:
+ std::vector<Widget *> get_children() const;
+ Widget *find_child_at(int, int) const;
+ Widget *find_descendant_at(int, int) const;
+ void raise(Widget &);
+
+protected:
+ void set_pointer_focus(Widget *, bool = false);
+ void set_input_focus(Widget *);
+public:
+ Widget *get_input_focus() const { return input_focus; }
+ Widget *get_final_input_focus() const;
+
+private:
+ void check_animation_interval();
+
+protected:
+ void rebuild_hierarchy() override;
+
+public:
+ void button_press(int, int, unsigned) override;
+ void button_release(int, int, unsigned) override;
+ void pointer_motion(int, int) override;
+private:
+ Widget *get_pointer_target(int, int, bool) const;
+public:
+ void pointer_leave() override;
+ void touch_press(int, int, unsigned) override;
+ void touch_release(int, int, unsigned) override;
+ void touch_motion(int, int, unsigned) override;
+ bool key_press(unsigned, unsigned) override;
+ bool key_release(unsigned, unsigned) override;
+ bool character(wchar_t) override;
+ void focus_in() override;
+ void focus_out() override;
+ bool navigate(Navigation) override;
+ void animate(const Time::TimeDelta &) override;
+protected:
+ void on_reparent() override;
+ virtual void on_child_added(Widget &) { }
+ virtual void on_child_removed(Widget &) { }
+ virtual void on_input_focus_changed(Widget *);