]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/windows/display.cpp
Track the currently focused window in Display
[libs/gui.git] / source / graphics / windows / display.cpp
index 4c893335c9ec06cd3fafbef01f5c7618c482159e..d767bebd2e8ea11e67ddfd8a442f22ad1c539522 100644 (file)
@@ -9,7 +9,8 @@ namespace Graphics {
 
 Display::Display(const string &):
        primary_monitor(0),
-       priv(new Private)
+       priv(new Private),
+       focus_window(0)
 {
        static ErrorDialog err_dlg(0);
 
@@ -26,6 +27,7 @@ Display::Display(const string &):
                monitors.push_back(Monitor());
                Monitor &monitor = monitors.back();
                monitor.index = monitors.size()-1;
+               monitor.name = adapter_dev.DeviceString;
                priv->monitors.push_back(adapter_dev.DeviceName);
 
                if(adapter_dev.StateFlags&DISPLAY_DEVICE_PRIMARY_DEVICE)
@@ -67,7 +69,11 @@ void Display::set_mode(const VideoMode &requested_mode, bool)
                throw unsupported_video_mode(requested_mode);
 
        DEVMODE info;
+       info.dmDeviceName[0] = 0;
+       info.dmSpecVersion = DM_SPECVERSION;
+       info.dmDriverVersion = 0;
        info.dmSize = sizeof(DEVMODE);
+       info.dmDriverExtra = 0;
        info.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT;
        info.dmPelsWidth = mode->width;
        info.dmPelsHeight = mode->height;
@@ -91,6 +97,7 @@ bool Display::process_events()
        MSG msg;
        if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
        {
+               TranslateMessage(&msg);
                DispatchMessage(&msg);
                return true;
        }