diff --git a/camino/Chimera.pbproj/project.pbxproj b/camino/Chimera.pbproj/project.pbxproj index 8c2514e11329..5564d2e46a2b 100644 --- a/camino/Chimera.pbproj/project.pbxproj +++ b/camino/Chimera.pbproj/project.pbxproj @@ -1057,10 +1057,13 @@ }; 3003B88B044513FF00B85BF3 = { fileEncoding = 30; + indentWidth = 2; isa = PBXFileReference; name = SearchTextFieldCell.m; path = src/browser/SearchTextFieldCell.m; refType = 4; + tabWidth = 2; + usesTabs = 0; }; 3003B88C0445140000B85BF3 = { fileEncoding = 30; diff --git a/camino/src/browser/SearchTextFieldCell.m b/camino/src/browser/SearchTextFieldCell.m index b045ee2c82b9..8eb8768668b2 100644 --- a/camino/src/browser/SearchTextFieldCell.m +++ b/camino/src/browser/SearchTextFieldCell.m @@ -211,19 +211,22 @@ const float STFSymbolYOffset = 4.0; [self showSelectedPopUpItem:([self controlView] && ![[self controlView] isFirstResponder])]; - // Invalidate the focus ring - [controlView setKeyboardFocusRingNeedsDisplayInRect:cellFrame]; - - // Draw a custom focus ring if necessary - if (wasShowingFirstResponder && [[controlView window] isKeyWindow]) { - [NSGraphicsContext saveGraphicsState]; - - NSSetFocusRingStyle(NSFocusRingOnly); - [[self fieldOutlinePathForRect:cellFrame] fill]; - - [NSGraphicsContext restoreGraphicsState]; + // Invalidate the focus ring to draw/undraw it depending on if we're in the + // key window. This will cause us to redraw the entire text field cell every time + // the insertion point flashes, but only then (it used to redraw any time anything in + // the chrome changed). + if (wasShowingFirstResponder) { + [controlView setKeyboardFocusRingNeedsDisplayInRect:cellFrame]; + if ([[controlView window] isKeyWindow]) { + [NSGraphicsContext saveGraphicsState]; + + NSSetFocusRingStyle(NSFocusRingOnly); + [[self fieldOutlinePathForRect:cellFrame] fill]; + + [NSGraphicsContext restoreGraphicsState]; + } } - + // Draw the text field [self setShowsFirstResponder:NO]; [super drawWithFrame:[self textFieldRectFromRect:cellFrame] inView:controlView]; @@ -289,7 +292,7 @@ const float STFSymbolYOffset = 4.0; // Start at the top left of the middle section aPoint.x = aRect.origin.x + [_leftImage size].width; - aPoint.y = NSMaxY(aRect) - 1.0; + aPoint.y = NSMaxY(aRect) - 2.0; [fieldOutlinePath moveToPoint:aPoint]; // Trace to the top right of the middle section @@ -299,15 +302,15 @@ const float STFSymbolYOffset = 4.0; // Trace around the right curve to the bottom right of the middle section aPoint.y = aRect.origin.y; [fieldOutlinePath curveToPoint:aPoint - controlPoint1:NSMakePoint(aPoint.x + 13.0, NSMaxY(aRect)) - controlPoint2:NSMakePoint(aPoint.x + 13.0, aPoint.y)]; + controlPoint1:NSMakePoint(aPoint.x + 11.0, NSMaxY(aRect)) + controlPoint2:NSMakePoint(aPoint.x + 11.0, aPoint.y)]; // Trace to the bottom left of the middle section aPoint.x = aRect.origin.x + [_leftImage size].width; [fieldOutlinePath lineToPoint:aPoint]; // Trace around the left curve to the top left of the middle section, i.e. the beginning - aPoint.y = NSMaxY(aRect) - 1.0; + aPoint.y = NSMaxY(aRect) - 2.0; [fieldOutlinePath curveToPoint:aPoint controlPoint1:NSMakePoint(aPoint.x - 11.0, aRect.origin.y) controlPoint2:NSMakePoint(aPoint.x - 11.0, aPoint.y)];