Changeset 63589 in webkit
- Timestamp:
- Jul 16, 2010 3:05:47 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r63588 r63589 1 2010-07-16 Kent Tamura <tkent@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 [Chromium] <input type=number> UI implementation for Windows 6 https://bugs.webkit.org/show_bug.cgi?id=42259 7 8 No additional tests. Existing tests cover this change and we'll 9 update expectations. 10 11 * platform/chromium/ChromiumBridge.h: Add paintSpinButton(). 12 * rendering/RenderThemeChromiumWin.cpp: 13 (WebCore::RenderThemeChromiumWin::determineState): 14 Add ControlSubPart parameter and add support for spin buttons. 15 (WebCore::RenderThemeChromiumWin::determineClassicState): ditto. 16 (WebCore::RenderThemeChromiumWin::getThemeData): ditto. 17 (WebCore::RenderThemeChromiumWin::adjustInnerSpinButtonStyle): Added. 18 (WebCore::RenderThemeChromiumWin::paintInnerSpinButton): Added. 19 * rendering/RenderThemeChromiumWin.h: 20 Declare ControlSubpart, and add it to some functions. 21 1 22 2010-07-16 Lucas De Marchi <lucas.demarchi@profusion.mobi> 2 23 -
trunk/WebCore/platform/chromium/ChromiumBridge.h
r61898 r63589 242 242 static void paintScrollbarTrack( 243 243 GraphicsContext*, int part, int state, int classicState, const IntRect&, const IntRect& alignRect); 244 static void paintSpinButton( 245 GraphicsContext*, int part, int state, int classicState, const IntRect&); 244 246 static void paintTextField( 245 247 GraphicsContext*, int part, int state, int classicState, const IntRect&, const Color&, bool fillContentArea, bool drawEdges); -
trunk/WebCore/rendering/RenderThemeChromiumWin.cpp
r63511 r63589 506 506 } 507 507 508 unsigned RenderThemeChromiumWin::determineState(RenderObject* o )508 unsigned RenderThemeChromiumWin::determineState(RenderObject* o, ControlSubPart subPart) 509 509 { 510 510 unsigned result = TS_NORMAL; … … 512 512 if (!isEnabled(o)) 513 513 result = TS_DISABLED; 514 else if (isReadOnlyControl(o) && (TextFieldPart == appearance || TextAreaPart == appearance || SearchFieldPart == appearance)) 515 result = ETS_READONLY; // Readonly is supported on textfields. 516 else if (isPressed(o)) // Active overrides hover and focused. 514 else if (isReadOnlyControl(o)) 515 result = (appearance == TextFieldPart || appearance == TextAreaPart || appearance == SearchFieldPart) ? ETS_READONLY : TS_DISABLED; 516 // Active overrides hover and focused. 517 else if (isPressed(o) && (subPart == SpinButtonUp) == isSpinUpButtonPartPressed(o)) 517 518 result = TS_PRESSED; 518 519 else if (supportsFocus(appearance) && isFocused(o)) 519 520 result = ETS_FOCUSED; 520 else if (isHovered(o) )521 else if (isHovered(o) && (subPart == SpinButtonUp) == isSpinUpButtonPartHovered(o)) 521 522 result = TS_HOT; 522 523 … … 545 546 } 546 547 547 unsigned RenderThemeChromiumWin::determineClassicState(RenderObject* o )548 unsigned RenderThemeChromiumWin::determineClassicState(RenderObject* o, ControlSubPart subPart) 548 549 { 549 550 unsigned result = 0; … … 567 568 result = DFCS_HOT; 568 569 } else { 569 if (!isEnabled(o) )570 if (!isEnabled(o) || isReadOnlyControl(o)) 570 571 result = DFCS_INACTIVE; 571 else if (isPressed(o)) // Active supersedes hover 572 // Active supersedes hover 573 else if (isPressed(o) && (subPart == SpinButtonUp) == isSpinUpButtonPartPressed(o)) 572 574 result = DFCS_PUSHED; 573 575 else if (supportsFocus(part) && isFocused(o)) // So does focused 574 576 result = 0; 575 else if (isHovered(o) )577 else if (isHovered(o) && (subPart == SpinButtonUp) == isSpinUpButtonPartHovered(o)) 576 578 result = DFCS_HOT; 577 579 // Classic theme can't represent indeterminate states. Use unchecked appearance. … … 582 584 } 583 585 584 ThemeData RenderThemeChromiumWin::getThemeData(RenderObject* o )586 ThemeData RenderThemeChromiumWin::getThemeData(RenderObject* o, ControlSubPart subPart) 585 587 { 586 588 ThemeData result; … … 627 629 result.m_state = determineState(o); 628 630 break; 629 } 630 631 result.m_classicState |= determineClassicState(o); 631 case InnerSpinButtonPart: 632 result.m_part = subPart == SpnButtonUp ? SPNP_UP : SPNP_DOWN; 633 result.m_state = determineState(o, subPart); 634 result.m_classicState = subPart == SpinButtonUp ? DFCS_SCROLLUP : DFCS_SCROLLDOWN; 635 break; 636 } 637 638 result.m_classicState |= determineClassicState(o, subPart); 632 639 633 640 return result; … … 681 688 } 682 689 690 void RenderThemeChromiumWin::adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle* style, Element*) const 691 { 692 int width = ScrollbarTheme::nativeTheme()->scrollbarThickness(); 693 style->setWidth(Length(width, Fixed)); 694 style->setMinWidth(Length(width, Fixed)); 695 } 696 697 bool RenderThemeChromiumWin::paintInnerSpinButton(RenderObject* object, const PaintInfo& info, const IntRect& rect) 698 { 699 IntRect half = rect; 700 701 half.setHeight(rect.height() / 2); 702 const ThemeData& upThemeData = getThemeData(object, SpinButtonUp); 703 WebCore::ThemePainter upPainter(info.context, half); 704 ChromiumBridge::paintSpinButton(upPainter.context(), 705 upThemeData.m_part, 706 upThemeData.m_state, 707 upThemeData.m_classicState, 708 upPainter.drawRect()); 709 710 half.setY(rect.y() + rect.height() / 2); 711 const ThemeData& downThemeData = getThemeData(object, SpinButtonDown); 712 WebCore::ThemePainter downPainter(info.context, half); 713 ChromiumBridge::paintSpinButton(downPainter.context(), 714 downThemeData.m_part, 715 downThemeData.m_state, 716 downThemeData.m_classicState, 717 downPainter.drawRect()); 718 return false; 719 } 720 683 721 #if ENABLE(PROGRESS_TAG) 684 722 -
trunk/WebCore/rendering/RenderThemeChromiumWin.h
r62104 r63589 87 87 static void setDefaultFontSize(int); 88 88 89 virtual void adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 90 virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&); 89 91 90 92 #if ENABLE(PROGRESS_TAG) … … 99 101 100 102 private: 103 enum ControlSubPart { 104 None, 105 SpinButtonDown, 106 SpinButtonUp, 107 }; 108 101 109 RenderThemeChromiumWin() { } 102 110 virtual ~RenderThemeChromiumWin() { } 103 111 104 unsigned determineState(RenderObject* );112 unsigned determineState(RenderObject*, ControlSubPart = None); 105 113 unsigned determineSliderThumbState(RenderObject*); 106 unsigned determineClassicState(RenderObject* );114 unsigned determineClassicState(RenderObject*, ControlSubPart = None); 107 115 108 ThemeData getThemeData(RenderObject* );116 ThemeData getThemeData(RenderObject*, ControlSubPart = None); 109 117 110 118 bool paintTextFieldInternal(RenderObject*, const PaintInfo&, const IntRect&, bool); -
trunk/WebKit/chromium/ChangeLog
r63580 r63589 1 2010-07-16 Kent Tamura <tkent@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 [Chromium] <input type=number> UI implementation for Windows 6 https://bugs.webkit.org/show_bug.cgi?id=42259 7 8 * public/WebThemeEngine.h: 9 (WebKit::WebThemeEngine::paintSpinButton): Added. 10 * src/ChromiumBridge.cpp: 11 (WebCore::ChromiumBridge::paintSpinButton): 12 Added. It calls WebThemeEngine::paintSpinButton(). 13 1 14 2010-07-16 James Robinson <jamesr@chromium.org> 2 15 -
trunk/WebKit/chromium/public/WebThemeEngine.h
r59733 r63589 69 69 const WebRect&, const WebRect& alignRect) = 0; 70 70 71 virtual void paintSpinButton( 72 WebCanvas*, int part, int state, int classicState, 73 const WebRect&) {} 74 71 75 virtual void paintTextField( 72 76 WebCanvas*, int part, int state, int classicState, -
trunk/WebKit/chromium/src/ChromiumBridge.cpp
r61898 r63589 692 692 } 693 693 694 void ChromiumBridge::paintSpinButton( 695 GraphicsContext* gc, int part, int state, int classicState, 696 const IntRect& rect) 697 { 698 webKitClient()->themeEngine()->paintSpinButton( 699 gc->platformContext()->canvas(), part, state, classicState, rect); 700 } 701 694 702 void ChromiumBridge::paintTextField( 695 703 GraphicsContext* gc, int part, int state, int classicState, -
trunk/WebKitTools/ChangeLog
r63583 r63589 1 2010-07-16 Kent Tamura <tkent@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 [Chromium] <input type=number> UI implementation for Windows 6 https://bugs.webkit.org/show_bug.cgi?id=42259 7 8 * DumpRenderTree/chromium/WebThemeEngineDRT.cpp: 9 (WebThemeEngineDRT::paintSpinButton): 10 Added. Check state consistency and use existing arrow painting code. 11 * DumpRenderTree/chromium/WebThemeEngineDRT.h: 12 1 13 2010-07-16 Alice Liu <alice.liu@apple.com> 2 14 -
trunk/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp
r62751 r63589 584 584 } 585 585 586 void WebThemeEngineDRT::paintSpinButton(WebCanvas* canvas, 587 int part, 588 int state, 589 int classicState, 590 const WebRect& rect) 591 { 592 WebThemeControlDRT::Type ctype = WebThemeControlDRT::UnknownType; 593 WebThemeControlDRT::State cstate = WebThemeControlDRT::UnknownState; 594 595 if (part == SPNP_UP) { 596 ctype = WebThemeControlDRT::UpArrowType; 597 switch (state) { 598 case UPS_NORMAL: 599 ASSERT(classicState == DFCS_SCROLLUP); 600 cstate = WebThemeControlDRT::NormalState; 601 break; 602 case UPS_DISABLED: 603 ASSERT(classicState == (DFCS_SCROLLUP | DFCS_INACTIVE)); 604 cstate = WebThemeControlDRT::DisabledState; 605 break; 606 case UPS_PRESSED: 607 ASSERT(classicState == (DFCS_SCROLLUP | DFCS_PUSHED)); 608 cstate = WebThemeControlDRT::PressedState; 609 break; 610 case UPS_HOT: 611 ASSERT(classicState == (DFCS_SCROLLUP | DFCS_HOT)); 612 cstate = WebThemeControlDRT::HoverState; 613 break; 614 default: 615 ASSERT_NOT_REACHED(); 616 } 617 } else if (part == SPNP_DOWN) { 618 ctype = WebThemeControlDRT::DownArrowType; 619 switch (state) { 620 case DNS_NORMAL: 621 ASSERT(classicState == DFCS_SCROLLDOWN); 622 cstate = WebThemeControlDRT::NormalState; 623 break; 624 case DNS_DISABLED: 625 ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_INACTIVE)); 626 cstate = WebThemeControlDRT::DisabledState; 627 break; 628 case DNS_PRESSED: 629 ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_PUSHED)); 630 cstate = WebThemeControlDRT::PressedState; 631 break; 632 case DNS_HOT: 633 ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_HOT)); 634 cstate = WebThemeControlDRT::HoverState; 635 break; 636 default: 637 ASSERT_NOT_REACHED(); 638 } 639 } else 640 ASSERT_NOT_REACHED(); 641 drawControl(canvas, rect, ctype, cstate); 642 } 643 586 644 void WebThemeEngineDRT::paintTextField(WebCanvas* canvas, 587 645 int part, -
trunk/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.h
r61663 r63589 76 76 const WebKit::WebRect&, const WebKit::WebRect& alignRect); 77 77 78 virtual void paintSpinButton( 79 WebKit::WebCanvas*, int part, int state, int classicState, 80 const WebKit::WebRect&); 81 78 82 virtual void paintTextField( 79 83 WebKit::WebCanvas*, int part, int state, int classicState,
Note: See TracChangeset
for help on using the changeset viewer.