X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fdisplay.h;h=5f84848d16781cb7a2ec76fa42e5f8d833674c6b;hb=11ab96ba152e389814543a6398e2cd6f17a31092;hp=9c62b51ee854d1fe3fb98858a4f924f97cdce5d4;hpb=9ffb9f22faf7c540083e6df828500d54aabcbb56;p=libs%2Fgui.git diff --git a/source/graphics/display.h b/source/graphics/display.h index 9c62b51..5f84848 100644 --- a/source/graphics/display.h +++ b/source/graphics/display.h @@ -1,11 +1,13 @@ #ifndef MSP_GRAPHICS_DISPLAY_H_ #define MSP_GRAPHICS_DISPLAY_H_ -#include #include #include +#include +#include #include "errordialog.h" #include "monitor.h" +#include "mspgui_api.h" #include "videomode.h" namespace Msp { @@ -13,17 +15,21 @@ namespace Graphics { class Window; -class Display +class MSPGUI_API Display { public: struct Private; + sigc::signal signal_got_focus; + sigc::signal signal_lost_focus; + private: - std::list monitors; - Monitor *primary_monitor; - std::list modes; - Private *priv; - ErrorDialog *err_dialog; + std::vector monitors; + Monitor *primary_monitor = nullptr; + std::vector modes; + Private *priv = nullptr; + ErrorDialog *err_dialog = nullptr; + Window *focus_window = nullptr; public: Display(const std::string &disp_name = std::string()); @@ -34,14 +40,21 @@ public: void add_window(Window &); void remove_window(Window &); - const std::list &get_monitors() const { return monitors; } - const std::list &get_modes() const { return modes; } + const std::vector &get_monitors() const { return monitors; } + const std::vector &get_modes() const { return modes; } const VideoMode &get_desktop_mode() const; void set_mode(const VideoMode &, bool = false); void restore_mode(); const VideoMode *find_mode(const VideoMode &, float = 0.5f) const; const VideoMode *find_mode(unsigned, unsigned) const; +private: + void window_got_focus(Window &); + void window_lost_focus(); +public: + Window *get_focus_window() const { return focus_window; } + +public: void tick(); private: bool process_events();