Commit f92e1a5a authored by Ulrich Sibiller's avatar Ulrich Sibiller Committed by Mike Gabriel

Screen.c: Fix fullscreen (onescreen) at startup

Fixes ArcticaProject/nx-libs#991
parent 770f468c
...@@ -322,6 +322,12 @@ Bool nxagentIsParentOf(Display *d, XlibWindow possible_parent, XlibWindow candid ...@@ -322,6 +322,12 @@ Bool nxagentIsParentOf(Display *d, XlibWindow possible_parent, XlibWindow candid
*/ */
void nxagentMinimizeFromFullScreen(ScreenPtr pScreen) void nxagentMinimizeFromFullScreen(ScreenPtr pScreen)
{ {
if (nxagentOption(Fullscreen) && !nxagentOption(AllScreens))
{
nxagentSwitchFullscreen(pScreen, False);
return;
}
XUnmapWindow(nxagentDisplay, nxagentFullscreenWindow); XUnmapWindow(nxagentDisplay, nxagentFullscreenWindow);
XIconifyWindow(nxagentDisplay, nxagentIconWindow, XIconifyWindow(nxagentDisplay, nxagentIconWindow,
DefaultScreen(nxagentDisplay)); DefaultScreen(nxagentDisplay));
...@@ -337,6 +343,12 @@ void nxagentMinimizeFromFullScreen(ScreenPtr pScreen) ...@@ -337,6 +343,12 @@ void nxagentMinimizeFromFullScreen(ScreenPtr pScreen)
*/ */
void nxagentMaximizeToFullScreen(ScreenPtr pScreen) void nxagentMaximizeToFullScreen(ScreenPtr pScreen)
{ {
if (nxagentOption(Fullscreen) && !nxagentOption(AllScreens))
{
nxagentSwitchFullscreen(pScreen, True);
return;
}
/* /*
XUnmapWindow(nxagentDisplay, nxagentIconWindow); XUnmapWindow(nxagentDisplay, nxagentIconWindow);
*/ */
...@@ -992,8 +1004,25 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, int argc, char *argv[]) ...@@ -992,8 +1004,25 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
nxagentChangeOption(X, 0); nxagentChangeOption(X, 0);
nxagentChangeOption(Y, 0); nxagentChangeOption(Y, 0);
nxagentChangeOption(Width, w); /*
nxagentChangeOption(Height, h); * Fullscreen will use the window manager on the remote X
* server. We need to size the window appropriately because the
* window manager stores the size and restores it when fullscreen
* mode is left. In AllScreens mode the window manager is
* instructed to not draw any window decorations. Here we need the
* full width to cover the whole screen.
*/
if (nxagentOption(AllScreens))
{
nxagentChangeOption(Width, w);
nxagentChangeOption(Height, h);
}
else
{
nxagentChangeOption(Width, w * 3 / 4);
nxagentChangeOption(Height, h * 3 / 4);
}
/* first time screen initialization or resize during reconnect */ /* first time screen initialization or resize during reconnect */
if (!nxagentReconnectTrap || nxagentResizeDesktopAtStartup) if (!nxagentReconnectTrap || nxagentResizeDesktopAtStartup)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment