-Window::~Window()
-{
- if(window)
-#ifdef WIN32
- CloseWindow(window);
-#else
- XDestroyWindow(display.get_display(), window);
-#endif
-
- display.remove_window(this);
-
- if(options.fullscreen)
- display.restore_mode();
-}
-
-void Window::set_title(const string &title)
-{
-#ifdef WIN32
- SetWindowText(window, title.c_str());
-#else
- 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.get_display(), window, &prop);
- display.check_error();
-#endif
-}
-
-void Window::reconfigure(const WindowOptions &opts)
-{
- bool fullscreen_changed=(opts.fullscreen!=options.fullscreen);
-
- options=opts;
-
-#ifdef WIN32
- // XXX Preserve position
- MoveWindow(window, 0, 0, options.width, options.height, false);
-
- (void)fullscreen_changed;
-#else
- ::Display *dpy=display.get_display();
-
- XMoveResizeWindow(dpy, window, 0, 0, options.width, options.height);
-
- if(fullscreen_changed)
- {
- hide();
- XSetWindowAttributes attr;
- attr.override_redirect=options.fullscreen;
- XChangeWindowAttributes(dpy, window, CWOverrideRedirect, &attr);
- show();
- }
-
- if(options.fullscreen)
- display.set_mode(VideoMode(options.width, options.height));
- else if(fullscreen_changed)
- display.restore_mode();
-#endif
-}
-
-void Window::show()
-{
-#ifdef WIN32
- ShowWindow(window, SW_SHOWNORMAL);
-#else
- XMapRaised(display.get_display(), window);
- display.check_error();
-#endif
-}
-
-void Window::hide()
-{
-#ifdef WIN32
- ShowWindow(window, SW_HIDE);
-#else
- XUnmapWindow(display.get_display(), window);
- display.check_error();
-#endif
-}
-