Changeset 52432 in webkit


Ignore:
Timestamp:
Dec 20, 2009 8:57:59 PM (14 years ago)
Author:
eric@webkit.org
Message:

2009-12-20 Kent Tamura <tkent@chromium.org>

Reviewed by Darin Adler.

Introduce the followings:

  • ::-webkit-inner-spin-button pseudo CSS selector
  • ::-webkit-outer-spin-button pseudo CSS selector
  • new appearance type: inner-spin-button
  • new appearance type: outer-spin-button

They're going to be used for <input type=number> UI.
https://bugs.webkit.org/show_bug.cgi?id=31821

Inner-spin-button will be used for Windows, and outer-spin-button
will be used for Mac. A spin-button will represent a pair of an
increasing button part and a decreasing button part. SpinUpState,
which is defined in ThemeTypes.h, will be used to distinguish
these two parts.

The outer-spin-button implementation will use NSStepperCell.
NSStepperCell represents the pair of the parts and we can't draw them
independently. So a spin-button also represents the pair of the parts.

This change has no tests. The following changes with tests will cover.

  • css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
  • css/CSSSelector.cpp: (WebCore::CSSSelector::extractPseudoType):
  • css/CSSSelector.h: (WebCore::CSSSelector::):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
  • css/CSSValueKeywords.in:
  • css/html.css:
  • platform/ThemeTypes.h: (WebCore::ControlState): Add SpinUpState. (WebCore::ControlPart): Add InnerSpinButtonPart and OuterSpinButtonPart.
  • rendering/RenderTheme.cpp: (WebCore::RenderTheme::adjustStyle): (WebCore::RenderTheme::paint): (WebCore::RenderTheme::adjustInnerSpinButtonStyle): Add an empty implementation. (WebCore::RenderTheme::adjustOuterSpinButtonStyle): Add an empty implementation.
  • rendering/RenderTheme.h: (WebCore::RenderTheme::paintInnerSpinButton): Add an empty implementation. (WebCore::RenderTheme::paintOuterSpinButton): Add an empty implementation.
  • rendering/style/RenderStyleConstants.h: (WebCore::PseudoId): Add INNER_SPIN_BUTTON and OUTER_SPIN_BUTTON.
Location:
trunk/WebCore
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r52431 r52432  
     12009-12-20  Kent Tamura  <tkent@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Introduce the followings:
     6          - ::-webkit-inner-spin-button pseudo CSS selector
     7          - ::-webkit-outer-spin-button pseudo CSS selector
     8          - new appearance type: inner-spin-button
     9          - new appearance type: outer-spin-button
     10        They're going to be used for <input type=number> UI.
     11        https://bugs.webkit.org/show_bug.cgi?id=31821
     12
     13        Inner-spin-button will be used for Windows, and outer-spin-button
     14        will be used for Mac. A spin-button will represent a pair of an
     15        increasing button part and a decreasing button part. SpinUpState,
     16        which is defined in ThemeTypes.h, will be used to distinguish
     17        these two parts.
     18
     19        The outer-spin-button implementation will use NSStepperCell.
     20        NSStepperCell represents the pair of the parts and we can't draw them
     21        independently. So a spin-button also represents the pair of the parts.
     22
     23        This change has no tests.  The following changes with tests will cover.
     24
     25        * css/CSSPrimitiveValueMappings.h:
     26        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
     27        * css/CSSSelector.cpp:
     28        (WebCore::CSSSelector::extractPseudoType):
     29        * css/CSSSelector.h:
     30        (WebCore::CSSSelector::):
     31        * css/CSSStyleSelector.cpp:
     32        (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
     33        * css/CSSValueKeywords.in:
     34        * css/html.css:
     35        * platform/ThemeTypes.h:
     36        (WebCore::ControlState): Add SpinUpState.
     37        (WebCore::ControlPart): Add InnerSpinButtonPart and OuterSpinButtonPart.
     38        * rendering/RenderTheme.cpp:
     39        (WebCore::RenderTheme::adjustStyle):
     40        (WebCore::RenderTheme::paint):
     41        (WebCore::RenderTheme::adjustInnerSpinButtonStyle): Add an empty implementation.
     42        (WebCore::RenderTheme::adjustOuterSpinButtonStyle): Add an empty implementation.
     43        * rendering/RenderTheme.h:
     44        (WebCore::RenderTheme::paintInnerSpinButton): Add an empty implementation.
     45        (WebCore::RenderTheme::paintOuterSpinButton): Add an empty implementation.
     46        * rendering/style/RenderStyleConstants.h:
     47        (WebCore::PseudoId): Add INNER_SPIN_BUTTON and OUTER_SPIN_BUTTON.
     48
    1492009-12-20  Nayan Kumar K  <nayankk@gmail.com>
    250
  • trunk/WebCore/css/CSSPrimitiveValueMappings.h

    r51191 r52432  
    199199            m_value.ident = CSSValueDefaultButton;
    200200            break;
     201        case InnerSpinButtonPart:
     202            m_value.ident = CSSValueInnerSpinButton;
     203            break;
    201204        case ListboxPart:
    202205            m_value.ident = CSSValueListbox;
     
    269272        case MenulistTextFieldPart:
    270273            m_value.ident = CSSValueMenulistTextfield;
     274            break;
     275        case OuterSpinButtonPart:
     276            m_value.ident = CSSValueOuterSpinButton;
    271277            break;
    272278        case SliderHorizontalPart:
  • trunk/WebCore/css/CSSSelector.cpp

    r51191 r52432  
    100100    DEFINE_STATIC_LOCAL(AtomicString, hover, ("hover"));
    101101    DEFINE_STATIC_LOCAL(AtomicString, indeterminate, ("indeterminate"));
     102    DEFINE_STATIC_LOCAL(AtomicString, innerSpinButton, ("-webkit-inner-spin-button"));
    102103#if ENABLE(DATALIST)
    103104    DEFINE_STATIC_LOCAL(AtomicString, inputListButton, ("-webkit-input-list-button"));
     
    128129    DEFINE_STATIC_LOCAL(AtomicString, onlyOfType, ("only-of-type"));
    129130    DEFINE_STATIC_LOCAL(AtomicString, optional, ("optional"));
     131    DEFINE_STATIC_LOCAL(AtomicString, outerSpinButton, ("-webkit-outer-spin-button"));
    130132    DEFINE_STATIC_LOCAL(AtomicString, required, ("required"));
    131133    DEFINE_STATIC_LOCAL(AtomicString, resizer, ("-webkit-resizer"));
     
    236238    else if (m_value == indeterminate)
    237239        m_pseudoType = PseudoIndeterminate;
    238     else if (m_value == link)
     240    else if (m_value == innerSpinButton) {
     241        m_pseudoType = PseudoInnerSpinButton;
     242        element = true;
     243    } else if (m_value == link)
    239244        m_pseudoType = PseudoLink;
    240245    else if (m_value == lang)
     
    298303    else if (m_value == nthLastOfType)
    299304        m_pseudoType = PseudoNthLastOfType;
    300     else if (m_value == root)
     305    else if (m_value == outerSpinButton) {
     306        m_pseudoType = PseudoOuterSpinButton;
     307        element = true;
     308    } else if (m_value == root)
    301309        m_pseudoType = PseudoRoot;
    302310    else if (m_value == windowInactive)
  • trunk/WebCore/css/CSSSelector.h

    r51191 r52432  
    184184            PseudoMediaControlsStatusDisplay,
    185185            PseudoMediaControlsFullscreenButton,
    186             PseudoInputListButton
     186            PseudoInputListButton,
     187            PseudoInnerSpinButton,
     188            PseudoOuterSpinButton,
    187189        };
    188190
  • trunk/WebCore/css/CSSStyleSelector.cpp

    r51902 r52432  
    25842584            case CSSSelector::PseudoResizer:
    25852585                dynamicPseudo = RESIZER;
     2586                return true;
     2587            case CSSSelector::PseudoInnerSpinButton:
     2588                dynamicPseudo = INNER_SPIN_BUTTON;
     2589                return true;
     2590            case CSSSelector::PseudoOuterSpinButton:
     2591                dynamicPseudo = OUTER_SPIN_BUTTON;
    25862592                return true;
    25872593            case CSSSelector::PseudoUnknown:
  • trunk/WebCore/css/CSSValueKeywords.in

    r51191 r52432  
    502502button-bevel
    503503default-button
     504inner-spin-button
    504505list-button
    505506listbox
     
    525526menulist-text
    526527menulist-textfield
     528outer-spin-button
    527529slider-horizontal
    528530slider-vertical
  • trunk/WebCore/css/html.css

    r51227 r52432  
    360360}
    361361
     362input::-webkit-inner-spin-button {
     363    -webkit-appearance: inner-spin-button;
     364    display: inline-block;
     365}
     366
     367input::-webkit-outer-spin-button {
     368    -webkit-appearance: outer-spin-button;
     369    display: inline-block;
     370    margin-left: 2px;
     371}
     372
    362373textarea {
    363374    -webkit-appearance: textarea;
  • trunk/WebCore/platform/ThemeTypes.h

    r51191 r52432  
    3939    WindowInactiveState = 1 << 7,
    4040    IndeterminateState = 1 << 8,
     41    SpinUpState = 1 << 9, // Sub-state for HoverState and PressedState.
    4142    AllStates = 0xffffffff
    4243};
     
    4748enum ControlPart {
    4849    NoControlPart, CheckboxPart, RadioPart, PushButtonPart, SquareButtonPart, ButtonPart,
    49     ButtonBevelPart, DefaultButtonPart, ListButtonPart, ListboxPart, ListItemPart,
     50    ButtonBevelPart, DefaultButtonPart, InnerSpinButtonPart, ListButtonPart, ListboxPart, ListItemPart,
    5051    MediaFullscreenButtonPart, MediaMuteButtonPart, MediaPlayButtonPart, MediaSeekBackButtonPart,
    5152    MediaSeekForwardButtonPart, MediaRewindButtonPart, MediaReturnToRealtimeButtonPart, MediaToggleClosedCaptionsButtonPart,
    5253    MediaSliderPart, MediaSliderThumbPart, MediaVolumeSliderContainerPart, MediaVolumeSliderPart, MediaVolumeSliderThumbPart,
    5354    MediaControlsBackgroundPart, MediaCurrentTimePart, MediaTimeRemainingPart,
    54     MenulistPart, MenulistButtonPart, MenulistTextPart, MenulistTextFieldPart,
     55    MenulistPart, MenulistButtonPart, MenulistTextPart, MenulistTextFieldPart, OuterSpinButtonPart,
    5556    SliderHorizontalPart, SliderVerticalPart, SliderThumbHorizontalPart,
    5657    SliderThumbVerticalPart, CaretPart, SearchFieldPart, SearchFieldDecorationPart,
  • trunk/WebCore/rendering/RenderTheme.cpp

    r51191 r52432  
    8888        case ListButtonPart:
    8989        case CheckboxPart:
     90        case InnerSpinButtonPart:
     91        case OuterSpinButtonPart:
    9092        case RadioPart:
    9193        case PushButtonPart:
     
    177179        case ButtonPart:
    178180            return adjustButtonStyle(selector, style, e);
     181        case InnerSpinButtonPart:
     182            return adjustInnerSpinButtonStyle(selector, style, e);
     183        case OuterSpinButtonPart:
     184            return adjustOuterSpinButtonStyle(selector, style, e);
    179185#endif
    180186        case TextFieldPart:
     
    233239        case DefaultButtonPart:
    234240        case ButtonPart:
     241        case InnerSpinButtonPart:
     242        case OuterSpinButtonPart:
    235243            m_theme->paint(part, controlStatesForRenderer(o), const_cast<GraphicsContext*>(paintInfo.context), r, o->style()->effectiveZoom(), o->view()->frameView());
    236244            return false;
     
    253261        case ButtonPart:
    254262            return paintButton(o, paintInfo, r);
     263        case InnerSpinButtonPart:
     264            return paintInnerSpinButton(o, paintInfo, r);
     265        case OuterSpinButtonPart:
     266            return paintOuterSpinButton(o, paintInfo, r);
    255267#endif
    256268        case MenulistPart:
     
    763775}
    764776
     777void RenderTheme::adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const
     778{
     779}
     780
     781void RenderTheme::adjustOuterSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const
     782{
     783}
     784
    765785#endif
    766786
  • trunk/WebCore/rendering/RenderTheme.h

    r51191 r52432  
    204204    virtual bool paintButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; }
    205205    virtual void setButtonSize(RenderStyle*) const { }
     206
     207    virtual void adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
     208    virtual bool paintInnerSpinButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; }
     209    virtual void adjustOuterSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
     210    virtual bool paintOuterSpinButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; }
    206211#endif
    207212
  • trunk/WebCore/rendering/style/RenderStyleConstants.h

    r51191 r52432  
    7474    MEDIA_CONTROLS_RETURN_TO_REALTIME_BUTTON, MEDIA_CONTROLS_TOGGLE_CLOSED_CAPTIONS_BUTTON,
    7575    MEDIA_CONTROLS_STATUS_DISPLAY, SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER,
    76     INPUT_LIST_BUTTON,
     76    INPUT_LIST_BUTTON, INNER_SPIN_BUTTON, OUTER_SPIN_BUTTON,
    7777
    7878    FIRST_INTERNAL_PSEUDOID = FILE_UPLOAD_BUTTON
Note: See TracChangeset for help on using the changeset viewer.