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