# HG changeset patch # User Shinji KONO # Date 1466123202 -32400 # Node ID 967aa1f24ba4b80a070fc00dee4e82dc9fe1ae6d # Parent 614057b861229dc63c0b2048986ff4998ee9e0a8 fix screen sharing request diff -r 614057b86122 -r 967aa1f24ba4 .idea/gradle.xml --- a/.idea/gradle.xml Thu Jun 16 21:50:53 2016 +0900 +++ b/.idea/gradle.xml Fri Jun 17 09:26:42 2016 +0900 @@ -12,11 +12,6 @@ - diff -r 614057b86122 -r 967aa1f24ba4 src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Thu Jun 16 21:50:53 2016 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Fri Jun 17 09:26:42 2016 +0900 @@ -861,8 +861,9 @@ ScreenChangeSelectionPanel selectionPanel = new ScreenChangeSelectionPanel(viewerWindow, context); for (int i = 0; i < rectangles.size(); i++) { Rectangle rectangle = rectangles.get(i); - int screenWidth = rectangle.width * retinaScale(i); - int screenHeight = rectangle.height * retinaScale(i); + int scale = retinaScale(i); + int screenWidth = rectangle.width * scale; + int screenHeight = rectangle.height * scale; selectionPanel.checkBox(screenWidth+" X "+screenHeight); } selectionPanel.setButton(); @@ -916,42 +917,18 @@ public void screenChangeRequest(ProtocolContext context, int shareScreenNumber) { ArrayList rectangles = viewer.getScreenRectangles(); - int singleWidth = (int) (rectangles.get(shareScreenNumber).getWidth()); - int singleHeight = (int) (rectangles.get(shareScreenNumber).getHeight()); + Rectangle rectangle1 = rectangles.get(shareScreenNumber); + int singleWidth = (int) (rectangle1.getWidth()); + int singleHeight = (int) (rectangle1.getHeight()); + int x = (int) (rectangle1.getX()); // convert double to int + int y = (int) (rectangle1.getY()); + int scale = retinaScale(shareScreenNumber); viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); - int x = (int) (rectangles.get(shareScreenNumber).getX()); // convert double to int - int y = (int) (rectangles.get(shareScreenNumber).getY()); - - // Fix invalid x, y position. - if (x == 0 && y == 0) { - for (int i = 0; i < rectangles.size(); i++) { - Rectangle rectangle = rectangles.get(i); - int scale = retinaScale(i); - if (rectangle.getX() < 0) { - x = Math.abs((int) rectangle.getX()) * scale; - } - if (rectangle.getY() < 0) { - y = Math.abs((int) rectangle.getY()) * scale; - } - } - } else { - for (int i = 0; i < rectangles.size(); i++) { - if(i != shareScreenNumber) { - x = x * retinaScale(i); - y = y * retinaScale(i); - } - } - } - x = x < 0 ? 0 : x; - y = y < 0 ? 0 : y; - - int scale = retinaScale(shareScreenNumber); if (viewer.getRfb().isTreeManager()) { changeVncServer(viewer, x, y, singleWidth, singleHeight, scale, viewer.getRfb().getId()); - return; + // treeeManager may have its parent } - if (viewer.getRfb().hasParent()) { String adr = viewer.getRfb().getMyAddress(); if (scanPort(adr, ConnectionParams.DEFAULT_RFB_PORT)) { @@ -980,7 +957,6 @@ } } } catch (Exception ignore) {} - //... return scale; }