comparison src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java @ 346:89c41f9870ba

get singleDisplay size from retina display (HiDPI).
author oc
date Wed, 11 Feb 2015 21:52:14 +0900
parents 1d9a4099ad44
children 024ac6e457f4
comparison
equal deleted inserted replaced
345:47e351909227 346:89c41f9870ba
851 851
852 JButton screenButton = buttonsBar.createButton("share", "Share my screen", new ActionListener() { 852 JButton screenButton = buttonsBar.createButton("share", "Share my screen", new ActionListener() {
853 @Override 853 @Override
854 public void actionPerformed(ActionEvent e) { 854 public void actionPerformed(ActionEvent e) {
855 viewer.setVisible(false); 855 viewer.setVisible(false);
856
857 float scaleFactor = getMyDisplayScaleFactor();
856 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); 858 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles();
857 int leftScreenNumber = 0; 859 int leftScreenNumber = 0;
858 int singleWidth = (int) rectangles.get(leftScreenNumber).getWidth(); 860 int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth() * scaleFactor);
859 int singleHeight = (int) rectangles.get(leftScreenNumber).getHeight(); 861 int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight() * scaleFactor);
860 viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); 862 viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight);
863
861 if (viewer.getRfb().isTreeManager()) { 864 if (viewer.getRfb().isTreeManager()) {
862 if (viewer.getRfb().hasParent()) { 865 if (viewer.getRfb().hasParent()) {
863 String adr = viewer.getRfb().getMyAddress(); 866 String adr = viewer.getRfb().getMyAddress();
864 context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, viewer.getRfb().getId(), singleWidth, singleHeight)); 867 context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, viewer.getRfb().getId(), singleWidth, singleHeight));
865 } 868 }
925 } 928 }
926 }).setAlignmentX(JComponent.RIGHT_ALIGNMENT); 929 }).setAlignmentX(JComponent.RIGHT_ALIGNMENT);
927 930
928 setButtonsBarVisible(true, container); 931 setButtonsBarVisible(true, container);
929 } 932 }
930 933
934 private float getMyDisplayScaleFactor() {
935 final String CONTENT_SCALE_FACTOR = "java.awt.contentScaleFactor";
936 Float scaleFactor = (Float) Toolkit.getDefaultToolkit().getDesktopProperty(CONTENT_SCALE_FACTOR);
937
938 return scaleFactor == null ? 1.0f : scaleFactor;
939 }
940
931 public void fitScreen() { 941 public void fitScreen() {
932 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); 942 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles();
933 int leftScreenNumber = 0; 943 int leftScreenNumber = 0;
934 int thisScreenWidth = (int) rectangles.get(leftScreenNumber).getWidth(); 944 int thisScreenWidth = (int) rectangles.get(leftScreenNumber).getWidth();
935 int thisScreenHeight = (int) rectangles.get(leftScreenNumber).getHeight(); 945 int thisScreenHeight = (int) rectangles.get(leftScreenNumber).getHeight();