diff --git a/MacDown/Code/Document/MPDocument.m b/MacDown/Code/Document/MPDocument.m index bdc56477..6f23bac5 100644 --- a/MacDown/Code/Document/MPDocument.m +++ b/MacDown/Code/Document/MPDocument.m @@ -2450,7 +2450,10 @@ - (IBAction)togglePreviewPane:(id)sender - (IBAction)toggleEditorPane:(id)sender { + BOOL wasVisible = self.editorVisible; [self toggleSplitterCollapsingEditorPane:YES]; + if (self.editorVisible != wasVisible) + self.preferences.editorStartInPreviewMode = !self.editorVisible; } - (IBAction)toggleAutoSave:(id)sender diff --git a/MacDownTests/MPPaneToggleTests.m b/MacDownTests/MPPaneToggleTests.m index 6893ee5f..e1f6f91b 100644 --- a/MacDownTests/MPPaneToggleTests.m +++ b/MacDownTests/MPPaneToggleTests.m @@ -43,6 +43,7 @@ @implementation MockMenuItem @interface MPPaneToggleTests : XCTestCase @property (strong) MPDocument *document; +@property BOOL originalStartInPreviewMode; @end @@ -51,12 +52,17 @@ @implementation MPPaneToggleTests - (void)setUp { [super setUp]; + MPPreferences *preferences = [MPPreferences sharedInstance]; + self.originalStartInPreviewMode = preferences.editorStartInPreviewMode; + preferences.editorStartInPreviewMode = NO; self.document = [[MPDocument alloc] init]; } - (void)tearDown { self.document = nil; + [MPPreferences sharedInstance].editorStartInPreviewMode = + self.originalStartInPreviewMode; [super tearDown]; } @@ -83,6 +89,40 @@ - (void)testTogglePreviewPaneIBActionDoesNotCrash @"togglePreviewPane: should not crash"); } +- (void)testEditorPaneChoiceIsRemembered +{ + MPPreferences *preferences = [MPPreferences sharedInstance]; + BOOL originalEditorOnRight = preferences.editorOnRight; + + @try { + MPDocumentSplitView *splitView = [[MPDocumentSplitView alloc] + initWithFrame:NSMakeRect(0, 0, 800, 600)]; + splitView.vertical = YES; + NSView *editor = [[NSView alloc] + initWithFrame:NSMakeRect(0, 0, 399, 600)]; + WebView *preview = [[WebView alloc] + initWithFrame:NSMakeRect(400, 0, 400, 600)]; + [splitView addSubview:editor]; + [splitView addSubview:preview]; + + self.document.splitView = splitView; + self.document.editorContainer = editor; + self.document.preview = preview; + preferences.editorOnRight = NO; + + [self.document toggleEditorPane:nil]; + XCTAssertTrue(preferences.editorStartInPreviewMode, + @"Hiding the editor should be remembered for the next window"); + + [self.document toggleEditorPane:nil]; + XCTAssertFalse(preferences.editorStartInPreviewMode, + @"Restoring the editor should update the remembered choice"); + } + @finally { + preferences.editorOnRight = originalEditorOnRight; + } +} + #pragma mark - Menu Validation Tests