X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcontainer.h;h=a80cc4e214551cda4348ee10a2986024b030684c;hb=878faa0c9283ee1e6e5e67b6ea1324cc52385742;hp=f68d81fcee59c85afbfa1f0ed74d4c59a7cff6a7;hpb=7d8609bec44adcab67b0c1a78d560ef76afded8d;p=libs%2Fgltk.git diff --git a/source/container.h b/source/container.h index f68d81f..a80cc4e 100644 --- a/source/container.h +++ b/source/container.h @@ -34,6 +34,7 @@ protected: void grab_pointer(); void ungrab_pointer(); void request_animation(const Time::TimeDelta &); + void rebuild_needed(); }; std::list children; @@ -42,7 +43,9 @@ protected: Widget *pointer_focus; bool pointer_grabbed; Widget *input_focus; + Widget *saved_input_focus; Widget *touch_focus; + bool children_rebuild_needed; Container(); public: @@ -62,7 +65,7 @@ public: void raise(Widget &); protected: - void set_pointer_focus(Widget *); + void set_pointer_focus(Widget *, bool = false); void set_input_focus(Widget *); public: Widget *get_input_focus() const { return input_focus; } @@ -71,6 +74,9 @@ public: private: void check_animation_interval(); +protected: + virtual void rebuild_hierarchy(); + public: virtual void button_press(int, int, unsigned); virtual void button_release(int, int, unsigned); @@ -85,6 +91,7 @@ public: virtual bool key_press(unsigned, unsigned); virtual bool key_release(unsigned, unsigned); virtual bool character(wchar_t); + virtual void focus_in(); virtual void focus_out(); virtual bool navigate(Navigation); virtual void animate(const Time::TimeDelta &); @@ -92,6 +99,7 @@ protected: virtual void on_reparent(); virtual void on_child_added(Widget &) { } virtual void on_child_removed(Widget &) { } + virtual void on_input_focus_changed(Widget *); }; } // namespace GLtk