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

Side by Side Diff: Source/core/layout/LayoutTheme.cpp

Issue 899163003: Move rendering/RenderObject to layout/LayoutObject. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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/layout/LayoutTheme.h ('k') | Source/core/layout/LayoutThemeChromiumAndroid.cpp » ('j') | 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 * This file is part of the theme implementation for form controls in WebCore. 2 * This file is part of the theme implementation for form controls in WebCore.
3 * 3 *
4 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Computer, Inc. 4 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Computer, Inc.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 #include "public/platform/WebFallbackThemeEngine.h" 60 #include "public/platform/WebFallbackThemeEngine.h"
61 #include "public/platform/WebRect.h" 61 #include "public/platform/WebRect.h"
62 #include "wtf/text/StringBuilder.h" 62 #include "wtf/text/StringBuilder.h"
63 63
64 // The methods in this file are shared by all themes on every platform. 64 // The methods in this file are shared by all themes on every platform.
65 65
66 namespace blink { 66 namespace blink {
67 67
68 using namespace HTMLNames; 68 using namespace HTMLNames;
69 69
70 static WebFallbackThemeEngine::State getWebFallbackThemeState(const LayoutTheme* theme, const RenderObject* o) 70 static WebFallbackThemeEngine::State getWebFallbackThemeState(const LayoutTheme* theme, const LayoutObject* o)
71 { 71 {
72 if (!theme->isEnabled(o)) 72 if (!theme->isEnabled(o))
73 return WebFallbackThemeEngine::StateDisabled; 73 return WebFallbackThemeEngine::StateDisabled;
74 if (theme->isPressed(o)) 74 if (theme->isPressed(o))
75 return WebFallbackThemeEngine::StatePressed; 75 return WebFallbackThemeEngine::StatePressed;
76 if (theme->isHovered(o)) 76 if (theme->isHovered(o))
77 return WebFallbackThemeEngine::StateHover; 77 return WebFallbackThemeEngine::StateHover;
78 78
79 return WebFallbackThemeEngine::StateNormal; 79 return WebFallbackThemeEngine::StateNormal;
80 } 80 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 return adjustSearchFieldCancelButtonStyle(style, e); 222 return adjustSearchFieldCancelButtonStyle(style, e);
223 case SearchFieldDecorationPart: 223 case SearchFieldDecorationPart:
224 return adjustSearchFieldDecorationStyle(style, e); 224 return adjustSearchFieldDecorationStyle(style, e);
225 case SearchFieldResultsDecorationPart: 225 case SearchFieldResultsDecorationPart:
226 return adjustSearchFieldResultsDecorationStyle(style, e); 226 return adjustSearchFieldResultsDecorationStyle(style, e);
227 default: 227 default:
228 break; 228 break;
229 } 229 }
230 } 230 }
231 231
232 bool LayoutTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const IntRe ct& r) 232 bool LayoutTheme::paint(LayoutObject* o, const PaintInfo& paintInfo, const IntRe ct& r)
233 { 233 {
234 ControlPart part = o->styleRef().appearance(); 234 ControlPart part = o->styleRef().appearance();
235 235
236 if (shouldUseFallbackTheme(o->styleRef())) 236 if (shouldUseFallbackTheme(o->styleRef()))
237 return paintUsingFallbackTheme(o, paintInfo, r); 237 return paintUsingFallbackTheme(o, paintInfo, r);
238 238
239 #if USE(NEW_THEME) 239 #if USE(NEW_THEME)
240 switch (part) { 240 switch (part) {
241 case CheckboxPart: 241 case CheckboxPart:
242 case RadioPart: 242 case RadioPart:
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 return paintSearchFieldDecoration(o, paintInfo, r); 328 return paintSearchFieldDecoration(o, paintInfo, r);
329 case SearchFieldResultsDecorationPart: 329 case SearchFieldResultsDecorationPart:
330 return paintSearchFieldResultsDecoration(o, paintInfo, r); 330 return paintSearchFieldResultsDecoration(o, paintInfo, r);
331 default: 331 default:
332 break; 332 break;
333 } 333 }
334 334
335 return true; // We don't support the appearance, so let the normal backgroun d/border paint. 335 return true; // We don't support the appearance, so let the normal backgroun d/border paint.
336 } 336 }
337 337
338 bool LayoutTheme::paintBorderOnly(RenderObject* o, const PaintInfo& paintInfo, c onst IntRect& r) 338 bool LayoutTheme::paintBorderOnly(LayoutObject* o, const PaintInfo& paintInfo, c onst IntRect& r)
339 { 339 {
340 // Call the appropriate paint method based off the appearance value. 340 // Call the appropriate paint method based off the appearance value.
341 switch (o->style()->appearance()) { 341 switch (o->style()->appearance()) {
342 case TextFieldPart: 342 case TextFieldPart:
343 return paintTextField(o, paintInfo, r); 343 return paintTextField(o, paintInfo, r);
344 case TextAreaPart: 344 case TextAreaPart:
345 return paintTextArea(o, paintInfo, r); 345 return paintTextArea(o, paintInfo, r);
346 case MenulistButtonPart: 346 case MenulistButtonPart:
347 case SearchFieldPart: 347 case SearchFieldPart:
348 case ListboxPart: 348 case ListboxPart:
(...skipping 17 matching lines...) Expand all
366 case SearchFieldCancelButtonPart: 366 case SearchFieldCancelButtonPart:
367 case SearchFieldDecorationPart: 367 case SearchFieldDecorationPart:
368 case SearchFieldResultsDecorationPart: 368 case SearchFieldResultsDecorationPart:
369 default: 369 default:
370 break; 370 break;
371 } 371 }
372 372
373 return false; 373 return false;
374 } 374 }
375 375
376 bool LayoutTheme::paintDecorations(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r) 376 bool LayoutTheme::paintDecorations(LayoutObject* o, const PaintInfo& paintInfo, const IntRect& r)
377 { 377 {
378 // Call the appropriate paint method based off the appearance value. 378 // Call the appropriate paint method based off the appearance value.
379 switch (o->style()->appearance()) { 379 switch (o->style()->appearance()) {
380 case MenulistButtonPart: 380 case MenulistButtonPart:
381 return paintMenuListButton(o, paintInfo, r); 381 return paintMenuListButton(o, paintInfo, r);
382 case TextFieldPart: 382 case TextFieldPart:
383 case TextAreaPart: 383 case TextAreaPart:
384 case CheckboxPart: 384 case CheckboxPart:
385 case RadioPart: 385 case RadioPart:
386 case PushButtonPart: 386 case PushButtonPart:
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 Color LayoutTheme::platformInactiveListBoxSelectionBackgroundColor() const 517 Color LayoutTheme::platformInactiveListBoxSelectionBackgroundColor() const
518 { 518 {
519 return platformInactiveSelectionBackgroundColor(); 519 return platformInactiveSelectionBackgroundColor();
520 } 520 }
521 521
522 Color LayoutTheme::platformInactiveListBoxSelectionForegroundColor() const 522 Color LayoutTheme::platformInactiveListBoxSelectionForegroundColor() const
523 { 523 {
524 return platformInactiveSelectionForegroundColor(); 524 return platformInactiveSelectionForegroundColor();
525 } 525 }
526 526
527 int LayoutTheme::baselinePosition(const RenderObject* o) const 527 int LayoutTheme::baselinePosition(const LayoutObject* o) const
528 { 528 {
529 if (!o->isBox()) 529 if (!o->isBox())
530 return 0; 530 return 0;
531 531
532 const RenderBox* box = toRenderBox(o); 532 const RenderBox* box = toRenderBox(o);
533 533
534 #if USE(NEW_THEME) 534 #if USE(NEW_THEME)
535 return box->size().height() + box->marginTop() + m_platformTheme->baselinePo sitionAdjustment(o->style()->appearance()) * o->style()->effectiveZoom(); 535 return box->size().height() + box->marginTop() + m_platformTheme->baselinePo sitionAdjustment(o->style()->appearance()) * o->style()->effectiveZoom();
536 #else 536 #else
537 return box->size().height() + box->marginTop(); 537 return box->size().height() + box->marginTop();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 584
585 case SliderHorizontalPart: 585 case SliderHorizontalPart:
586 case SliderVerticalPart: 586 case SliderVerticalPart:
587 return style.boxShadow(); 587 return style.boxShadow();
588 588
589 default: 589 default:
590 return false; 590 return false;
591 } 591 }
592 } 592 }
593 593
594 void LayoutTheme::adjustPaintInvalidationRect(const RenderObject* o, IntRect& r) 594 void LayoutTheme::adjustPaintInvalidationRect(const LayoutObject* o, IntRect& r)
595 { 595 {
596 #if USE(NEW_THEME) 596 #if USE(NEW_THEME)
597 m_platformTheme->inflateControlPaintRect(o->style()->appearance(), controlSt atesForRenderer(o), r, o->style()->effectiveZoom()); 597 m_platformTheme->inflateControlPaintRect(o->style()->appearance(), controlSt atesForRenderer(o), r, o->style()->effectiveZoom());
598 #endif 598 #endif
599 } 599 }
600 600
601 bool LayoutTheme::shouldDrawDefaultFocusRing(RenderObject* renderer) const 601 bool LayoutTheme::shouldDrawDefaultFocusRing(LayoutObject* renderer) const
602 { 602 {
603 if (supportsFocusRing(renderer->styleRef())) 603 if (supportsFocusRing(renderer->styleRef()))
604 return false; 604 return false;
605 Node* node = renderer->node(); 605 Node* node = renderer->node();
606 if (!node) 606 if (!node)
607 return true; 607 return true;
608 if (!renderer->styleRef().hasAppearance() && !node->isLink()) 608 if (!renderer->styleRef().hasAppearance() && !node->isLink())
609 return true; 609 return true;
610 // We can't use LayoutTheme::isFocused because outline:auto might be 610 // We can't use LayoutTheme::isFocused because outline:auto might be
611 // specified to non-:focus rulesets. 611 // specified to non-:focus rulesets.
612 if (node->focused() && !node->shouldHaveFocusAppearance()) 612 if (node->focused() && !node->shouldHaveFocusAppearance())
613 return false; 613 return false;
614 return true; 614 return true;
615 } 615 }
616 616
617 bool LayoutTheme::supportsFocusRing(const RenderStyle& style) const 617 bool LayoutTheme::supportsFocusRing(const RenderStyle& style) const
618 { 618 {
619 return (style.hasAppearance() && style.appearance() != TextFieldPart && styl e.appearance() != TextAreaPart && style.appearance() != MenulistButtonPart && st yle.appearance() != ListboxPart); 619 return (style.hasAppearance() && style.appearance() != TextFieldPart && styl e.appearance() != TextAreaPart && style.appearance() != MenulistButtonPart && st yle.appearance() != ListboxPart);
620 } 620 }
621 621
622 bool LayoutTheme::stateChanged(RenderObject* o, ControlState state) const 622 bool LayoutTheme::stateChanged(LayoutObject* o, ControlState state) const
623 { 623 {
624 // Default implementation assumes the controls don't respond to changes in : hover state 624 // Default implementation assumes the controls don't respond to changes in : hover state
625 if (state == HoverControlState && !supportsHover(o->styleRef())) 625 if (state == HoverControlState && !supportsHover(o->styleRef()))
626 return false; 626 return false;
627 627
628 // Assume pressed state is only responded to if the control is enabled. 628 // Assume pressed state is only responded to if the control is enabled.
629 if (state == PressedControlState && !isEnabled(o)) 629 if (state == PressedControlState && !isEnabled(o))
630 return false; 630 return false;
631 631
632 o->setShouldDoFullPaintInvalidation(); 632 o->setShouldDoFullPaintInvalidation();
633 return true; 633 return true;
634 } 634 }
635 635
636 ControlStates LayoutTheme::controlStatesForRenderer(const RenderObject* o) const 636 ControlStates LayoutTheme::controlStatesForRenderer(const LayoutObject* o) const
637 { 637 {
638 ControlStates result = 0; 638 ControlStates result = 0;
639 if (isHovered(o)) { 639 if (isHovered(o)) {
640 result |= HoverControlState; 640 result |= HoverControlState;
641 if (isSpinUpButtonPartHovered(o)) 641 if (isSpinUpButtonPartHovered(o))
642 result |= SpinUpControlState; 642 result |= SpinUpControlState;
643 } 643 }
644 if (isPressed(o)) { 644 if (isPressed(o)) {
645 result |= PressedControlState; 645 result |= PressedControlState;
646 if (isSpinUpButtonPartPressed(o)) 646 if (isSpinUpButtonPartPressed(o))
647 result |= SpinUpControlState; 647 result |= SpinUpControlState;
648 } 648 }
649 if (isFocused(o) && o->style()->outlineStyleIsAuto()) 649 if (isFocused(o) && o->style()->outlineStyleIsAuto())
650 result |= FocusControlState; 650 result |= FocusControlState;
651 if (isEnabled(o)) 651 if (isEnabled(o))
652 result |= EnabledControlState; 652 result |= EnabledControlState;
653 if (isChecked(o)) 653 if (isChecked(o))
654 result |= CheckedControlState; 654 result |= CheckedControlState;
655 if (isReadOnlyControl(o)) 655 if (isReadOnlyControl(o))
656 result |= ReadOnlyControlState; 656 result |= ReadOnlyControlState;
657 if (!isActive(o)) 657 if (!isActive(o))
658 result |= WindowInactiveControlState; 658 result |= WindowInactiveControlState;
659 if (isIndeterminate(o)) 659 if (isIndeterminate(o))
660 result |= IndeterminateControlState; 660 result |= IndeterminateControlState;
661 return result; 661 return result;
662 } 662 }
663 663
664 bool LayoutTheme::isActive(const RenderObject* o) const 664 bool LayoutTheme::isActive(const LayoutObject* o) const
665 { 665 {
666 Node* node = o->node(); 666 Node* node = o->node();
667 if (!node) 667 if (!node)
668 return false; 668 return false;
669 669
670 Page* page = node->document().page(); 670 Page* page = node->document().page();
671 if (!page) 671 if (!page)
672 return false; 672 return false;
673 673
674 return page->focusController().isActive(); 674 return page->focusController().isActive();
675 } 675 }
676 676
677 bool LayoutTheme::isChecked(const RenderObject* o) const 677 bool LayoutTheme::isChecked(const LayoutObject* o) const
678 { 678 {
679 if (!isHTMLInputElement(o->node())) 679 if (!isHTMLInputElement(o->node()))
680 return false; 680 return false;
681 return toHTMLInputElement(o->node())->shouldAppearChecked(); 681 return toHTMLInputElement(o->node())->shouldAppearChecked();
682 } 682 }
683 683
684 bool LayoutTheme::isIndeterminate(const RenderObject* o) const 684 bool LayoutTheme::isIndeterminate(const LayoutObject* o) const
685 { 685 {
686 if (!isHTMLInputElement(o->node())) 686 if (!isHTMLInputElement(o->node()))
687 return false; 687 return false;
688 return toHTMLInputElement(o->node())->shouldAppearIndeterminate(); 688 return toHTMLInputElement(o->node())->shouldAppearIndeterminate();
689 } 689 }
690 690
691 bool LayoutTheme::isEnabled(const RenderObject* o) const 691 bool LayoutTheme::isEnabled(const LayoutObject* o) const
692 { 692 {
693 Node* node = o->node(); 693 Node* node = o->node();
694 if (!node || !node->isElementNode()) 694 if (!node || !node->isElementNode())
695 return true; 695 return true;
696 return !toElement(node)->isDisabledFormControl(); 696 return !toElement(node)->isDisabledFormControl();
697 } 697 }
698 698
699 bool LayoutTheme::isFocused(const RenderObject* o) const 699 bool LayoutTheme::isFocused(const LayoutObject* o) const
700 { 700 {
701 Node* node = o->node(); 701 Node* node = o->node();
702 if (!node) 702 if (!node)
703 return false; 703 return false;
704 704
705 node = node->focusDelegate(); 705 node = node->focusDelegate();
706 Document& document = node->document(); 706 Document& document = node->document();
707 LocalFrame* frame = document.frame(); 707 LocalFrame* frame = document.frame();
708 return node == document.focusedElement() && node->focused() && node->shouldH aveFocusAppearance() && frame && frame->selection().isFocusedAndActive(); 708 return node == document.focusedElement() && node->focused() && node->shouldH aveFocusAppearance() && frame && frame->selection().isFocusedAndActive();
709 } 709 }
710 710
711 bool LayoutTheme::isPressed(const RenderObject* o) const 711 bool LayoutTheme::isPressed(const LayoutObject* o) const
712 { 712 {
713 if (!o->node()) 713 if (!o->node())
714 return false; 714 return false;
715 return o->node()->active(); 715 return o->node()->active();
716 } 716 }
717 717
718 bool LayoutTheme::isSpinUpButtonPartPressed(const RenderObject* o) const 718 bool LayoutTheme::isSpinUpButtonPartPressed(const LayoutObject* o) const
719 { 719 {
720 Node* node = o->node(); 720 Node* node = o->node();
721 if (!node || !node->active() || !node->isElementNode() 721 if (!node || !node->active() || !node->isElementNode()
722 || !toElement(node)->isSpinButtonElement()) 722 || !toElement(node)->isSpinButtonElement())
723 return false; 723 return false;
724 SpinButtonElement* element = toSpinButtonElement(node); 724 SpinButtonElement* element = toSpinButtonElement(node);
725 return element->upDownState() == SpinButtonElement::Up; 725 return element->upDownState() == SpinButtonElement::Up;
726 } 726 }
727 727
728 bool LayoutTheme::isReadOnlyControl(const RenderObject* o) const 728 bool LayoutTheme::isReadOnlyControl(const LayoutObject* o) const
729 { 729 {
730 Node* node = o->node(); 730 Node* node = o->node();
731 if (!node || !node->isElementNode() || !toElement(node)->isFormControlElemen t()) 731 if (!node || !node->isElementNode() || !toElement(node)->isFormControlElemen t())
732 return false; 732 return false;
733 HTMLFormControlElement* element = toHTMLFormControlElement(node); 733 HTMLFormControlElement* element = toHTMLFormControlElement(node);
734 return element->isReadOnly(); 734 return element->isReadOnly();
735 } 735 }
736 736
737 bool LayoutTheme::isHovered(const RenderObject* o) const 737 bool LayoutTheme::isHovered(const LayoutObject* o) const
738 { 738 {
739 Node* node = o->node(); 739 Node* node = o->node();
740 if (!node) 740 if (!node)
741 return false; 741 return false;
742 if (!node->isElementNode() || !toElement(node)->isSpinButtonElement()) 742 if (!node->isElementNode() || !toElement(node)->isSpinButtonElement())
743 return node->hovered(); 743 return node->hovered();
744 SpinButtonElement* element = toSpinButtonElement(node); 744 SpinButtonElement* element = toSpinButtonElement(node);
745 return element->hovered() && element->upDownState() != SpinButtonElement::In determinate; 745 return element->hovered() && element->upDownState() != SpinButtonElement::In determinate;
746 } 746 }
747 747
748 bool LayoutTheme::isSpinUpButtonPartHovered(const RenderObject* o) const 748 bool LayoutTheme::isSpinUpButtonPartHovered(const LayoutObject* o) const
749 { 749 {
750 Node* node = o->node(); 750 Node* node = o->node();
751 if (!node || !node->isElementNode() || !toElement(node)->isSpinButtonElement ()) 751 if (!node || !node->isElementNode() || !toElement(node)->isSpinButtonElement ())
752 return false; 752 return false;
753 SpinButtonElement* element = toSpinButtonElement(node); 753 SpinButtonElement* element = toSpinButtonElement(node);
754 return element->upDownState() == SpinButtonElement::Up; 754 return element->upDownState() == SpinButtonElement::Up;
755 } 755 }
756 756
757 #if !USE(NEW_THEME) 757 #if !USE(NEW_THEME)
758 758
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 IntSize LayoutTheme::meterSizeForBounds(const RenderMeter*, const IntRect& bound s) const 802 IntSize LayoutTheme::meterSizeForBounds(const RenderMeter*, const IntRect& bound s) const
803 { 803 {
804 return bounds.size(); 804 return bounds.size();
805 } 805 }
806 806
807 bool LayoutTheme::supportsMeter(ControlPart) const 807 bool LayoutTheme::supportsMeter(ControlPart) const
808 { 808 {
809 return false; 809 return false;
810 } 810 }
811 811
812 bool LayoutTheme::paintMeter(RenderObject*, const PaintInfo&, const IntRect&) 812 bool LayoutTheme::paintMeter(LayoutObject*, const PaintInfo&, const IntRect&)
813 { 813 {
814 return true; 814 return true;
815 } 815 }
816 816
817 void LayoutTheme::paintSliderTicks(RenderObject* o, const PaintInfo& paintInfo, const IntRect& rect) 817 void LayoutTheme::paintSliderTicks(LayoutObject* o, const PaintInfo& paintInfo, const IntRect& rect)
818 { 818 {
819 Node* node = o->node(); 819 Node* node = o->node();
820 if (!isHTMLInputElement(node)) 820 if (!isHTMLInputElement(node))
821 return; 821 return;
822 822
823 HTMLInputElement* input = toHTMLInputElement(node); 823 HTMLInputElement* input = toHTMLInputElement(node);
824 if (input->type() != InputTypeNames::range) 824 if (input->type() != InputTypeNames::range)
825 return; 825 return;
826 826
827 HTMLDataListElement* dataList = input->dataList(); 827 HTMLDataListElement* dataList = input->dataList();
828 if (!dataList) 828 if (!dataList)
829 return; 829 return;
830 830
831 double min = input->minimum(); 831 double min = input->minimum();
832 double max = input->maximum(); 832 double max = input->maximum();
833 ControlPart part = o->style()->appearance(); 833 ControlPart part = o->style()->appearance();
834 // We don't support ticks on alternate sliders like MediaVolumeSliders. 834 // We don't support ticks on alternate sliders like MediaVolumeSliders.
835 if (part != SliderHorizontalPart && part != SliderVerticalPart) 835 if (part != SliderHorizontalPart && part != SliderVerticalPart)
836 return; 836 return;
837 bool isHorizontal = part == SliderHorizontalPart; 837 bool isHorizontal = part == SliderHorizontalPart;
838 838
839 IntSize thumbSize; 839 IntSize thumbSize;
840 RenderObject* thumbRenderer = input->userAgentShadowRoot()->getElementById(S hadowElementNames::sliderThumb())->renderer(); 840 LayoutObject* thumbRenderer = input->userAgentShadowRoot()->getElementById(S hadowElementNames::sliderThumb())->renderer();
841 if (thumbRenderer) { 841 if (thumbRenderer) {
842 const RenderStyle& thumbStyle = thumbRenderer->styleRef(); 842 const RenderStyle& thumbStyle = thumbRenderer->styleRef();
843 int thumbWidth = thumbStyle.width().intValue(); 843 int thumbWidth = thumbStyle.width().intValue();
844 int thumbHeight = thumbStyle.height().intValue(); 844 int thumbHeight = thumbStyle.height().intValue();
845 thumbSize.setWidth(isHorizontal ? thumbWidth : thumbHeight); 845 thumbSize.setWidth(isHorizontal ? thumbWidth : thumbHeight);
846 thumbSize.setHeight(isHorizontal ? thumbHeight : thumbWidth); 846 thumbSize.setHeight(isHorizontal ? thumbHeight : thumbWidth);
847 } 847 }
848 848
849 IntSize tickSize = sliderTickSize(); 849 IntSize tickSize = sliderTickSize();
850 float zoomFactor = o->style()->effectiveZoom(); 850 float zoomFactor = o->style()->effectiveZoom();
851 FloatRect tickRect; 851 FloatRect tickRect;
852 int tickRegionSideMargin = 0; 852 int tickRegionSideMargin = 0;
853 int tickRegionWidth = 0; 853 int tickRegionWidth = 0;
854 IntRect trackBounds; 854 IntRect trackBounds;
855 RenderObject* trackRenderer = input->userAgentShadowRoot()->getElementById(S hadowElementNames::sliderTrack())->renderer(); 855 LayoutObject* trackRenderer = input->userAgentShadowRoot()->getElementById(S hadowElementNames::sliderTrack())->renderer();
856 // We can ignoring transforms because transform is handled by the graphics c ontext. 856 // We can ignoring transforms because transform is handled by the graphics c ontext.
857 if (trackRenderer) 857 if (trackRenderer)
858 trackBounds = trackRenderer->absoluteBoundingBoxRectIgnoringTransforms() ; 858 trackBounds = trackRenderer->absoluteBoundingBoxRectIgnoringTransforms() ;
859 IntRect sliderBounds = o->absoluteBoundingBoxRectIgnoringTransforms(); 859 IntRect sliderBounds = o->absoluteBoundingBoxRectIgnoringTransforms();
860 860
861 // Make position relative to the transformed ancestor element. 861 // Make position relative to the transformed ancestor element.
862 trackBounds.setX(trackBounds.x() - sliderBounds.x() + rect.x()); 862 trackBounds.setX(trackBounds.x() - sliderBounds.x() + rect.x());
863 trackBounds.setY(trackBounds.y() - sliderBounds.y() + rect.y()); 863 trackBounds.setY(trackBounds.y() - sliderBounds.y() + rect.y());
864 864
865 if (isHorizontal) { 865 if (isHorizontal) {
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 switch (part) { 1150 switch (part) {
1151 case CheckboxPart: 1151 case CheckboxPart:
1152 return adjustCheckboxStyleUsingFallbackTheme(style, e); 1152 return adjustCheckboxStyleUsingFallbackTheme(style, e);
1153 case RadioPart: 1153 case RadioPart:
1154 return adjustRadioStyleUsingFallbackTheme(style, e); 1154 return adjustRadioStyleUsingFallbackTheme(style, e);
1155 default: 1155 default:
1156 break; 1156 break;
1157 } 1157 }
1158 } 1158 }
1159 1159
1160 bool LayoutTheme::paintUsingFallbackTheme(RenderObject* o, const PaintInfo& i, c onst IntRect& r) 1160 bool LayoutTheme::paintUsingFallbackTheme(LayoutObject* o, const PaintInfo& i, c onst IntRect& r)
1161 { 1161 {
1162 ControlPart part = o->style()->appearance(); 1162 ControlPart part = o->style()->appearance();
1163 switch (part) { 1163 switch (part) {
1164 case CheckboxPart: 1164 case CheckboxPart:
1165 return paintCheckboxUsingFallbackTheme(o, i, r); 1165 return paintCheckboxUsingFallbackTheme(o, i, r);
1166 case RadioPart: 1166 case RadioPart:
1167 return paintRadioUsingFallbackTheme(o, i, r); 1167 return paintRadioUsingFallbackTheme(o, i, r);
1168 default: 1168 default:
1169 break; 1169 break;
1170 } 1170 }
1171 return true; 1171 return true;
1172 } 1172 }
1173 1173
1174 // static 1174 // static
1175 void LayoutTheme::setSizeIfAuto(RenderStyle& style, const IntSize& size) 1175 void LayoutTheme::setSizeIfAuto(RenderStyle& style, const IntSize& size)
1176 { 1176 {
1177 if (style.width().isIntrinsicOrAuto()) 1177 if (style.width().isIntrinsicOrAuto())
1178 style.setWidth(Length(size.width(), Fixed)); 1178 style.setWidth(Length(size.width(), Fixed));
1179 if (style.height().isAuto()) 1179 if (style.height().isAuto())
1180 style.setHeight(Length(size.height(), Fixed)); 1180 style.setHeight(Length(size.height(), Fixed));
1181 } 1181 }
1182 1182
1183 bool LayoutTheme::paintCheckboxUsingFallbackTheme(RenderObject* o, const PaintIn fo& i, const IntRect& r) 1183 bool LayoutTheme::paintCheckboxUsingFallbackTheme(LayoutObject* o, const PaintIn fo& i, const IntRect& r)
1184 { 1184 {
1185 WebFallbackThemeEngine::ExtraParams extraParams; 1185 WebFallbackThemeEngine::ExtraParams extraParams;
1186 WebCanvas* canvas = i.context->canvas(); 1186 WebCanvas* canvas = i.context->canvas();
1187 extraParams.button.checked = isChecked(o); 1187 extraParams.button.checked = isChecked(o);
1188 extraParams.button.indeterminate = isIndeterminate(o); 1188 extraParams.button.indeterminate = isIndeterminate(o);
1189 1189
1190 float zoomLevel = o->style()->effectiveZoom(); 1190 float zoomLevel = o->style()->effectiveZoom();
1191 GraphicsContextStateSaver stateSaver(*i.context); 1191 GraphicsContextStateSaver stateSaver(*i.context);
1192 IntRect unzoomedRect = r; 1192 IntRect unzoomedRect = r;
1193 if (zoomLevel != 1) { 1193 if (zoomLevel != 1) {
(...skipping 21 matching lines...) Expand all
1215 setSizeIfAuto(style, size); 1215 setSizeIfAuto(style, size);
1216 1216
1217 // padding - not honored by WinIE, needs to be removed. 1217 // padding - not honored by WinIE, needs to be removed.
1218 style.resetPadding(); 1218 style.resetPadding();
1219 1219
1220 // border - honored by WinIE, but looks terrible (just paints in the control box and turns off the Windows XP theme) 1220 // border - honored by WinIE, but looks terrible (just paints in the control box and turns off the Windows XP theme)
1221 // for now, we will not honor it. 1221 // for now, we will not honor it.
1222 style.resetBorder(); 1222 style.resetBorder();
1223 } 1223 }
1224 1224
1225 bool LayoutTheme::paintRadioUsingFallbackTheme(RenderObject* o, const PaintInfo& i, const IntRect& r) 1225 bool LayoutTheme::paintRadioUsingFallbackTheme(LayoutObject* o, const PaintInfo& i, const IntRect& r)
1226 { 1226 {
1227 WebFallbackThemeEngine::ExtraParams extraParams; 1227 WebFallbackThemeEngine::ExtraParams extraParams;
1228 WebCanvas* canvas = i.context->canvas(); 1228 WebCanvas* canvas = i.context->canvas();
1229 extraParams.button.checked = isChecked(o); 1229 extraParams.button.checked = isChecked(o);
1230 extraParams.button.indeterminate = isIndeterminate(o); 1230 extraParams.button.indeterminate = isIndeterminate(o);
1231 1231
1232 float zoomLevel = o->style()->effectiveZoom(); 1232 float zoomLevel = o->style()->effectiveZoom();
1233 GraphicsContextStateSaver stateSaver(*i.context); 1233 GraphicsContextStateSaver stateSaver(*i.context);
1234 IntRect unzoomedRect = r; 1234 IntRect unzoomedRect = r;
1235 if (zoomLevel != 1) { 1235 if (zoomLevel != 1) {
(...skipping 22 matching lines...) Expand all
1258 1258
1259 // padding - not honored by WinIE, needs to be removed. 1259 // padding - not honored by WinIE, needs to be removed.
1260 style.resetPadding(); 1260 style.resetPadding();
1261 1261
1262 // border - honored by WinIE, but looks terrible (just paints in the control box and turns off the Windows XP theme) 1262 // border - honored by WinIE, but looks terrible (just paints in the control box and turns off the Windows XP theme)
1263 // for now, we will not honor it. 1263 // for now, we will not honor it.
1264 style.resetBorder(); 1264 style.resetBorder();
1265 } 1265 }
1266 1266
1267 } // namespace blink 1267 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutTheme.h ('k') | Source/core/layout/LayoutThemeChromiumAndroid.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698