From d8331febb7a27e5e68dea651ed8e586c2c83dbe3 Mon Sep 17 00:00:00 2001 From: Lyu Zong-Hong Date: Thu, 28 Jan 2021 22:07:51 +0900 Subject: [PATCH] Fix deck list viewer is too large issue on high DPI display --- .../src/main/java/forge/deckchooser/FDeckViewer.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckViewer.java b/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckViewer.java index 854a3b32255..ff7e0418e06 100644 --- a/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckViewer.java +++ b/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckViewer.java @@ -28,6 +28,7 @@ import java.awt.*; import java.awt.datatransfer.StringSelection; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.geom.AffineTransform; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -129,9 +130,13 @@ public class FDeckViewer extends FDialog { } else { GraphicsDevice gd = this.getGraphicsConfiguration().getDevice(); + GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); + AffineTransform t = gc.getDefaultTransform(); + double scaleX = t.getScaleX(); + double scaleY = t.getScaleY(); - width = (int)(gd.getDisplayMode().getWidth() * 0.8); - height = (int)(gd.getDisplayMode().getHeight() * 0.9); + width = (int)(gd.getDisplayMode().getWidth() * 0.8 / scaleX); + height = (int)(gd.getDisplayMode().getHeight() * 0.9 / scaleY); } this.setPreferredSize(new Dimension(width, height));