summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorBrian Hinz <bphinz@users.sourceforge.net>2011-10-06 06:21:32 +0000
committerBrian Hinz <bphinz@users.sourceforge.net>2011-10-06 06:21:32 +0000
commit652953c7bb390d7079696d497807ed2a28352b9f (patch)
treefe367c4f7079db864dcb2521ab8985e0c85d806e /java
parent15b6e054053e0ed7fc083e78c053e9041e511ef8 (diff)
downloadtigervnc-652953c7bb390d7079696d497807ed2a28352b9f.tar.gz
tigervnc-652953c7bb390d7079696d497807ed2a28352b9f.zip
More changes to scaling code. Tested on Ubuntu 11.04/OpenJDK and Win7/Sun Java 6u27. Auto, FixedRatio, & % scale all seem to work. Will test on other platforms soon.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4712 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'java')
-rw-r--r--java/src/com/tigervnc/vncviewer/CConn.java54
-rw-r--r--java/src/com/tigervnc/vncviewer/DesktopWindow.java14
-rw-r--r--java/src/com/tigervnc/vncviewer/F8Menu.java2
3 files changed, 39 insertions, 31 deletions
diff --git a/java/src/com/tigervnc/vncviewer/CConn.java b/java/src/com/tigervnc/vncviewer/CConn.java
index ee969477..5dea315c 100644
--- a/java/src/com/tigervnc/vncviewer/CConn.java
+++ b/java/src/com/tigervnc/vncviewer/CConn.java
@@ -62,7 +62,7 @@ import com.tigervnc.rfb.Exception;
import com.tigervnc.rfb.Point;
import com.tigervnc.rfb.Rect;
-class ViewportFrame extends JFrame implements ComponentListener
+class ViewportFrame extends JFrame
{
public ViewportFrame(String name, CConn cc_) {
cc = cc_;
@@ -79,30 +79,26 @@ class ViewportFrame extends JFrame implements ComponentListener
cc.close();
}
});
- addComponentListener(this);
- }
-
- public void componentResized(ComponentEvent e) {
- if (cc.options.autoScale || cc.options.fixedRatioScale) {
- if (sp.getSize().width != cc.desktop.scaledWidth ||
- sp.getSize().height != cc.desktop.scaledHeight) {
- cc.reconfigureViewport();
- if (cc.desktop.cursor != null) {
- Cursor cursor = cc.desktop.cursor;
- cc.setCursor(cursor.width(),cursor.height(),cursor.hotspot,
- cursor.data, cursor.mask);
- }
+ addComponentListener(new ComponentAdapter() {
+ public void componentResized(ComponentEvent e) {
+ if (cc.options.autoScale || cc.options.fixedRatioScale) {
+ if (sp.getSize().width != cc.desktop.scaledWidth ||
+ sp.getSize().height != cc.desktop.scaledHeight) {
+ cc.desktop.setScaledSize();
+ sp.setSize(new Dimension(cc.desktop.scaledWidth,
+ cc.desktop.scaledHeight));
+ sp.validate();
+ pack();
+ update(g);
+ if (cc.desktop.cursor != null) {
+ Cursor cursor = cc.desktop.cursor;
+ cc.setCursor(cursor.width(),cursor.height(),cursor.hotspot,
+ cursor.data, cursor.mask);
+ }
+ }
+ }
}
- }
- }
-
- public void componentHidden(ComponentEvent e) {
- }
-
- public void componentShown(ComponentEvent e) {
- }
-
- public void componentMoved(ComponentEvent e) {
+ });
}
public void addChild(DesktopWindow child) {
@@ -492,7 +488,7 @@ public class CConn extends CConnection
desktop.requestFocusInWindow();
}
- public void reconfigureViewport()
+ private void reconfigureViewport()
{
//viewport.setMaxSize(cp.width, cp.height);
boolean pack = true;
@@ -504,8 +500,8 @@ public class CConn extends CConnection
viewport.setExtendedState(JFrame.MAXIMIZED_BOTH);
viewport.setGeometry(0, 0, dpySize.width, dpySize.height, false);
} else {
- int wmDecorationWidth = 0;
- int wmDecorationHeight = 24;
+ int wmDecorationWidth = viewport.getInsets().left + viewport.getInsets().right;
+ int wmDecorationHeight = viewport.getInsets().top + viewport.getInsets().bottom;
if (w + wmDecorationWidth >= dpySize.width) {
w = dpySize.width - wmDecorationWidth;
pack = false;
@@ -842,9 +838,11 @@ public class CConn extends CConnection
String scaleString = viewer.scalingFactor.getValue();
if (scaleString.equals("Auto")) {
options.autoScale = true;
+ options.scalingFactor.setSelectedItem("Auto");
// FIXME: set scaleFactor?
- } else if( scaleString.equals("FixedRatio")) {
+ } else if(scaleString.equals("FixedRatio")) {
options.fixedRatioScale = true;
+ options.scalingFactor.setSelectedItem("Fixed Aspect Ratio");
// FIXME: set scaleFactor?
} else {
digit = Integer.parseInt(scaleString);
diff --git a/java/src/com/tigervnc/vncviewer/DesktopWindow.java b/java/src/com/tigervnc/vncviewer/DesktopWindow.java
index 1ecc0e3f..54366155 100644
--- a/java/src/com/tigervnc/vncviewer/DesktopWindow.java
+++ b/java/src/com/tigervnc/vncviewer/DesktopWindow.java
@@ -324,7 +324,11 @@ class DesktopWindow extends JPanel implements
scaledWidth = cc.cp.width;
scaledHeight = cc.cp.height;
} else {
- Dimension availableSize = cc.viewport.sp.getSize();
+ Dimension vpSize = cc.viewport.getSize();
+ Insets vpInsets = cc.viewport.getInsets();
+ Dimension availableSize =
+ new Dimension(vpSize.width - vpInsets.left - vpInsets.right,
+ vpSize.height - vpInsets.top - vpInsets.bottom);
if (availableSize.width == 0 || availableSize.height == 0)
availableSize = new Dimension(cc.cp.width, cc.cp.height);
if (cc.options.fixedRatioScale) {
@@ -444,7 +448,13 @@ class DesktopWindow extends JPanel implements
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() ==
(KeyEvent.VK_F1+cc.menuKey-Keysyms.F1)) {
- cc.showMenu(lastX, lastY);
+ int sx = (scaleWidthRatio == 1.00)
+ ? lastX : (int)Math.floor(lastX*scaleWidthRatio);
+ int sy = (scaleHeightRatio == 1.00)
+ ? lastY : (int)Math.floor(lastY*scaleHeightRatio);
+ java.awt.Point ev = new java.awt.Point(lastX, lastY);
+ ev.translate(sx - lastX, sy - lastY);
+ cc.showMenu((int)ev.getX(), (int)ev.getY());
return;
}
if (!cc.viewer.viewOnly.getValue())
diff --git a/java/src/com/tigervnc/vncviewer/F8Menu.java b/java/src/com/tigervnc/vncviewer/F8Menu.java
index 5838b38c..9b617857 100644
--- a/java/src/com/tigervnc/vncviewer/F8Menu.java
+++ b/java/src/com/tigervnc/vncviewer/F8Menu.java
@@ -58,7 +58,7 @@ public class F8Menu extends JPopupMenu implements ActionListener {
newConn = addMenuItem("New connection...", KeyEvent.VK_W);
options = addMenuItem("Options...", KeyEvent.VK_O);
info = addMenuItem("Connection info...", KeyEvent.VK_I);
- about = addMenuItem("About VNCviewer...", KeyEvent.VK_A);
+ about = addMenuItem("About VncViewer...", KeyEvent.VK_A);
addSeparator();
dismiss = addMenuItem("Dismiss menu");
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));