summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorBrian Hinz <bphinz@users.sourceforge.net>2013-01-23 22:46:53 +0000
committerBrian Hinz <bphinz@users.sourceforge.net>2013-01-23 22:46:53 +0000
commitd39531edfe58343cefc29ab495462f1005edf2c5 (patch)
tree7719143d0eb79766be7f3546a79ea069ba723a93 /java
parent09b8385146b7e6e1ae3a7df7b9883a25f5c03b13 (diff)
downloadtigervnc-d39531edfe58343cefc29ab495462f1005edf2c5.tar.gz
tigervnc-d39531edfe58343cefc29ab495462f1005edf2c5.zip
Fixes a number of issues related to fullscreen mode. When switching out of fullscreen mode via the options dialog, setFullScreenWindow was being applied to the old reference, causing the whole screen to be blanked and unresponsive. The checkmark in the F8 menu could sometimes get out of sync with the state of the option. Cursor wasn't always being re-scaled when scale factor was changed. It seems that setCursor can still sometimes be passed a null pointer for the hotspot, so add back in a check that was removed in r5025
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@5034 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'java')
-rw-r--r--java/com/tigervnc/vncviewer/CConn.java34
-rw-r--r--java/com/tigervnc/vncviewer/DesktopWindow.java6
-rw-r--r--java/com/tigervnc/vncviewer/Dialog.java1
-rw-r--r--java/com/tigervnc/vncviewer/Viewport.java17
4 files changed, 23 insertions, 35 deletions
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index 63db1ab4..fd07b27d 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -995,28 +995,18 @@ public class CConn extends CConnection
String scaleString =
options.scalingFactor.getSelectedItem().toString();
String oldScaleFactor = viewer.scalingFactor.getValue();
- if (scaleString.equalsIgnoreCase("Auto")) {
- if (!oldScaleFactor.equals(scaleString)) {
- viewer.scalingFactor.setParam("Auto");
- 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 && !(options.fullScreen.isSelected() && fullScreen))
- reconfigureViewport();
- }
- } else {
+ if (scaleString.equalsIgnoreCase("Fixed Aspect Ratio")) {
+ scaleString = new String("FixedRatio");
+ } else if (scaleString.equalsIgnoreCase("Auto")) {
+ scaleString = new String("Auto");
+ } else {
scaleString=scaleString.substring(0, scaleString.length()-1);
- if (!oldScaleFactor.equals(scaleString)) {
- viewer.scalingFactor.setParam(scaleString);
- if ((desktop != null) && (!oldScaleFactor.equalsIgnoreCase("Auto") ||
- !oldScaleFactor.equalsIgnoreCase("FixedRatio"))) {
- if (!(options.fullScreen.isSelected() && fullScreen))
- reconfigureViewport();
- }
- }
+ }
+ if (oldScaleFactor != scaleString) {
+ viewer.scalingFactor.setParam(scaleString);
+ if ((options.fullScreen.isSelected() == fullScreen) &&
+ (desktop != null))
+ recreateViewport();
}
clipboardDialog.setSendingEnabled(viewer.sendClipboard.getValue());
@@ -1148,7 +1138,7 @@ public class CConn extends CConnection
public void toggleFullScreen() {
fullScreen = !fullScreen;
- if (!fullScreen) menu.fullScreen.setSelected(false);
+ menu.fullScreen.setSelected(fullScreen);
if (viewport != null)
recreateViewport();
}
diff --git a/java/com/tigervnc/vncviewer/DesktopWindow.java b/java/com/tigervnc/vncviewer/DesktopWindow.java
index d7a734f2..7254a0b8 100644
--- a/java/com/tigervnc/vncviewer/DesktopWindow.java
+++ b/java/com/tigervnc/vncviewer/DesktopWindow.java
@@ -125,7 +125,7 @@ class DesktopWindow extends JPanel implements
hideLocalCursor();
- cursor.hotspot = hotspot;
+ cursor.hotspot = (hotspot != null) ? hotspot : new Point(0, 0);
cursor.setSize(w, h);
cursor.setPF(getPF());
@@ -171,8 +171,8 @@ class DesktopWindow extends JPanel implements
g2.dispose();
srcImage.flush();
- int x = (int)Math.floor((float)hotspot.x * scaleWidthRatio);
- int y = (int)Math.floor((float)hotspot.y * scaleHeightRatio);
+ int x = (int)Math.floor((float)cursor.hotspot.x * scaleWidthRatio);
+ int y = (int)Math.floor((float)cursor.hotspot.y * scaleHeightRatio);
x = (int)Math.min(x, Math.max(bestSize.width-1, 0));
y = (int)Math.min(y, Math.max(bestSize.height-1, 0));
java.awt.Point hs = new java.awt.Point(x, y);
diff --git a/java/com/tigervnc/vncviewer/Dialog.java b/java/com/tigervnc/vncviewer/Dialog.java
index 5e6790fe..c478d4a9 100644
--- a/java/com/tigervnc/vncviewer/Dialog.java
+++ b/java/com/tigervnc/vncviewer/Dialog.java
@@ -74,6 +74,7 @@ class Dialog extends JDialog {
setVisible(false);
setFocusable(false);
setAlwaysOnTop(false);
+ fullScreenWindow = Viewport.getFullScreenWindow();
if (fullScreenWindow != null)
Viewport.setFullScreenWindow(fullScreenWindow);
}
diff --git a/java/com/tigervnc/vncviewer/Viewport.java b/java/com/tigervnc/vncviewer/Viewport.java
index 95489fac..bc19b642 100644
--- a/java/com/tigervnc/vncviewer/Viewport.java
+++ b/java/com/tigervnc/vncviewer/Viewport.java
@@ -62,10 +62,6 @@ public class Viewport extends JFrame
});
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
- if ((getExtendedState() != JFrame.MAXIMIZED_BOTH) &&
- cc.fullScreen) {
- cc.toggleFullScreen();
- }
String scaleString = cc.viewer.scalingFactor.getValue();
if (scaleString.equalsIgnoreCase("Auto") ||
scaleString.equalsIgnoreCase("FixedRatio")) {
@@ -78,22 +74,23 @@ public class Viewport extends JFrame
cc.desktop.scaledHeight));
sp.validate();
if (getExtendedState() != JFrame.MAXIMIZED_BOTH &&
- scaleString.equalsIgnoreCase("FixedRatio")) {
+ scaleString.equalsIgnoreCase("FixedRatio") &&
+ !cc.fullScreen) {
int w = cc.desktop.scaledWidth + getInsets().left + getInsets().right;
int h = cc.desktop.scaledHeight + getInsets().top + getInsets().bottom;
setSize(w, h);
}
- if (cc.desktop.cursor != null) {
- Cursor cursor = cc.desktop.cursor;
- cc.setCursor(cursor.width(),cursor.height(),cursor.hotspot,
- cursor.data, cursor.mask);
- }
}
} else {
int policy = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
sp.setHorizontalScrollBarPolicy(policy);
sp.validate();
}
+ if (cc.desktop.cursor != null) {
+ Cursor cursor = cc.desktop.cursor;
+ cc.setCursor(cursor.width(),cursor.height(),cursor.hotspot,
+ cursor.data, cursor.mask);
+ }
}
});
}