X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Froot.h;h=29fff237430c156e0a2b94ef3ad89bbb269d38fb;hb=394e5c9969a30b604bfaf78fc05a8c2d5c98ab5b;hp=0fe624f4c4e3f5d03e7fab70ee4bc00d594cd20e;hpb=81c4024fb6acf37df702a803dc4efdf82a81525a;p=libs%2Fgltk.git diff --git a/source/root.h b/source/root.h index 0fe624f..29fff23 100644 --- a/source/root.h +++ b/source/root.h @@ -1,6 +1,7 @@ #ifndef MSP_GLTK_ROOT_H_ #define MSP_GLTK_ROOT_H_ +#include #include #include #include @@ -33,10 +34,10 @@ public: private: Resources &resources; Input::Keyboard *keyboard = nullptr; - InputMethod *input_method = nullptr; + std::unique_ptr input_method; Input::Mouse *mouse = nullptr; Input::Touchscreen *touchscreen = nullptr; - bool own_input = false; + std::unique_ptr own_input[2]; Label *lbl_tooltip = nullptr; int pointer_x = 0; int pointer_y = 0; @@ -47,6 +48,8 @@ private: Msp::GL::Program *shprog = nullptr; Msp::GL::Blend blend; + Root(Resources &, Graphics::Window &, std::unique_ptr, std::unique_ptr); + public: /** Creates a Root widget for a window. The geometry is set to match the window's size, and input devices are created automatically. */ @@ -55,17 +58,16 @@ public: /** Creates a Root widget with custom input devices. If window is not null, it is used to set the widget's initial geometry. */ Root(Resources &, Graphics::Window *, Input::Keyboard *, Input::Mouse *, Input::Touchscreen * = nullptr); - virtual ~Root(); - virtual const char *get_class() const { return "root"; } + const char *get_class() const override { return "root"; } Resources &get_resources() const { return resources; } virtual unsigned get_width() const { return geom.w; } virtual unsigned get_height() const { return geom.h; } void tick(); - virtual void setup_frame(GL::Renderer &); - virtual void render(GL::Renderer &, GL::Tag = GL::Tag()) const; + void setup_frame(GL::Renderer &) override; + void render(GL::Renderer &, GL::Tag = GL::Tag()) const override; private: bool button_press_event(unsigned); @@ -79,8 +81,8 @@ private: void get_touch(unsigned, int &, int &); void update_camera(); - virtual void on_size_change(); - virtual void on_child_added(Widget &); + void on_size_change() override; + void on_child_added(Widget &) override; }; } // namespace GLtk