diff options
-rw-r--r-- | java/com/tigervnc/vncviewer/CConn.java | 34 | ||||
-rw-r--r-- | java/com/tigervnc/vncviewer/DesktopWindow.java | 6 | ||||
-rw-r--r-- | java/com/tigervnc/vncviewer/Dialog.java | 1 | ||||
-rw-r--r-- | java/com/tigervnc/vncviewer/Viewport.java | 17 |
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); + } } }); } |