summaryrefslogtreecommitdiffstats
path: root/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'java/com')
-rw-r--r--java/com/tigervnc/vncviewer/CConn.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index cd547aba..abe10dd5 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -522,9 +522,14 @@ public class CConn extends CConnection
desktop.setScaledSize();
int w = desktop.scaledWidth;
int h = desktop.scaledHeight;
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice gd = ge.getDefaultScreenDevice();
if (fullScreen) {
viewport.setExtendedState(JFrame.MAXIMIZED_BOTH);
viewport.setGeometry(0, 0, dpySize.width, dpySize.height, false);
+ if (gd.isFullScreenSupported())
+ gd.setFullScreenWindow(viewport);
} else {
int wmDecorationWidth = viewport.getInsets().left + viewport.getInsets().right;
int wmDecorationHeight = viewport.getInsets().top + viewport.getInsets().bottom;
@@ -549,6 +554,8 @@ public class CConn extends CConnection
viewport.setExtendedState(JFrame.NORMAL);
viewport.setGeometry(x, y, w, h, pack);
}
+ if (gd.isFullScreenSupported())
+ gd.setFullScreenWindow(null);
}
}
@@ -958,13 +965,13 @@ public class CConn extends CConnection
if (scaleString.equalsIgnoreCase("Auto")) {
if (!oldScaleFactor.equals(scaleString)) {
viewer.scalingFactor.setParam("Auto");
- if (desktop != null)
+ if (desktop != null && !(options.fullScreen.isSelected() && fullScreen))
reconfigureViewport();
}
} else if(scaleString.equalsIgnoreCase("Fixed Aspect Ratio")) {
if (!oldScaleFactor.equalsIgnoreCase("FixedRatio")) {
viewer.scalingFactor.setParam("FixedRatio");
- if (desktop != null)
+ if (desktop != null && !(options.fullScreen.isSelected() && fullScreen))
reconfigureViewport();
}
} else {
@@ -973,7 +980,8 @@ public class CConn extends CConnection
viewer.scalingFactor.setParam(scaleString);
if ((desktop != null) && (!oldScaleFactor.equalsIgnoreCase("Auto") ||
!oldScaleFactor.equalsIgnoreCase("FixedRatio"))) {
- reconfigureViewport();
+ if (!(options.fullScreen.isSelected() && fullScreen))
+ reconfigureViewport();
}
}
}
@@ -1104,12 +1112,15 @@ public class CConn extends CConnection
CSecurityTLS.x509ca.setParam(options.ca.getText());
CSecurityTLS.x509crl.setParam(options.crl.getText());
}
+ if (options.fullScreen.isSelected() ^ fullScreen)
+ toggleFullScreen();
}
public void toggleFullScreen() {
fullScreen = !fullScreen;
if (!fullScreen) menu.fullScreen.setSelected(false);
- recreateViewport();
+ if (viewport != null)
+ recreateViewport();
}
// writeClientCutText() is called from the clipboard dialog