// Decorations Size
Box decor;
bool gotFrameExtents;
+ bool currentlyVisible;
};
bool XGetBorderWidths(Window window, Box box)
window.nativeDecorations = false;
if(!window.parent || !window.parent.display)
{
+ XWindowData windowData = window.windowData;
//Logf("Set root window state %d %s\n", state, window.name);
if(visible)
{
- XMapWindow(xGlobalDisplay, (X11Window)window.windowHandle);
- WaitForViewableWindow(window);
- if(window.creationActivation == activate && state != minimized)
- ActivateRootWindow(window);
+ if(!windowData.currentlyVisible)
+ {
+ XMapWindow(xGlobalDisplay, (X11Window)window.windowHandle);
+ windowData.currentlyVisible = true;
+ WaitForViewableWindow(window);
+ if(window.creationActivation == activate && state != minimized)
+ ActivateRootWindow(window);
+ }
if(state == minimized && atomsSupported[_net_wm_state])
{
}
}
else
+ {
XUnmapWindow(xGlobalDisplay, (X11Window)window.windowHandle);
+ windowData.currentlyVisible = false;
+ }
//XFlush(xGlobalDisplay);
}
}
{
if(!window.style.hidden && window.created)
{
+ XWindowData windowData = window.windowData;
//printf("Activate root window %s\n", window._class.name);
+ if(!windowData.currentlyVisible)
+ {
+ XMapWindow(xGlobalDisplay, (X11Window)window.windowHandle);
+ WaitForViewableWindow(window);
+ windowData.currentlyVisible = true;
+ }
XRaiseWindow(xGlobalDisplay, (X11Window)window.windowHandle);
- XMapWindow(xGlobalDisplay, (X11Window)window.windowHandle);
- WaitForViewableWindow(window);
if(atomsSupported[_net_active_window])
{
XClientMessageEvent event = { 0 };