@@ -13,7 +13,6 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
1313 @Published var navigatorCollapsed : Bool = false
1414 @Published var inspectorCollapsed : Bool = false
1515 @Published var toolbarCollapsed : Bool = false
16- @Published var interfaceHidden : Bool = false
1716
1817 // These variables store the state of the windows when using "Hide interface"
1918 @Published var prevNavigatorCollapsed : Bool ?
@@ -211,13 +210,31 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
211210 return true
212211 }
213212
213+ var utilityAreaCollapsed : Bool {
214+ workspace? . utilityAreaModel? . isCollapsed ?? true
215+ }
216+
217+ /// Returns `true` if at least one panel that was visible is still collapsed, meaning the interface is still hidden
218+ func isInterfaceStillHidden( ) -> Bool {
219+ // If the interface is already un-hidden, we can short-circuit.
220+ guard let prevNav = prevNavigatorCollapsed,
221+ let prevInsp = prevInspectorCollapsed,
222+ let prevUtil = prevUtilityAreaCollapsed,
223+ let prevTool = prevToolbarCollapsed
224+ else { return false }
225+
226+ // True when any panel that was previously visible is collapsed
227+ return ( !prevNav && navigatorCollapsed) ||
228+ ( !prevInsp && inspectorCollapsed) ||
229+ ( !prevUtil && utilityAreaCollapsed) ||
230+ ( !prevTool && toolbarCollapsed)
231+ }
232+
214233 /// Function for toggling the interface elements on or off
215234 ///
216235 /// - Parameter shouldHide: Pass `true` to hide all interface panels (and remember their current states),
217236 /// or `false` to restore them to how they were before hiding.
218237 func toggleInterface( shouldHide: Bool ) {
219- interfaceHidden = shouldHide
220-
221238 // When hiding, store how the interface looks now
222239 if shouldHide {
223240 storeInterfaceCollapseState ( )
@@ -236,7 +253,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
236253 )
237254 let utilityAreaTargetState = determineDesiredCollapseState (
238255 shouldHide: shouldHide,
239- currentlyCollapsed: workspace ? . utilityAreaModel ? . isCollapsed ?? true ,
256+ currentlyCollapsed: utilityAreaCollapsed ,
240257 previouslyCollapsed: prevUtilityAreaCollapsed,
241258 )
242259 let toolbarTargetState = determineDesiredCollapseState (
@@ -250,19 +267,14 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
250267 toggleFirstPanel ( shouldAnimate: false )
251268 }
252269 if inspectorCollapsed != inspectorTargetState {
253- toggleLastPanel ( )
270+ toggleLastPanel ( shouldAnimate : false )
254271 }
255272 if workspace? . utilityAreaModel? . isCollapsed != utilityAreaTargetState {
256273 CommandManager . shared. executeCommand ( " open.drawer " )
257274 }
258275 if toolbarCollapsed != toolbarTargetState {
259276 toggleToolbar ( )
260277 }
261-
262- // If enabling interface, reset the visibility states
263- if !shouldHide {
264- resetStoredInterfaceCollapseState ( )
265- }
266278 }
267279
268280 /// Calculates the collapse state an interface element should have after a hide / show toggle.
@@ -292,12 +304,4 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
292304 prevUtilityAreaCollapsed = workspace? . utilityAreaModel? . isCollapsed
293305 prevToolbarCollapsed = toolbarCollapsed
294306 }
295-
296- /// Function for resetting the stored interface visibility states
297- func resetStoredInterfaceCollapseState( ) {
298- prevNavigatorCollapsed = nil
299- prevInspectorCollapsed = nil
300- prevUtilityAreaCollapsed = nil
301- prevToolbarCollapsed = nil
302- }
303307}
0 commit comments