From d2caa0953fb9615ff3bcbf79410a7f037a408e98 Mon Sep 17 00:00:00 2001 From: daboe01 Date: Tue, 2 Jun 2015 22:23:32 +0200 Subject: [PATCH] various caret fixes --- AppKit/CPTextView/CPTextView.j | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/AppKit/CPTextView/CPTextView.j b/AppKit/CPTextView/CPTextView.j index 35fac7d4f..84c59228e 100644 --- a/AppKit/CPTextView/CPTextView.j +++ b/AppKit/CPTextView/CPTextView.j @@ -521,7 +521,7 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)drawInsertionPointInRect:(CGRect)aRect color:(CPColor)aColor turnedOn:(BOOL)flag { [_caret setRect:aRect]; - [_caret setVisibility:flag]; + [_caret setVisibility:flag stop:NO]; } @@ -1953,15 +1953,19 @@ var CPTextViewAllowsUndoKey = @"CPTextViewAllowsUndoKey", return self; } -- (void)setVisibility:(BOOL)flag +- (void)setVisibility:(BOOL)visibilityFlag stop:(BOOL)stopFlag { #if PLATFORM(DOM) - _caretDOM.style.visibility = flag ? "visible" : "hidden"; + _caretDOM.style.visibility = visibilityFlag ? "visible" : "hidden"; #endif - if (!flag) + if (! visibilityFlag && stopFlag) [self stopBlinking]; } +- (void)setVisibility:(BOOL)visibilityFlag +{ + [self setVisibility:visibilityFlag stop:YES]; +} - (void)_blinkCaret:(CPTimer)aTimer { @@ -1972,6 +1976,10 @@ var CPTextViewAllowsUndoKey = @"CPTextViewAllowsUndoKey", - (void)startBlinking { _drawCaret = YES; + + if ([self isBlinking]) + return; + _caretTimer = [CPTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(_blinkCaret:) userInfo:nil repeats:YES]; }