summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);
+ }
}
});
}