Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: Source/core/rendering/RenderThemeChromiumMac.mm

Issue 15838011: Fix where the clear button will be drawn when adding padding to the input element. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderThemeChromiumMac.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2008, 2009 Google, Inc. 3 * Copyright (C) 2008, 2009 Google, Inc.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 NSControlSize RenderThemeChromiumMac::controlSizeForFont(RenderStyle* style) con st 653 NSControlSize RenderThemeChromiumMac::controlSizeForFont(RenderStyle* style) con st
654 { 654 {
655 int fontSize = style->fontSize(); 655 int fontSize = style->fontSize();
656 if (fontSize >= 16) 656 if (fontSize >= 16)
657 return NSRegularControlSize; 657 return NSRegularControlSize;
658 if (fontSize >= 11) 658 if (fontSize >= 11)
659 return NSSmallControlSize; 659 return NSSmallControlSize;
660 return NSMiniControlSize; 660 return NSMiniControlSize;
661 } 661 }
662 662
663 // We don't use controlSizeForFont() for cancel buttons because it needs to fit
664 // into the search field. The font size will already be modified by
665 // setFontFromControlSize() called on the search field.
666 NSControlSize RenderThemeChromiumMac::cancelButtonControlSizeForFont(RenderStyle * style) const
tkent 2013/05/27 22:44:50 We don't need to make this a member function of Re
keishi 2013/05/28 03:21:57 Done.
667 {
668 int fontSize = style->fontSize();
669 if (fontSize >= 13)
670 return NSRegularControlSize;
671 if (fontSize >= 11)
672 return NSSmallControlSize;
673 return NSMiniControlSize;
674 }
675
663 void RenderThemeChromiumMac::setControlSize(NSCell* cell, const IntSize* sizes, const IntSize& minSize, float zoomLevel) 676 void RenderThemeChromiumMac::setControlSize(NSCell* cell, const IntSize* sizes, const IntSize& minSize, float zoomLevel)
664 { 677 {
665 NSControlSize size; 678 NSControlSize size;
666 if (minSize.width() >= static_cast<int>(sizes[NSRegularControlSize].width() * zoomLevel) && 679 if (minSize.width() >= static_cast<int>(sizes[NSRegularControlSize].width() * zoomLevel) &&
667 minSize.height() >= static_cast<int>(sizes[NSRegularControlSize].height( ) * zoomLevel)) 680 minSize.height() >= static_cast<int>(sizes[NSRegularControlSize].height( ) * zoomLevel))
668 size = NSRegularControlSize; 681 size = NSRegularControlSize;
669 else if (minSize.width() >= static_cast<int>(sizes[NSSmallControlSize].width () * zoomLevel) && 682 else if (minSize.width() >= static_cast<int>(sizes[NSSmallControlSize].width () * zoomLevel) &&
670 minSize.height() >= static_cast<int>(sizes[NSSmallControlSize].heig ht() * zoomLevel)) 683 minSize.height() >= static_cast<int>(sizes[NSSmallControlSize].heig ht() * zoomLevel))
671 size = NSSmallControlSize; 684 size = NSSmallControlSize;
672 else 685 else
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after
1502 1515
1503 [sliderThumbCell drawInteriorWithFrame:unzoomedRect inView:documentViewFor(o )]; 1516 [sliderThumbCell drawInteriorWithFrame:unzoomedRect inView:documentViewFor(o )];
1504 [sliderThumbCell setControlView:nil]; 1517 [sliderThumbCell setControlView:nil];
1505 1518
1506 return false; 1519 return false;
1507 } 1520 }
1508 1521
1509 bool RenderThemeChromiumMac::paintSearchField(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r) 1522 bool RenderThemeChromiumMac::paintSearchField(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
1510 { 1523 {
1511 LocalCurrentGraphicsContext localContext(paintInfo.context); 1524 LocalCurrentGraphicsContext localContext(paintInfo.context);
1525
1512 NSSearchFieldCell* search = this->search(); 1526 NSSearchFieldCell* search = this->search();
1513
1514 setSearchCellState(o, r); 1527 setSearchCellState(o, r);
1528 [search setControlSize:controlSizeForFont(o->style())];
1515 1529
1516 GraphicsContextStateSaver stateSaver(*paintInfo.context); 1530 GraphicsContextStateSaver stateSaver(*paintInfo.context);
1517 1531
1518 float zoomLevel = o->style()->effectiveZoom(); 1532 float zoomLevel = o->style()->effectiveZoom();
1519 1533
1520 IntRect unzoomedRect = r; 1534 IntRect unzoomedRect = r;
1521 1535
1522 if (zoomLevel != 1.0f) { 1536 if (zoomLevel != 1.0f) {
1523 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); 1537 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
1524 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); 1538 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel);
(...skipping 10 matching lines...) Expand all
1535 [search setControlView:nil]; 1549 [search setControlView:nil];
1536 [search resetSearchButtonCell]; 1550 [search resetSearchButtonCell];
1537 1551
1538 return false; 1552 return false;
1539 } 1553 }
1540 1554
1541 void RenderThemeChromiumMac::setSearchCellState(RenderObject* o, const IntRect&) 1555 void RenderThemeChromiumMac::setSearchCellState(RenderObject* o, const IntRect&)
1542 { 1556 {
1543 NSSearchFieldCell* search = this->search(); 1557 NSSearchFieldCell* search = this->search();
1544 1558
1545 [search setControlSize:controlSizeForFont(o->style())];
1546
1547 // Update the various states we respond to. 1559 // Update the various states we respond to.
1548 updateActiveState(search, o); 1560 updateActiveState(search, o);
1549 updateEnabledState(search, o); 1561 updateEnabledState(search, o);
1550 updateFocusedState(search, o); 1562 updateFocusedState(search, o);
1551 } 1563 }
1552 1564
1553 const IntSize* RenderThemeChromiumMac::searchFieldSizes() const 1565 const IntSize* RenderThemeChromiumMac::searchFieldSizes() const
1554 { 1566 {
1555 static const IntSize sizes[3] = { IntSize(0, 22), IntSize(0, 19), IntSize(0, 17) }; 1567 static const IntSize sizes[3] = { IntSize(0, 22), IntSize(0, 19), IntSize(0, 17) };
1556 return sizes; 1568 return sizes;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1600 bool RenderThemeChromiumMac::paintSearchFieldCancelButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r) 1612 bool RenderThemeChromiumMac::paintSearchFieldCancelButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
1601 { 1613 {
1602 Element* input = o->node()->shadowHost(); 1614 Element* input = o->node()->shadowHost();
1603 if (!input) 1615 if (!input)
1604 input = toElement(o->node()); 1616 input = toElement(o->node());
1605 1617
1606 if (!input->renderer()->isBox()) 1618 if (!input->renderer()->isBox())
1607 return false; 1619 return false;
1608 1620
1609 LocalCurrentGraphicsContext localContext(paintInfo.context); 1621 LocalCurrentGraphicsContext localContext(paintInfo.context);
1610 setSearchCellState(input->renderer(), r);
1611 1622
1612 NSSearchFieldCell* search = this->search(); 1623 NSSearchFieldCell* search = this->search();
1624 setSearchCellState(input->renderer(), r);
1625 [search setControlSize:cancelButtonControlSizeForFont(o->style())];
1613 1626
1614 if (!input->isDisabledFormControl() && (input->isTextFormControl() && !toHTM LTextFormControlElement(input)->isReadOnly())) { 1627 if (!input->isDisabledFormControl() && (input->isTextFormControl() && !toHTM LTextFormControlElement(input)->isReadOnly())) {
1615 updateActiveState([search cancelButtonCell], o); 1628 updateActiveState([search cancelButtonCell], o);
1616 updatePressedState([search cancelButtonCell], o); 1629 updatePressedState([search cancelButtonCell], o);
1617 } 1630 }
1618 else if ([[search cancelButtonCell] isHighlighted]) 1631 else if ([[search cancelButtonCell] isHighlighted])
1619 [[search cancelButtonCell] setHighlighted:NO]; 1632 [[search cancelButtonCell] setHighlighted:NO];
1620 1633
1621 GraphicsContextStateSaver stateSaver(*paintInfo.context); 1634 GraphicsContextStateSaver stateSaver(*paintInfo.context);
1622 1635
1623 float zoomLevel = o->style()->effectiveZoom(); 1636 float zoomLevel = o->style()->effectiveZoom();
1624 1637 FloatRect unzoomedRect(r);
1625 FloatRect localBounds = [search cancelButtonRectForBounds:NSRect(input->rend erBox()->pixelSnappedBorderBoxRect())];
1626
1627 #if ENABLE(INPUT_SPEECH)
tkent 2013/05/27 22:44:50 Is this code unnecessary?
keishi 2013/05/28 03:21:57 This is to avoid drawing where the speech button i
1628 // Take care of cases where the cancel button was not aligned with the right border of the input element (for e.g.
1629 // when speech input is enabled for the input element.
1630 IntRect absBoundingBox = input->renderer()->absoluteBoundingBoxRect();
1631 int absRight = absBoundingBox.x() + absBoundingBox.width() - input->renderBo x()->paddingRight() - input->renderBox()->borderRight();
1632 int spaceToRightOfCancelButton = absRight - (r.x() + r.width());
1633 localBounds.setX(localBounds.x() - spaceToRightOfCancelButton);
1634 #endif
1635
1636 localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r);
1637
1638 FloatRect unzoomedRect(localBounds);
1639 if (zoomLevel != 1.0f) { 1638 if (zoomLevel != 1.0f) {
1640 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel); 1639 unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);
1641 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel); 1640 unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel);
1642 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y()); 1641 paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y());
1643 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel)); 1642 paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));
1644 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y()); 1643 paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y());
1645 } 1644 }
1646 1645
1647 [[search cancelButtonCell] drawWithFrame:unzoomedRect inView:documentViewFor (o)]; 1646 [[search cancelButtonCell] drawWithFrame:unzoomedRect inView:documentViewFor (o)];
1648 [[search cancelButtonCell] setControlView:nil]; 1647 [[search cancelButtonCell] setControlView:nil];
1649 return false; 1648 return false;
1650 } 1649 }
1651 1650
1652 const IntSize* RenderThemeChromiumMac::cancelButtonSizes() const 1651 const IntSize* RenderThemeChromiumMac::cancelButtonSizes() const
1653 { 1652 {
1654 static const IntSize sizes[3] = { IntSize(16, 13), IntSize(13, 11), IntSize( 13, 9) }; 1653 static const IntSize sizes[3] = { IntSize(16, 14), IntSize(13, 11), IntSize( 13, 9) };
1655 return sizes; 1654 return sizes;
1656 } 1655 }
1657 1656
1658 void RenderThemeChromiumMac::adjustSearchFieldCancelButtonStyle(StyleResolver*, RenderStyle* style, Element*) const 1657 void RenderThemeChromiumMac::adjustSearchFieldCancelButtonStyle(StyleResolver*, RenderStyle* style, Element*) const
1659 { 1658 {
1660 IntSize size = sizeForSystemFont(style, cancelButtonSizes()); 1659 IntSize size = sizeForSystemFont(style, cancelButtonSizes());
1661 style->setWidth(Length(size.width(), Fixed)); 1660 style->setWidth(Length(size.width(), Fixed));
1662 style->setHeight(Length(size.height(), Fixed)); 1661 style->setHeight(Length(size.height(), Fixed));
1663 style->setBoxShadow(nullptr); 1662 style->setBoxShadow(nullptr);
1664 } 1663 }
(...skipping 28 matching lines...) Expand all
1693 1692
1694 bool RenderThemeChromiumMac::paintSearchFieldResultsDecoration(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r) 1693 bool RenderThemeChromiumMac::paintSearchFieldResultsDecoration(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
1695 { 1694 {
1696 Node* input = o->node()->shadowHost(); 1695 Node* input = o->node()->shadowHost();
1697 if (!input) 1696 if (!input)
1698 input = o->node(); 1697 input = o->node();
1699 if (!input->renderer()->isBox()) 1698 if (!input->renderer()->isBox())
1700 return false; 1699 return false;
1701 1700
1702 LocalCurrentGraphicsContext localContext(paintInfo.context); 1701 LocalCurrentGraphicsContext localContext(paintInfo.context);
1703 setSearchCellState(input->renderer(), r);
1704 1702
1705 NSSearchFieldCell* search = this->search(); 1703 NSSearchFieldCell* search = this->search();
1704 setSearchCellState(input->renderer(), r);
1705 [search setControlSize:controlSizeForFont(o->style())];
1706 1706
1707 if ([search searchMenuTemplate] != nil) 1707 if ([search searchMenuTemplate] != nil)
1708 [search setSearchMenuTemplate:nil]; 1708 [search setSearchMenuTemplate:nil];
1709 1709
1710 updateActiveState([search searchButtonCell], o); 1710 updateActiveState([search searchButtonCell], o);
1711 1711
1712 FloatRect localBounds = [search searchButtonRectForBounds:NSRect(input->rend erBox()->pixelSnappedBorderBoxRect())]; 1712 FloatRect localBounds = [search searchButtonRectForBounds:NSRect(input->rend erBox()->pixelSnappedBorderBoxRect())];
1713 localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r); 1713 localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r);
1714 1714
1715 [[search searchButtonCell] drawWithFrame:localBounds inView:documentViewFor( o)]; 1715 [[search searchButtonCell] drawWithFrame:localBounds inView:documentViewFor( o)];
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1956 { 1956 {
1957 return RenderMediaControlsChromium::paintMediaControlsPart(MediaEnterFullscr eenButton, object, paintInfo, rect); 1957 return RenderMediaControlsChromium::paintMediaControlsPart(MediaEnterFullscr eenButton, object, paintInfo, rect);
1958 } 1958 }
1959 1959
1960 bool RenderThemeChromiumMac::paintMediaToggleClosedCaptionsButton(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect) 1960 bool RenderThemeChromiumMac::paintMediaToggleClosedCaptionsButton(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect)
1961 { 1961 {
1962 return RenderMediaControlsChromium::paintMediaControlsPart(MediaShowClosedCa ptionsButton, object, paintInfo, rect); 1962 return RenderMediaControlsChromium::paintMediaControlsPart(MediaShowClosedCa ptionsButton, object, paintInfo, rect);
1963 } 1963 }
1964 1964
1965 } // namespace WebCore 1965 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderThemeChromiumMac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698