Fix navigation bar visibility on window creation (#269)

This commit is contained in:
1024jp 2014-11-14 20:10:49 +01:00
parent 4d31c6a352
commit ed8a79b491
9 changed files with 35 additions and 23 deletions

View File

@ -15,7 +15,7 @@ changelog
- Fix an issue that new documents couldn't be saved with an extension that is automatically added from syntax definition.
- Add a missig Japanese localized text in the status bar.
- Fix an issue that current line highlight didn't update after font size change.
- Fix an issue that status bar is shown for a moment on window creation even it is set as hidden.
- Fix an issue that navigation/status bars are shown for a moment on window creation even they are set as hidden.

View File

@ -52,7 +52,7 @@
- (NSString *)string;
- (void)replaceTextStorage:(NSTextStorage *)textStorage;
- (void)setShowsLineNum:(BOOL)showsLineNum;
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar;
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar animate:(BOOL)performAnimation;
- (void)setWrapsLines:(BOOL)wrapsLines;
- (void)setShowsInvisibles:(BOOL)showsInvisibles;
- (void)setUsesAntialias:(BOOL)usesAntialias;

View File

@ -232,10 +232,10 @@
// ------------------------------------------------------
///
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar animate:(BOOL)performAnimation;
// ------------------------------------------------------
{
[[self navigationBar] setShowsNavigationBar:showsNavigationBar];
[[self navigationBar] setShown:showsNavigationBar animate:performAnimation];
if (![self outlineMenuTimer]) {
[self updateOutlineMenu];
}

View File

@ -46,13 +46,13 @@
@interface CEEditorWrapper : NSResponder
@property (nonatomic) BOOL showsLineNum;
@property (nonatomic) BOOL showsNavigationBar;
@property (nonatomic) BOOL wrapsLines;
@property (nonatomic) BOOL showsPageGuide;
@property (nonatomic) BOOL showsInvisibles;
@property (nonatomic, getter=isVerticalLayoutOrientation) BOOL verticalLayoutOrientation;
@property (nonatomic) CETextView *textView;
@property (readonly, nonatomic) BOOL showsNavigationBar;
@property (readonly, nonatomic) BOOL canActivateShowInvisibles;

View File

@ -391,12 +391,12 @@ static NSTimeInterval secondColoringDelay;
// ------------------------------------------------------
///
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar animate:(BOOL)performAnimation
// ------------------------------------------------------
{
_showsNavigationBar = showsNavigationBar;
[[self splitViewController] setShowsNavigationBar:showsNavigationBar];
[[self splitViewController] setShowsNavigationBar:showsNavigationBar animate:performAnimation];
[[[self windowController] toolbarController] toggleItemWithTag:CEToolbarShowNavigationBarItemTag
setOn:showsNavigationBar];
}
@ -674,7 +674,7 @@ static NSTimeInterval secondColoringDelay;
- (IBAction)toggleNavigationBar:(id)sender
// ------------------------------------------------------
{
[self setShowsNavigationBar:![self showsNavigationBar]];
[self setShowsNavigationBar:![self showsNavigationBar] animate:YES];
}
@ -798,7 +798,7 @@ static NSTimeInterval secondColoringDelay;
[[self window] makeFirstResponder:[editorView textView]];
[[editorView textView] setLineEndingString:[[self document] lineEndingString]];
[[editorView textView] centerSelectionInVisibleArea:self];
[editorView setShowsNavigationBar:[self showsNavigationBar]];
[editorView setShowsNavigationBar:[self showsNavigationBar] animate:NO];
[[self splitViewController] updateCloseSplitViewButton];
}
@ -866,13 +866,13 @@ static NSTimeInterval secondColoringDelay;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[self setShowsLineNum:[defaults boolForKey:CEDefaultShowLineNumbersKey]];
[self setShowsNavigationBar:[defaults boolForKey:CEDefaultShowNavigationBarKey]];
[self setShowsNavigationBar:[defaults boolForKey:CEDefaultShowNavigationBarKey] animate:NO];
[self setWrapsLines:[defaults boolForKey:CEDefaultWrapLinesKey]];
[self setVerticalLayoutOrientation:[defaults boolForKey:CEDefaultLayoutTextVerticalKey]];
[self setShowsPageGuide:[defaults boolForKey:CEDefaultShowPageGuideKey]];
} else {
[self setShowsLineNum:[self showsLineNum]];
[self setShowsNavigationBar:[self showsNavigationBar]];
[self setShowsNavigationBar:[self showsNavigationBar] animate:NO];
[self setWrapsLines:[self wrapsLines]];
[self setVerticalLayoutOrientation:[self isVerticalLayoutOrientation]];
[self setShowsPageGuide:[self showsPageGuide]];

View File

@ -34,10 +34,13 @@
@interface CENavigationBarController : NSViewController
@property (nonatomic, strong) NSTextView *textView; // NSTextView cannot be weak
@property (nonatomic) BOOL showsNavigationBar;
@property (readonly, nonatomic, getter=isShown) BOOL shown;
// Public method
- (void)setShown:(BOOL)shown animate:(BOOL)performAnimation;
- (void)setOutlineMenuArray:(NSArray *)outlineItems;
- (void)selectOutlineMenuItemWithRange:(NSRange)range;
- (void)updatePrevNextButtonEnabled;

View File

@ -48,6 +48,9 @@ static const NSTimeInterval kDuration = 0.25;
@property (nonatomic, weak) IBOutlet NSProgressIndicator *outlineIndicator;
@property (nonatomic, weak) IBOutlet NSTextField *outlineLoadingMessage;
// readonly
@property (readwrite, nonatomic, getter=isShown) BOOL shown;
@end
@ -102,18 +105,24 @@ static const NSTimeInterval kDuration = 0.25;
// ------------------------------------------------------
/// set to show navigation bar.
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar
- (void)setShown:(BOOL)isShown animate:(BOOL)performAnimation
// ------------------------------------------------------
{
_showsNavigationBar = showsNavigationBar;
[self setShown:isShown];
CGFloat height = [self showsNavigationBar] ? kDefaultHeight : 0.0;
CGFloat height = [self isShown] ? kDefaultHeight : 0.0;
// resize with animation
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration:kDuration];
[[[self heightConstraint] animator] setConstant:height];
} completionHandler:nil];
if (performAnimation) {
// resize with animation
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration:kDuration];
[[[self heightConstraint] animator] setConstant:height];
} completionHandler:nil];
} else {
// resize without animation
[[self heightConstraint] setConstant:height];
}
}

View File

@ -40,7 +40,7 @@
- (NSArray *)layoutManagers;
- (void)setShowsLineNum:(BOOL)showsLineNum;
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar;
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar animate:(BOOL)performAnimation;
- (void)setWrapsLines:(BOOL)wrapsLines;
- (void)setVerticalLayoutOrientation:(BOOL)isVerticalLayoutOrientation;
- (void)setShowsInvisibles:(BOOL)showsInvisibles;

View File

@ -114,11 +114,11 @@
// ------------------------------------------------------
///
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar
- (void)setShowsNavigationBar:(BOOL)showsNavigationBar animate:(BOOL)performAnimation
// ------------------------------------------------------
{
for (CEEditorView *subview in [[self view] subviews]) {
[subview setShowsNavigationBar:showsNavigationBar];
[subview setShowsNavigationBar:showsNavigationBar animate:performAnimation];
}
}