Skip to content

Commit 5357b92

Browse files
clamp window pos on open
1 parent d919178 commit 5357b92

File tree

1 file changed

+18
-1
lines changed
  • enigma-swing/src/main/java/org/quiltmc/enigma/gui

1 file changed

+18
-1
lines changed

enigma-swing/src/main/java/org/quiltmc/enigma/gui/Gui.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.quiltmc.enigma.gui.util.ScaleUtil;
4444
import org.quiltmc.enigma.network.ServerMessage;
4545
import org.quiltmc.enigma.util.I18n;
46+
import org.quiltmc.enigma.util.Utils;
4647
import org.quiltmc.enigma.util.validation.Message;
4748
import org.quiltmc.enigma.util.validation.ParameterizedMessage;
4849
import org.quiltmc.enigma.util.validation.ValidationContext;
@@ -63,6 +64,7 @@
6364
import java.awt.Container;
6465
import java.awt.Dimension;
6566
import java.awt.Point;
67+
import java.awt.Toolkit;
6668
import java.nio.file.Path;
6769
import java.util.ArrayList;
6870
import java.util.Collection;
@@ -77,6 +79,9 @@
7779
import java.util.stream.Stream;
7880

7981
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+
8085
private final MainWindow mainWindow;
8186
private final GuiController controller;
8287

@@ -230,7 +235,19 @@ private void setupUi() {
230235
frame.setMinimumSize(ScaleUtil.getDimension(640, 480));
231236
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
232237

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+
234251
frame.setLocation(windowPos);
235252

236253
this.retranslateUi();

0 commit comments

Comments
 (0)