Added [#1130], [#1220] Remembering last used screen (monitor),

opening dialogs on same screen as the main window,
do not restore window size to larger value that actual screen size

Fixed [#1768], [#1768] Maximizing window on other than main monitor
This commit is contained in:
Jindra Petřík
2023-10-17 20:43:11 +02:00
parent b9a0f15e09
commit 65e612ed6f
10 changed files with 234 additions and 42 deletions

View File

@@ -22,6 +22,10 @@ import com.jpexs.helpers.Helper;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GraphicsDevice;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
@@ -63,12 +67,17 @@ public final class MainFrameClassic extends AppFrame implements MainFrame {
int w = Configuration.guiWindowWidth.get();
int h = Configuration.guiWindowHeight.get();
Dimension dim = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
if (w > dim.width) {
w = dim.width;
GraphicsDevice device = View.getMainDefaultScreenDevice();
Rectangle bounds = device.getDefaultConfiguration().getBounds();
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(device.getDefaultConfiguration());
int maxWidth = bounds.width - (insets.left + insets.right);
int maxHeight = bounds.height - (insets.top + insets.bottom);
if (w > maxWidth) {
w = maxWidth;
}
if (h > dim.height) {
h = dim.height;
if (h > maxHeight) {
h = maxHeight;
}
setSize(w, h);
@@ -116,7 +125,7 @@ public final class MainFrameClassic extends AppFrame implements MainFrame {
cnt.setLayout(new BorderLayout());
cnt.add(panel);
View.centerScreen(this);
View.centerScreenMain(this);
}
@Override