X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fwindow.h;h=b2c7833c1db844957b09d39df9b1cbe6876dbdb5;hb=05db7bfc90b3a3806080f34e463c57b9b3d87d31;hp=38b92177f932ca67c6dbee81cd40cbc015f4321e;hpb=1023b38fa278cea71fba3d2881e1bfde930cd025;p=libs%2Fgui.git diff --git a/source/graphics/window.h b/source/graphics/window.h index 38b9217..b2c7833 100644 --- a/source/graphics/window.h +++ b/source/graphics/window.h @@ -3,7 +3,6 @@ #include #include -#include "eventsource.h" namespace Msp { namespace Graphics { @@ -20,12 +19,19 @@ struct WindowOptions WindowOptions(); }; -class Window: public EventSource +class Window { public: struct Private; struct Event; + /** Provides input events. The event structure contents are platform- + specific. Applications will want to use the enclosed Keyboard and Mouse + objects instead. */ + sigc::signal signal_input_event; + + sigc::signal signal_resize; + sigc::signal signal_expose; sigc::signal signal_close; protected: @@ -33,6 +39,7 @@ protected: WindowOptions options; bool visible; bool kbd_autorepeat; + bool touch_input; bool resizing; Private *priv; @@ -41,15 +48,25 @@ public: Window(Display &, const WindowOptions &); private: void init(); + void platform_init(); + void platform_cleanup(); public: virtual ~Window(); void set_title(const std::string &); void reconfigure(const WindowOptions &); +private: + void platform_reconfigure(bool); +public: void set_keyboard_autorepeat(bool); bool get_keyboard_autorepeat() const { return kbd_autorepeat; } void show_cursor(bool); void warp_pointer(int, int); + void set_touch_input(bool); +private: + void platform_set_touch_input(); +public: + bool get_touch_input() const { return touch_input; } Display &get_display() const { return display; } const WindowOptions &get_options() const { return options; } @@ -59,7 +76,11 @@ public: void show(); void hide(); +private: + void platform_show(); + void platform_hide(); +public: bool event(const Event &evnt); };