]> git.tdb.fi Git - libs/gui.git/blobdiff - source/window.cpp
Set override_redirect attribute when fullscreen is requested
[libs/gui.git] / source / window.cpp
index 3de9ba7f33894ba1c5c07d1f71a73d7faf1a51eb..ee5bec90d93f6165c742e13316fca7d621d79d10 100644 (file)
@@ -8,7 +8,7 @@ Distributed under the LGPL
 #include <vector>
 #include <X11/Xatom.h>
 #include <X11/Xutil.h>
-#include <msp/core/error.h>
+#include <msp/core/except.h>
 #include "window.h"
 
 using namespace std;
@@ -112,7 +112,7 @@ void Window::set_window(Handle wnd)
 {
        window=wnd;
 
-       XSelectInput(display, window, ButtonPressMask|ButtonReleaseMask|PointerMotionMask|KeyPressMask|KeyReleaseMask|StructureNotifyMask);
+       XSelectInput(display, window, ButtonPressMask|ButtonReleaseMask|PointerMotionMask|KeyPressMask|KeyReleaseMask|StructureNotifyMask|EnterWindowMask);
 
        XSetWMProtocols(display, window, &wm_delete_window, 1);
 }
@@ -121,7 +121,10 @@ void Window::init()
 {
        prepare();
 
-       Handle wnd=XCreateWindow(display, DefaultRootWindow(display), 0, 0, options.width, options.height, 0, CopyFromParent, InputOutput, CopyFromParent, 0, 0);
+       XSetWindowAttributes attr;
+       attr.override_redirect=options.fullscreen;
+
+       Handle wnd=XCreateWindow(display, DefaultRootWindow(display), 0, 0, options.width, options.height, 0, CopyFromParent, InputOutput, CopyFromParent, CWOverrideRedirect, &attr);
        set_window(wnd);
 }
 
@@ -158,6 +161,9 @@ void Window::process_event(const XEvent &event)
                if(event.xclient.data.l[0]==static_cast<long>(wm_delete_window))
                        signal_close.emit();
                break;
+       case EnterNotify:
+               XSetInputFocus(display, window, RevertToParent, CurrentTime);
+               break;
        default:;
        }