]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/display.h
Track the currently focused window in Display
[libs/gui.git] / source / graphics / display.h
index 9c62b51ee854d1fe3fb98858a4f924f97cdce5d4..092abbe1404afa2fe303883ed49cce9f5cfbe478 100644 (file)
@@ -4,6 +4,7 @@
 #include <list>
 #include <stdexcept>
 #include <string>
+#include <sigc++/signal.h>
 #include "errordialog.h"
 #include "monitor.h"
 #include "videomode.h"
@@ -18,12 +19,16 @@ class 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;
        ErrorDialog *err_dialog;
+       Window *focus_window;
 
 public:
        Display(const std::string &disp_name = std::string());
@@ -42,6 +47,13 @@ public:
        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();