# HG changeset patch # User oc # Date 1423726931 -32400 # Node ID 6f67d602b8e98d8d4c545750a66743f956a1b6ae # Parent 1f86df6504b7401a85d5ebe390709d0f9ca47672# Parent 89c41f9870bae3cd2e95f4411e98a6dc8a779903 merge diff -r 1f86df6504b7 -r 6f67d602b8e9 src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java Thu Feb 12 15:48:55 2015 +0900 +++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java Thu Feb 12 16:42:11 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 1f86df6504b7 -r 6f67d602b8e9 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Thu Feb 12 15:48:55 2015 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Thu Feb 12 16:42:11 2015 +0900 @@ -292,6 +292,7 @@ throw new CommonException("Unprocessed encoding: " + rect.toString()); } } catch (UnsupportedEncodingException e) { + e.getMessage(); e.printStackTrace(); reader.close(); } diff -r 1f86df6504b7 -r 6f67d602b8e9 src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Thu Feb 12 15:48:55 2015 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Thu Feb 12 16:42:11 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;