1717
1818
1919#define kCommitSplitViewPositionDefault @" Commit SplitView Position"
20+ #define kStagetSplitViewLeftPositionDefault @" StagetSplitViewLeftPositionDefault"
21+ #define kStagetSplitViewRightPositionDefault @" StagetSplitViewRightPositionDefault"
2022
2123@interface PBGitCommitController ()
2224- (void )refreshFinished : (NSNotification *)notification ;
@@ -28,7 +30,7 @@ - (void)commitHookFailed:(NSNotification *)notification;
2830- (void )amendCommit : (NSNotification *)notification ;
2931- (void )indexChanged : (NSNotification *)notification ;
3032- (void )indexOperationFailed : (NSNotification *)notification ;
31- - (void )saveCommitSplitViewPosition ;
33+ - (void )saveSplitViewsPositions ;
3234@end
3335
3436@implementation PBGitCommitController
@@ -74,12 +76,12 @@ - (void)awakeFromNib
7476 [unstagedFilesController setAutomaticallyRearrangesObjects: NO ];
7577
7678 [commitSplitView setHidden: YES ];
77- [self performSelector: @selector (restoreCommitSplitViewPositiion ) withObject: nil afterDelay: 0 ];
79+ [self performSelector: @selector (restoreSplitViewPositions ) withObject: nil afterDelay: 0 ];
7880}
7981
8082- (void )closeView
8183{
82- [self saveCommitSplitViewPosition ];
84+ [self saveSplitViewsPositions ];
8385 [webController closeView ];
8486}
8587
@@ -278,22 +280,42 @@ - (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)old
278280}
279281
280282// NSSplitView does not save and restore the position of the splitView correctly so do it manually
281- - (void )saveCommitSplitViewPosition
283+ - (void )saveSplitViewsPositions
282284{
285+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults ];
283286 float position = [[[commitSplitView subviews ] objectAtIndex: 0 ] frame ].size .height ;
284- [[NSUserDefaults standardUserDefaults ] setFloat: position forKey: kCommitSplitViewPositionDefault ];
287+ [defaults setFloat: position forKey: kCommitSplitViewPositionDefault ];
288+
289+ float leftDividerPosition = CGRectGetWidth ([stageSplitView.subviews[0 ] frame ]);
290+ [defaults setFloat: leftDividerPosition forKey: kStagetSplitViewLeftPositionDefault ];
291+
292+ float rightDividerPosition = CGRectGetWidth ([stageSplitView.subviews[1 ] frame ]);
293+ [defaults setFloat: rightDividerPosition forKey: kStagetSplitViewRightPositionDefault ];
294+
285295 [[NSUserDefaults standardUserDefaults ] synchronize ];
286296}
287297
288298// make sure this happens after awakeFromNib
289- - (void )restoreCommitSplitViewPositiion
290- {
291- float position = [[NSUserDefaults standardUserDefaults ] floatForKey: kCommitSplitViewPositionDefault ];
299+ - (void )restoreSplitViewPositions {
300+
301+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults ];
302+
303+ float position = [defaults floatForKey: kCommitSplitViewPositionDefault ];
292304 if (position < 1.0 )
293305 position = [commitSplitView frame ].size .height - 225 ;
294306
295307 [commitSplitView setPosition: position ofDividerAtIndex: 0 ];
296308 [commitSplitView setHidden: NO ];
309+
310+ float leftPosition = [defaults floatForKey: kStagetSplitViewLeftPositionDefault ];
311+ if (leftPosition > 1.0 ) {
312+ [stageSplitView setPosition: leftPosition ofDividerAtIndex: 0 ];
313+ }
314+
315+ float rightPosition = [defaults floatForKey: kStagetSplitViewRightPositionDefault ];
316+ if (rightPosition > 1.0 ) {
317+ [stageSplitView setPosition: leftPosition + rightPosition ofDividerAtIndex: 1 ];
318+ }
297319}
298320
299321@end
0 commit comments