X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcontainer.h;h=3275f6a016116ba3f98e4946f5c802e90ccc67eb;hb=754751fd474c6eac073fa7e89a18142fc89cb4fb;hp=d1120cd8c36bb1e25fb845f6a20831cc264c057c;hpb=c1faa54a3218b53757b8b55de0ff8aa64412253b;p=libs%2Fgltk.git diff --git a/source/container.h b/source/container.h index d1120cd..3275f6a 100644 --- a/source/container.h +++ b/source/container.h @@ -29,11 +29,17 @@ protected: virtual ~Child(); void visibility_changed(bool); + void request_focus(); + void grab_pointer(); + void ungrab_pointer(); }; std::list children; Widget *click_focus; unsigned click_button; + Widget *pointer_focus; + bool pointer_grabbed; + Widget *input_focus; Container(); public: @@ -47,11 +53,26 @@ public: std::list get_children() const; Widget *get_child_at(int, int); Widget *get_descendant_at(int, int); + void raise(Widget &); + +protected: + void set_pointer_focus(Widget *); + void set_input_focus(Widget *); +public: + Widget *get_input_focus() const { return input_focus; } + Widget *get_final_input_focus() const; virtual void button_press(int, int, unsigned); virtual void button_release(int, int, unsigned); virtual void pointer_motion(int, int); +private: + Widget *get_pointer_target(int, int); +public: virtual void pointer_leave(); + virtual void key_press(unsigned, unsigned); + virtual void key_release(unsigned, unsigned); + virtual void character(wchar_t); + virtual void focus_out(); protected: virtual void on_reparent(); virtual void on_child_added(Widget &) { }