1
1
import Cocoa
2
2
3
3
final class PreferencesTabViewController : NSViewController , PreferencesStyleControllerDelegate {
4
- private var activeTab : Int !
4
+ private var activeTab : Int ?
5
5
private var preferencePanes = [ PreferencePane] ( )
6
6
internal var preferencePanesCount : Int {
7
7
return preferencePanes. count
@@ -54,19 +54,12 @@ final class PreferencesTabViewController: NSViewController, PreferencesStyleCont
54
54
window. toolbar = toolbar
55
55
}
56
56
57
- func activateTab( preferencePane: PreferencePane ? , animated: Bool ) {
58
- guard let preference = preferencePane else {
59
- return activateTab ( index: 0 , animated: animated)
60
- }
61
-
62
- activateTab ( preferenceIdentifier: preference. preferencePaneIdentifier, animated: animated)
57
+ func activateTab( preferencePane: PreferencePane , animated: Bool ) {
58
+ activateTab ( preferenceIdentifier: preferencePane. preferencePaneIdentifier, animated: animated)
63
59
}
64
60
65
- func activateTab( preferenceIdentifier: PreferencePaneIdentifier ? , animated: Bool ) {
66
- guard
67
- let preferenceIdentifier = preferenceIdentifier,
68
- let index = ( preferencePanes. firstIndex { $0. preferencePaneIdentifier == preferenceIdentifier } )
69
- else {
61
+ func activateTab( preferenceIdentifier: PreferencePaneIdentifier , animated: Bool ) {
62
+ guard let index = ( preferencePanes. firstIndex { $0. preferencePaneIdentifier == preferenceIdentifier } ) else {
70
63
return activateTab ( index: 0 , animated: animated)
71
64
}
72
65
@@ -91,6 +84,12 @@ final class PreferencesTabViewController: NSViewController, PreferencesStyleCont
91
84
}
92
85
}
93
86
87
+ func restoreInitialTab( ) {
88
+ if activeTab == nil {
89
+ activateTab ( index: 0 , animated: false )
90
+ }
91
+ }
92
+
94
93
private func updateWindowTitle( tabIndex: Int ) {
95
94
self . window. title = {
96
95
if preferencePanes. count > 1 {
@@ -114,6 +113,12 @@ final class PreferencesTabViewController: NSViewController, PreferencesStyleCont
114
113
}
115
114
116
115
private func animateTabTransition( index: Int , animated: Bool ) {
116
+ guard let activeTab = activeTab else {
117
+ assertionFailure ( " animateTabTransition called before a tab was displayed; transition only works from one tab to another " )
118
+ immediatelyDisplayTab ( index: index)
119
+ return
120
+ }
121
+
117
122
let fromViewController = children [ activeTab]
118
123
let toViewController = children [ index]
119
124
let options : NSViewController . TransitionOptions = animated && isAnimated
0 commit comments