#include <list>
#include <stdexcept>
#include <string>
+#include <sigc++/signal.h>
#include "errordialog.h"
#include "monitor.h"
#include "videomode.h"
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());
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();