# HG changeset patch # User Shinji KONO # Date 1466391853 -32400 # Node ID 65ffb64cfb51f8b691624f2de7cea859f9e9c29d # Parent aa3822daf75a1c787b1fdd3a77a9181e30cd4367 try to fix scroll y in fitScreen diff -r aa3822daf75a -r 65ffb64cfb51 src/viewer_swing/java/com/glavsoft/viewer/Viewer.java --- a/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java Sun Jun 19 19:35:40 2016 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/Viewer.java Mon Jun 20 12:04:13 2016 +0900 @@ -505,7 +505,7 @@ } public Point getScreenOffset(ArrayList rectangles) { - // position of screen may negavie, but RFBscreen position is always positive + // position of screen may negative, but RFBscreen position is always positive // compute offset to make them positive int offsetx = 0; int offsety = 0; diff -r aa3822daf75a -r 65ffb64cfb51 src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Sun Jun 19 19:35:40 2016 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Mon Jun 20 12:04:13 2016 +0900 @@ -916,26 +916,27 @@ } public void screenChangeRequest(ProtocolContext context, int shareScreenNumber) { - ArrayList rectangles = viewer.getScreenRectangles(); + ArrayList rectangles = viewer.getScreenRectangles(); Point offset = viewer.getScreenOffset(rectangles); Rectangle rectangle1 = rectangles.get(shareScreenNumber); int singleWidth = (int) (rectangle1.getWidth()); int singleHeight = (int) (rectangle1.getHeight()); - int x = (int) (rectangle1.getX())+offset.x; // convert double to int - int y = (int) (rectangle1.getY())+offset.y; + int x = (int) (rectangle1.getX()) + offset.x; // convert double to int + int y = (int) (rectangle1.getY()) + offset.y; int scale = retinaScale(shareScreenNumber); viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); - showScreenInfo("request screen change",0, x,y,singleWidth,singleHeight,scale); + showScreenInfo("request screen change", 0, x, y, singleWidth, singleHeight, scale); if (viewer.getRfb().isTreeManager()) { - changeVncServer(viewer, x, y, singleWidth*scale, singleHeight*scale, scale, viewer.getRfb().getId()); - } else if (viewer.getRfb().hasParent()) { + changeVncServer(viewer, x, y, singleWidth * scale, singleHeight * scale, scale, viewer.getRfb().getId()); + } + if (viewer.getRfb().hasParent()) { String adr = viewer.getRfb().getMyAddress(); - if (scanPort(adr, ConnectionParams.DEFAULT_RFB_PORT)) { - // -1 means request to reverse direct connection socket - short id = viewer.getRfb().isTreeManager()? (short)-1 : viewer.getRfb().getId(); - context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, id, x, y, singleWidth*scale, singleHeight*scale, scale)); - } + if (scanPort(adr, ConnectionParams.DEFAULT_RFB_PORT)) { + // -1 means request to reverse direct connection socket + short id = viewer.getRfb().isTreeManager() ? (short) -1 : viewer.getRfb().getId(); + context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, id, x, y, singleWidth * scale, singleHeight * scale, scale)); + } } } @@ -975,7 +976,7 @@ } /** - * change screen viewer scale to fit the server screen size + * change screen viewer scale to fit the selected server screen size in multi screens */ public void fitScreen() { ArrayList rectangles = viewer.getScreenRectangles(); @@ -1005,9 +1006,9 @@ // final Rectangle visible = new Rectangle((int)(thatScreenX*scale),(int)(thatScreenY*scale),(int)(thatScreenWidth*scale)-1,(int)(thatScreenHeight*scale)-1); showScreenInfo("this", thisScreenNumber, 0, 0,thisScreenWidth, thisScreenHeight, thisRetinaScale); System.out.println("this FB x:" + viewer.getConnectionPresenter().getFrameSizeWidth() + " y:" + viewer.getConnectionPresenter().getFrameSizeHeight()); - System.out.println("thisScrollScale: " + scale); + System.out.println("thisScrollScale: " + scale + " ymax:"+scroller.getVerticalScrollBar().getMaximum()); final int scrollx = (int)(thatScreenX * scale); - final int scrolly = (thatScreenY!=0) ? (int)((thatScreenHeight - thatScreenY) * scale) : 0; + final int scrolly = (int)((presenter.getFrameSizeHeight()-thatScreenY) * scale) ; SwingUtilities.invokeLater(new Runnable() { public void run() { scroller.getHorizontalScrollBar().setValue(scrollx);