Chromium Code Reviews| Index: Source/core/rendering/RenderThemeChromiumMac.mm |
| diff --git a/Source/core/rendering/RenderThemeChromiumMac.mm b/Source/core/rendering/RenderThemeChromiumMac.mm |
| index d1995793d08be66eb6eb2a1a4335c1e5fa060aa0..9834ae2705aa2abcffd9c5e6eabafa0a94387320 100644 |
| --- a/Source/core/rendering/RenderThemeChromiumMac.mm |
| +++ b/Source/core/rendering/RenderThemeChromiumMac.mm |
| @@ -737,7 +737,10 @@ void RenderThemeChromiumMac::setFontFromControlSize(RenderStyle* style, NSContro |
| NSControlSize RenderThemeChromiumMac::controlSizeForSystemFont(RenderStyle* style) const |
| { |
| - int fontSize = style->fontSize(); |
| + float fontSize = style->fontSize(); |
| + float zoomLevel = style->effectiveZoom(); |
| + if (zoomLevel != 1.0) |
|
tkent
2013/06/13 21:54:23
1.0 should be 1.
keishi
2013/06/14 05:17:01
Done.
|
| + fontSize /= zoomLevel; |
| if (fontSize >= [NSFont systemFontSizeForControlSize:NSRegularControlSize]) |
| return NSRegularControlSize; |
| if (fontSize >= [NSFont systemFontSizeForControlSize:NSSmallControlSize]) |
| @@ -1569,6 +1572,12 @@ const IntSize* RenderThemeChromiumMac::searchFieldSizes() const |
| return sizes; |
| } |
| +static const int* searchFieldHorizontalPaddings() |
| +{ |
| + static const int sizes[3] = { 3, 2, 1 }; |
| + return sizes; |
| +} |
| + |
| void RenderThemeChromiumMac::setSearchFieldSize(RenderStyle* style) const |
| { |
| // If the width and height are both specified, then we have nothing to do. |
| @@ -1597,14 +1606,16 @@ void RenderThemeChromiumMac::adjustSearchFieldStyle(RenderStyle* style, Element* |
| style->setHeight(Length(Auto)); |
| setSearchFieldSize(style); |
| + NSControlSize controlSize = controlSizeForFont(style); |
| + |
| // Override padding size to match AppKit text positioning. |
| - const int padding = 1 * style->effectiveZoom(); |
| - style->setPaddingLeft(Length(padding, Fixed)); |
| - style->setPaddingRight(Length(padding, Fixed)); |
| - style->setPaddingTop(Length(padding, Fixed)); |
| - style->setPaddingBottom(Length(padding, Fixed)); |
| + const int verticalPadding = 1 * style->effectiveZoom(); |
| + const int horizontalPadding = searchFieldHorizontalPaddings()[controlSize] * style->effectiveZoom(); |
| + style->setPaddingLeft(Length(horizontalPadding, Fixed)); |
| + style->setPaddingRight(Length(horizontalPadding, Fixed)); |
| + style->setPaddingTop(Length(verticalPadding, Fixed)); |
| + style->setPaddingBottom(Length(verticalPadding, Fixed)); |
| - NSControlSize controlSize = controlSizeForFont(style); |
| setFontFromControlSize(style, controlSize); |
| style->setBoxShadow(nullptr); |
| @@ -1619,19 +1630,6 @@ bool RenderThemeChromiumMac::paintSearchFieldCancelButton(RenderObject* o, const |
| if (!input->renderer()->isBox()) |
| return false; |
| - LocalCurrentGraphicsContext localContext(paintInfo.context); |
| - |
| - NSSearchFieldCell* search = this->search(); |
| - setSearchCellState(input->renderer(), r); |
| - [search setControlSize:cancelButtonControlSizeForFont(o->style())]; |
| - |
| - if (!input->isDisabledFormControl() && (input->isTextFormControl() && !toHTMLTextFormControlElement(input)->isReadOnly())) { |
| - updateActiveState([search cancelButtonCell], o); |
| - updatePressedState([search cancelButtonCell], o); |
| - } |
| - else if ([[search cancelButtonCell] isHighlighted]) |
| - [[search cancelButtonCell] setHighlighted:NO]; |
| - |
| GraphicsContextStateSaver stateSaver(*paintInfo.context); |
| float zoomLevel = o->style()->effectiveZoom(); |
| @@ -1644,14 +1642,43 @@ bool RenderThemeChromiumMac::paintSearchFieldCancelButton(RenderObject* o, const |
| paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); |
| } |
| - [[search cancelButtonCell] drawWithFrame:unzoomedRect inView:documentViewFor(o)]; |
| - [[search cancelButtonCell] setControlView:nil]; |
| + Color fillColor(200, 200, 200); |
| + |
| + if (isPressed(o)) { |
| + Color tintColor(0, 0, 0, 32); |
| + fillColor = fillColor.blend(tintColor); |
| + } |
| + |
| + float centerX = unzoomedRect.x() + unzoomedRect.width() / 2.0; |
|
tkent
2013/06/13 21:54:23
2.0 should be 2.
keishi
2013/06/14 05:17:01
Done.
|
| + float centerY = unzoomedRect.y() + unzoomedRect.height() / 2.0; |
|
tkent
2013/06/13 21:54:23
ditto.
keishi
2013/06/14 05:17:01
Done.
|
| + // The line width is 3px on a regular sized, high DPI NSCancelButtonCell |
| + // (which is 28px wide). |
| + float lineWidth = unzoomedRect.width() * 3 / 28; |
| + // The line length is 16.5px on a regular sized, high DPI NSCancelButtonCell. |
| + float lineLength = unzoomedRect.width() * 16 / 28; |
|
tkent
2013/06/13 21:54:23
Why isn't it 16.5?
keishi
2013/06/14 05:17:01
16.5px looked best in my vector illustration progr
|
| + |
| + Path xPath; |
| + FloatSize lineRectRadius(lineWidth / 2, lineWidth / 2); |
| + xPath.addRoundedRect(FloatRect(-lineLength / 2, -lineWidth / 2, lineLength, lineWidth), |
| + lineRectRadius, lineRectRadius, lineRectRadius, lineRectRadius); |
| + xPath.addRoundedRect(FloatRect(-lineWidth / 2, -lineLength / 2, lineWidth, lineLength), |
| + lineRectRadius, lineRectRadius, lineRectRadius, lineRectRadius); |
| + |
| + paintInfo.context->translate(centerX, centerY); |
| + paintInfo.context->rotate(deg2rad(45.0)); |
| + paintInfo.context->clipOut(xPath); |
| + paintInfo.context->rotate(deg2rad(-45.0)); |
| + paintInfo.context->translate(-centerX, -centerY); |
| + |
| + paintInfo.context->setFillColor(fillColor); |
| + paintInfo.context->fillEllipse(unzoomedRect); |
| + |
| return false; |
| } |
| const IntSize* RenderThemeChromiumMac::cancelButtonSizes() const |
| { |
| - static const IntSize sizes[3] = { IntSize(16, 14), IntSize(13, 11), IntSize(13, 9) }; |
| + static const IntSize sizes[3] = { IntSize(14, 14), IntSize(11, 11), IntSize(9, 9) }; |
| return sizes; |
| } |
| @@ -1665,7 +1692,7 @@ void RenderThemeChromiumMac::adjustSearchFieldCancelButtonStyle(RenderStyle* sty |
| const IntSize* RenderThemeChromiumMac::resultsButtonSizes() const |
| { |
| - static const IntSize sizes[3] = { IntSize(19, 13), IntSize(17, 11), IntSize(17, 9) }; |
| + static const IntSize sizes[3] = { IntSize(16, 13), IntSize(16, 11), IntSize(16, 9) }; |
| return sizes; |
| } |