From dbd3d956fb89eec45341b8e35d7a8a23e2d27307 Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 4 Oct 2013 06:12:15 +0000 Subject: [PATCH] Avoid losing hidden title bar setting when switching to window mode and back to full screen --- .../forge/gui/framework/SResizingUtil.java | 6 ++++-- src/main/java/forge/gui/menus/LayoutMenu.java | 18 +++++++++--------- src/main/java/forge/view/FFrame.java | 15 ++++++++------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/main/java/forge/gui/framework/SResizingUtil.java b/src/main/java/forge/gui/framework/SResizingUtil.java index 5b8fb75c9ce..12f27d5461d 100644 --- a/src/main/java/forge/gui/framework/SResizingUtil.java +++ b/src/main/java/forge/gui/framework/SResizingUtil.java @@ -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 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); diff --git a/src/main/java/forge/gui/menus/LayoutMenu.java b/src/main/java/forge/gui/menus/LayoutMenu.java index 063ec172494..d5d92c4c5d0 100644 --- a/src/main/java/forge/gui/menus/LayoutMenu.java +++ b/src/main/java/forge/gui/menus/LayoutMenu.java @@ -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); } }; } diff --git a/src/main/java/forge/view/FFrame.java b/src/main/java/forge/view/FFrame.java index 601dc5a6dc0..b87695301d0 100644 --- a/src/main/java/forge/view/FFrame.java +++ b/src/main/java/forge/view/FFrame.java @@ -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 }