mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Avoid losing hidden title bar setting when switching to window mode and back to full screen
This commit is contained in:
@@ -25,6 +25,7 @@ import forge.gui.toolbox.FAbsolutePositioner;
|
||||
import forge.gui.toolbox.FOverlay;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.view.FFrame;
|
||||
import forge.view.FNavigationBar;
|
||||
import forge.view.FStatusBar;
|
||||
import forge.view.FView;
|
||||
@@ -119,19 +120,20 @@ public final class SResizingUtil {
|
||||
|
||||
public static void resizeWindow() {
|
||||
final List<DragCell> cells = FView.SINGLETON_INSTANCE.getDragCells();
|
||||
final FFrame frame = FView.SINGLETON_INSTANCE.getFrame();
|
||||
final FNavigationBar navigationBar = FView.SINGLETON_INSTANCE.getNavigationBar();
|
||||
final JPanel pnlContent = FView.SINGLETON_INSTANCE.getPnlContent();
|
||||
final JPanel pnlInsets = FView.SINGLETON_INSTANCE.getPnlInsets();
|
||||
final FStatusBar statusBar = FView.SINGLETON_INSTANCE.getStatusBar();
|
||||
|
||||
Rectangle mainBounds = FView.SINGLETON_INSTANCE.getFrame().getContentPane().getBounds();
|
||||
Rectangle mainBounds = frame.getContentPane().getBounds();
|
||||
mainBounds.y = 0; // Play nicely with MenuBar if visible or not.
|
||||
FAbsolutePositioner.SINGLETON_INSTANCE.containerResized(mainBounds);
|
||||
FOverlay.SINGLETON_INSTANCE.getPanel().setBounds(mainBounds);
|
||||
FNetOverlay.SINGLETON_INSTANCE.containerResized(mainBounds);
|
||||
|
||||
final ForgePreferences prefs = Singletons.getModel().getPreferences();
|
||||
final int navigationBarHeight = prefs.getPrefBoolean(FPref.UI_HIDE_TITLE_BAR) ? 0 : navigationBar.getPreferredSize().height;
|
||||
final int navigationBarHeight = frame.getShowTitleBar() ? navigationBar.getPreferredSize().height : 0;
|
||||
final int statusBarHeight = prefs.getPrefBoolean(FPref.UI_HIDE_STATUS_BAR) ? 0 : statusBar.getPreferredSize().height;
|
||||
|
||||
navigationBar.setBounds(mainBounds.x, mainBounds.y, mainBounds.width, navigationBarHeight);
|
||||
|
||||
@@ -22,6 +22,7 @@ import forge.gui.match.controllers.CDock;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.view.FFrame;
|
||||
import forge.view.FView;
|
||||
|
||||
/**
|
||||
@@ -144,20 +145,12 @@ public final class LayoutMenu {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static JCheckBoxMenuItem menuItem_ShowTitleBar;
|
||||
public static void toggleShowTitleBar() {
|
||||
if (menuItem_ShowTitleBar != null) {
|
||||
menuItem_ShowTitleBar.doClick();
|
||||
}
|
||||
}
|
||||
|
||||
private static JMenuItem getMenuItem_ShowTitleBar() {
|
||||
final JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem("Title Bar");
|
||||
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F11, 0));
|
||||
menuItem.setState(!prefs.getPrefBoolean(FPref.UI_HIDE_TITLE_BAR));
|
||||
menuItem.addActionListener(getShowTitleBarAction(menuItem));
|
||||
menuItem_ShowTitleBar = menuItem;
|
||||
return menuItem;
|
||||
}
|
||||
private static ActionListener getShowTitleBarAction(final JCheckBoxMenuItem menuItem) {
|
||||
@@ -165,9 +158,16 @@ public final class LayoutMenu {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
boolean showTitleBar = menuItem.getState();
|
||||
final FFrame frame = Singletons.getView().getFrame();
|
||||
if (showTitleBar && !frame.getMaximized()) {
|
||||
//if titlebar toggled back on while frame not maximized (likely using F11), instead just maximize frame
|
||||
frame.setMaximized(true);
|
||||
menuItem.setState(false); //reset menu item state in this case
|
||||
return;
|
||||
}
|
||||
prefs.setPref(FPref.UI_HIDE_TITLE_BAR, !showTitleBar);
|
||||
prefs.save();
|
||||
Singletons.getView().getFrame().setShowTitleBar(showTitleBar);
|
||||
frame.setShowTitleBar(showTitleBar);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -15,12 +15,13 @@ import javax.swing.JFrame;
|
||||
import javax.swing.JRootPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.gui.framework.SResizingUtil;
|
||||
import forge.gui.menus.LayoutMenu;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.gui.toolbox.FSkin.Colors;
|
||||
import forge.gui.toolbox.FSkin.CompoundSkinBorder;
|
||||
import forge.gui.toolbox.FSkin.LineSkinBorder;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class FFrame extends JFrame {
|
||||
@@ -143,14 +144,14 @@ public class FFrame extends JFrame {
|
||||
if (getMinimized()) { return; } //skip remaining logic while minimized
|
||||
|
||||
this.maximized = (state == Frame.MAXIMIZED_BOTH);
|
||||
if (!this.maximized && !this.getShowTitleBar()) { //only support hidden titlebar if maximized
|
||||
if (this.isMainFrame) {
|
||||
LayoutMenu.toggleShowTitleBar(); //if main frame, need to update layout menu so preference saved
|
||||
}
|
||||
else {
|
||||
this.setShowTitleBar(true);
|
||||
if (this.maximized) {
|
||||
if (this.isMainFrame) { //for main frame, use preference to determine whether to hide title bar when maximizing
|
||||
this.setShowTitleBar(!Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_HIDE_TITLE_BAR));
|
||||
}
|
||||
}
|
||||
else { //only support hidden titlebar if maximized
|
||||
this.setShowTitleBar(true);
|
||||
}
|
||||
updateBorder();
|
||||
this.titleBar.handleMaximizedChanged(); //update icon and tooltip for maximize button
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user