]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/display.h
Add decorations for things which should be exported from the library
[libs/gui.git] / source / graphics / display.h
index 8d2f61873495bb4056dd276c25f4f6e65e5fa37c..5f84848d16781cb7a2ec76fa42e5f8d833674c6b 100644 (file)
@@ -1,10 +1,13 @@
 #ifndef MSP_GRAPHICS_DISPLAY_H_
 #define MSP_GRAPHICS_DISPLAY_H_
 
-#include <list>
 #include <stdexcept>
 #include <string>
+#include <vector>
+#include <sigc++/signal.h>
+#include "errordialog.h"
 #include "monitor.h"
+#include "mspgui_api.h"
 #include "videomode.h"
 
 namespace Msp {
@@ -12,16 +15,21 @@ namespace Graphics {
 
 class Window;
 
-class Display
+class MSPGUI_API Display
 {
 public:
        struct Private;
 
+       sigc::signal<void> signal_got_focus;
+       sigc::signal<void> signal_lost_focus;
+
 private:
-       std::list<Monitor> monitors;
-       Monitor *primary_monitor;
-       std::list<VideoMode> modes;
-       Private *priv;
+       std::vector<Monitor> monitors;
+       Monitor *primary_monitor = nullptr;
+       std::vector<VideoMode> modes;
+       Private *priv = nullptr;
+       ErrorDialog *err_dialog = nullptr;
+       Window *focus_window = nullptr;
 
 public:
        Display(const std::string &disp_name = std::string());
@@ -32,13 +40,19 @@ public:
        void add_window(Window &);
        void remove_window(Window &);
 
-       const std::list<Monitor> &get_monitors() const { return monitors; }
-       const std::list<VideoMode> &get_modes() const { return modes; }
+       const std::vector<Monitor> &get_monitors() const { return monitors; }
+       const std::vector<VideoMode> &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:
-       const VideoMode *find_matching_mode(const VideoMode &) const;
+       void window_got_focus(Window &);
+       void window_lost_focus();
+public:
+       Window *get_focus_window() const { return focus_window; }
 
 public:
        void tick();