changeset 443:967aa1f24ba4

fix screen sharing request
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 17 Jun 2016 09:26:42 +0900
parents 614057b86122
children 9a938b714c6b
files .idea/gradle.xml src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java
diffstat 2 files changed, 10 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
             <option value="$PROJECT_DIR$" />
           </set>
         </option>
-        <option name="myModules">
-          <set>
-            <option value="$PROJECT_DIR$" />
-          </set>
-        </option>
       </GradleProjectSettings>
     </option>
   </component>
--- 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<Rectangle> 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;
     }