|
43 | 43 | import org.quiltmc.enigma.gui.util.ScaleUtil; |
44 | 44 | import org.quiltmc.enigma.network.ServerMessage; |
45 | 45 | import org.quiltmc.enigma.util.I18n; |
| 46 | +import org.quiltmc.enigma.util.Utils; |
46 | 47 | import org.quiltmc.enigma.util.validation.Message; |
47 | 48 | import org.quiltmc.enigma.util.validation.ParameterizedMessage; |
48 | 49 | import org.quiltmc.enigma.util.validation.ValidationContext; |
|
63 | 64 | import java.awt.Container; |
64 | 65 | import java.awt.Dimension; |
65 | 66 | import java.awt.Point; |
| 67 | +import java.awt.Toolkit; |
66 | 68 | import java.nio.file.Path; |
67 | 69 | import java.util.ArrayList; |
68 | 70 | import java.util.Collection; |
|
77 | 79 | import java.util.stream.Stream; |
78 | 80 |
|
79 | 81 | public class Gui { |
| 82 | + private static final int DEFAULT_MIN_LEFT_ON_SCREEN = 300; |
| 83 | + private static final int DEFAULT_MIN_TOP_ON_SCREEN = 200; |
| 84 | + |
80 | 85 | private final MainWindow mainWindow; |
81 | 86 | private final GuiController controller; |
82 | 87 |
|
@@ -230,7 +235,19 @@ private void setupUi() { |
230 | 235 | frame.setMinimumSize(ScaleUtil.getDimension(640, 480)); |
231 | 236 | frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); |
232 | 237 |
|
233 | | - Point windowPos = Config.main().windowPos.value().toPoint(); |
| 238 | + final Point windowPos = Config.main().windowPos.value().toPoint(); |
| 239 | + final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); |
| 240 | + |
| 241 | + final int clampedX = Utils.clamp(windowPos.x, 0, screenSize.width - ScaleUtil.scale(DEFAULT_MIN_LEFT_ON_SCREEN)); |
| 242 | + final int clampedY = Utils.clamp(windowPos.y, 0, screenSize.height - ScaleUtil.scale(DEFAULT_MIN_TOP_ON_SCREEN)); |
| 243 | + |
| 244 | + if (windowPos.x != clampedX || windowPos.y != clampedY) { |
| 245 | + windowPos.x = clampedX; |
| 246 | + windowPos.y = clampedY; |
| 247 | + |
| 248 | + Config.main().windowPos.setValue(Config.Vec2i.fromPoint(windowPos)); |
| 249 | + } |
| 250 | + |
234 | 251 | frame.setLocation(windowPos); |
235 | 252 |
|
236 | 253 | this.retranslateUi(); |
|
0 commit comments