From d0399eb902f9a8d77ab89b97fe97dd58713a1b2b Mon Sep 17 00:00:00 2001 From: Francisco Tolmasky Date: Tue, 14 Apr 2009 15:29:37 -0700 Subject: [PATCH] Fixed a bug where placeholder state was not updated correctly. Reviewed by me. --- AppKit/CPTextField.j | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index bb7383739..fd821b4f2 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -445,6 +445,9 @@ CPTextFieldStatePlaceholder = 1 << 13; - (BOOL)becomeFirstResponder { _controlState |= CPControlStateEditing; + + [self _updatePlaceholderState]; + [self setNeedsLayout]; #if PLATFORM(DOM) @@ -487,6 +490,9 @@ CPTextFieldStatePlaceholder = 1 << 13; - (BOOL)resignFirstResponder { _controlState &= ~CPControlStateEditing; + + [self _updatePlaceholderState]; + [self setNeedsLayout]; #if PLATFORM(DOM) @@ -538,19 +544,24 @@ CPTextFieldStatePlaceholder = 1 << 13; { [super setObjectValue:aValue]; -/* -#if PLATFORM(DOM) - if ([[self window] firstResponder] == self) - [[self class] _inputElement].value = displayString; -#endif -*/ + [self _updatePlaceholderState]; +} - var string = [self stringValue]; +- (void)_updatePlaceholderState +{ + var string = [self stringValue], + controlState = _controlState; - if (!string || [string length] === 0) + if ((!string || [string length] === 0) && !(_controlState & CPControlStateEditing)) _controlState |= CPTextFieldStatePlaceholder; else _controlState &= ~CPTextFieldStatePlaceholder; + + if (_controlState !== controlState) + { + [self setNeedsLayout]; + [self setNeedsDisplay:YES]; + } } /*!