Skip to content

Commit 0c6508d

Browse files
committed
Persistent stage split view dividers during close/open
1 parent 367702f commit 0c6508d

File tree

3 files changed

+343
-23
lines changed

3 files changed

+343
-23
lines changed

PBGitCommitController.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
IBOutlet PBGitIndexController *indexController;
2424
IBOutlet PBWebChangesController *webController;
2525
IBOutlet NSSplitView *commitSplitView;
26+
IBOutlet NSSplitView *stageSplitView;
2627
}
2728

2829
@property(readonly) PBGitIndex *index;

PBGitCommitController.m

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
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

Comments
 (0)