# HG changeset patch # User oc # Date 1423659134 -32400 # Node ID 89c41f9870bae3cd2e95f4411e98a6dc8a779903 # Parent 47e35190922724618d95ec2e010e9e1e1995abfb get singleDisplay size from retina display (HiDPI). diff -r 47e351909227 -r 89c41f9870ba src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java Tue Feb 10 18:18:49 2015 +0900 +++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java Wed Feb 11 21:52:14 2015 +0900 @@ -42,7 +42,7 @@ return; } } - rfb.readSendData(dataLen, reader, bytes, rect); + rfb.readSendData(dataLen, reader, bytes, rect); } private int getZrleLength(FramebufferUpdateRectangle rect, Reader reader) diff -r 47e351909227 -r 89c41f9870ba src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Tue Feb 10 18:18:49 2015 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Wed Feb 11 21:52:14 2015 +0900 @@ -292,6 +292,7 @@ throw new CommonException("Unprocessed encoding: " + rect.toString()); } } catch (UnsupportedEncodingException e) { + e.getMessage(); e.printStackTrace(); reader.close(); } diff -r 47e351909227 -r 89c41f9870ba src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Tue Feb 10 18:18:49 2015 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Wed Feb 11 21:52:14 2015 +0900 @@ -853,11 +853,14 @@ @Override public void actionPerformed(ActionEvent e) { viewer.setVisible(false); + + float scaleFactor = getMyDisplayScaleFactor(); ArrayList rectangles = viewer.getScreenRectangles(); int leftScreenNumber = 0; - int singleWidth = (int) rectangles.get(leftScreenNumber).getWidth(); - int singleHeight = (int) rectangles.get(leftScreenNumber).getHeight(); + int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth() * scaleFactor); + int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight() * scaleFactor); viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); + if (viewer.getRfb().isTreeManager()) { if (viewer.getRfb().hasParent()) { String adr = viewer.getRfb().getMyAddress(); @@ -927,7 +930,14 @@ setButtonsBarVisible(true, container); } - + + private float getMyDisplayScaleFactor() { + final String CONTENT_SCALE_FACTOR = "java.awt.contentScaleFactor"; + Float scaleFactor = (Float) Toolkit.getDefaultToolkit().getDesktopProperty(CONTENT_SCALE_FACTOR); + + return scaleFactor == null ? 1.0f : scaleFactor; + } + public void fitScreen() { ArrayList rectangles = viewer.getScreenRectangles(); int leftScreenNumber = 0;