*/
#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;
XCloseDisplay(display);
}
+void Window::set_title(const string &title)
+{
+ vector<unsigned char> buf(title.begin(), title.end());
+ XTextProperty prop;
+ prop.value=&buf[0];
+ prop.encoding=XA_STRING;
+ prop.format=8;
+ prop.nitems=title.size();
+ XSetWMName(display, window, &prop);
+}
+
void Window::show()
{
XMapRaised(display, window);
{
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);
}
{
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);
}
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:;
}