#include <string>
#include <sigc++/signal.h>
+#include "mspgui_api.h"
namespace Msp {
namespace Graphics {
class Display;
+struct Monitor;
struct WindowOptions
{
- unsigned width;
- unsigned height;
- bool fullscreen;
- bool resizable;
-
- WindowOptions();
+ int x = 0;
+ int y = 0;
+ bool user_position = false;
+ unsigned width = 640;
+ unsigned height = 480;
+ bool fullscreen = false;
+ const Monitor *fullscreen_monitor = nullptr;
+ bool fullscreen_exclusive = true;
+ bool resizable = false;
};
-class Window
+class MSPGUI_API Window
{
public:
struct Private;
objects instead. */
sigc::signal<void, const Event &> signal_input_event;
+ sigc::signal<void> signal_got_focus;
+ sigc::signal<void> signal_lost_focus;
+
+ sigc::signal<void, int, int> signal_move;
sigc::signal<void, unsigned, unsigned> signal_resize;
+ sigc::signal<void, unsigned, unsigned, unsigned, unsigned, const Event &> signal_expose;
sigc::signal<void> signal_close;
protected:
Display &display;
WindowOptions options;
- bool visible;
- bool kbd_autorepeat;
- bool touch_input;
- bool resizing;
- Private *priv;
+ bool visible = false;
+ bool kbd_autorepeat = true;
+ bool touch_input = false;
+ bool resizing = false;
+ bool moving = false;
+ Private *priv = nullptr;
public:
Window(Display &, unsigned w, unsigned h, bool fs = false);
void platform_init();
void platform_cleanup();
public:
- virtual ~Window();
+ ~Window();
void set_title(const std::string &);
void reconfigure(const WindowOptions &);
private:
+ void set_fullscreen_mode();
void platform_reconfigure(bool);
public:
void set_keyboard_autorepeat(bool);
Display &get_display() const { return display; }
const WindowOptions &get_options() const { return options; }
- virtual unsigned get_width() const { return options.width; }
- virtual unsigned get_height() const { return options.height; }
+ unsigned get_width() const { return options.width; }
+ unsigned get_height() const { return options.height; }
const Private &get_private() const { return *priv; }
void show();