CloseWindow(window);
#else
XDestroyWindow(display.get_display(), window);
+
+ if(invisible_cursor)
+ XFreeCursor(display.get_display(), invisible_cursor);
#endif
display.remove_window(this);
display.restore_mode();
}
+void Window::show_cursor(bool s)
+{
+#ifdef WIN32
+ ShowCursor(s);
+#else
+ ::Display *dpy=display.get_display();
+
+ if(s)
+ XUndefineCursor(dpy, window);
+ else
+ {
+ if(!invisible_cursor)
+ {
+ int screen=DefaultScreen(dpy);
+ char data=0;
+ XImage *img=XCreateImage(dpy, DefaultVisual(dpy, screen), 1, XYBitmap, 0, &data, 1, 1, 8, 1);
+
+ Pixmap pm=XCreatePixmap(dpy, window, 1, 1, 1);
+ GC gc=XCreateGC(dpy, pm, 0, 0);
+ XPutImage(dpy, pm, gc, img, 0, 0, 0, 0, 1, 1);
+
+ XColor black;
+ black.pixel=BlackPixel(dpy, screen);
+ XQueryColor(dpy, DefaultColormap(dpy, screen), &black);
+
+ invisible_cursor=XCreatePixmapCursor(dpy, pm, pm, &black, &black, 0, 0);
+
+ XFreeGC(dpy, gc);
+ XFreePixmap(dpy, pm);
+ img->data=0;
+ XDestroyImage(img);
+ }
+ XDefineCursor(dpy, window, invisible_cursor);
+ }
+#endif
+}
+
void Window::show()
{
#ifdef WIN32
::Display *dpy=display.get_display();
wm_delete_window=XInternAtom(dpy, "WM_DELETE_WINDOW", true);
+ invisible_cursor=0;
XSetWindowAttributes attr;
attr.override_redirect=options.fullscreen;