Avoid losing hidden title bar setting when switching to window mode and back to full screen

This commit is contained in:
drdev
2013-10-04 06:12:15 +00:00
parent aabb4399ed
commit dbd3d956fb
3 changed files with 21 additions and 18 deletions

View File

@@ -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);

View File

@@ -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);
} }
}; };
} }

View File

@@ -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
} }