Changeset 37462 in webkit


Ignore:
Timestamp:
Oct 9, 2008 7:33:16 PM (16 years ago)
Author:
hyatt@apple.com
Message:

WebCore:

2008-10-09 David Hyatt <hyatt@apple.com>

https://bugs.webkit.org/show_bug.cgi?id=21446

This patch gets CSS scrollbars up and limping. There's no way to distinguish between states or between
orientation and back vs. forward on the buttons, but it's a start.

Reviewed by Oliver Hunt

Added scrollbars/basic-scrollbar.html

  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSSelector.cpp: (WebCore::CSSSelector::extractPseudoType):
  • css/CSSSelector.h: (WebCore::CSSSelector::):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
  • platform/ScrollTypes.h: (WebCore::):
  • platform/Scrollbar.h: (WebCore::Scrollbar::styleChanged):
  • platform/ScrollbarThemeComposite.cpp: (WebCore::ScrollbarThemeComposite::paint): (WebCore::ScrollbarThemeComposite::splitTrack):
  • platform/ScrollbarThemeComposite.h: (WebCore::ScrollbarThemeComposite::paintScrollbarBackground): (WebCore::ScrollbarThemeComposite::paintTrackBackground): (WebCore::ScrollbarThemeComposite::paintTrackPiece):
  • platform/win/ScrollbarThemeSafari.cpp: (WebCore::ScrollbarThemeSafari::paintTrackBackground):
  • platform/win/ScrollbarThemeSafari.h:
  • platform/win/ScrollbarThemeWin.cpp: (WebCore::ScrollbarThemeWin::paintTrack):
  • platform/win/ScrollbarThemeWin.h:
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::createScrollbar): (WebCore::RenderLayer::styleChanged):
  • rendering/RenderScrollbar.cpp: Added. (WebCore::RenderScrollbar::createCustomScrollbar): (WebCore::RenderScrollbar::RenderScrollbar): (WebCore::RenderScrollbar::~RenderScrollbar): (WebCore::RenderScrollbar::getScrollbarPseudoStyle): (WebCore::RenderScrollbar::updateScrollbarParts): (WebCore::RenderScrollbar::updateScrollbarPart): (WebCore::RenderScrollbar::paintPart): (WebCore::RenderScrollbar::buttonRect): (WebCore::RenderScrollbar::minimumThumbLength):
  • rendering/RenderScrollbar.h: Added. (WebCore::RenderScrollbar::styleChanged): (WebCore::RenderScrollbar::owningRenderer):
  • rendering/RenderScrollbarPart.cpp: Added. (WebCore::RenderScrollbarPart::RenderScrollbarPart): (WebCore::RenderScrollbarPart::~RenderScrollbarPart): (WebCore::RenderScrollbarPart::layout): (WebCore::RenderScrollbarPart::layoutHorizontalPart): (WebCore::RenderScrollbarPart::layoutVerticalPart): (WebCore::calcScrollbarThicknessUsing): (WebCore::RenderScrollbarPart::computeScrollbarWidth): (WebCore::RenderScrollbarPart::computeScrollbarHeight): (WebCore::RenderScrollbarPart::calcPrefWidths): (WebCore::RenderScrollbarPart::setStyle):
  • rendering/RenderScrollbarPart.h: Added. (WebCore::RenderScrollbarPart::renderName): (WebCore::RenderScrollbarPart::requiresLayer):
  • rendering/RenderScrollbarTheme.cpp: Added. (WebCore::RenderScrollbarTheme::renderScrollbarTheme): (WebCore::RenderScrollbarTheme::buttonSizesAlongTrackAxis): (WebCore::RenderScrollbarTheme::hasButtons): (WebCore::RenderScrollbarTheme::hasThumb): (WebCore::RenderScrollbarTheme::minimumThumbLength): (WebCore::RenderScrollbarTheme::backButtonRect): (WebCore::RenderScrollbarTheme::forwardButtonRect): (WebCore::RenderScrollbarTheme::trackRect): (WebCore::RenderScrollbarTheme::paintScrollCorner): (WebCore::RenderScrollbarTheme::paintScrollbarBackground): (WebCore::RenderScrollbarTheme::paintTrackBackground): (WebCore::RenderScrollbarTheme::paintTrackPiece): (WebCore::RenderScrollbarTheme::paintButton): (WebCore::RenderScrollbarTheme::paintThumb):
  • rendering/RenderScrollbarTheme.h: Added. (WebCore::RenderScrollbarTheme::~RenderScrollbarTheme): (WebCore::RenderScrollbarTheme::scrollbarThickness): (WebCore::RenderScrollbarTheme::buttonsPlacement): (WebCore::RenderScrollbarTheme::supportsControlTints): (WebCore::RenderScrollbarTheme::shouldCenterOnThumb): (WebCore::RenderScrollbarTheme::initialAutoscrollTimerDelay): (WebCore::RenderScrollbarTheme::autoscrollTimerDelay): (WebCore::RenderScrollbarTheme::registerScrollbar): (WebCore::RenderScrollbarTheme::unregisterScrollbar):
  • rendering/style/RenderStyle.h: (WebCore::RenderStyle::):

LayoutTests:

2008-10-09 David Hyatt <hyatt@apple.com>

Land layout test for CSS scrollbars.

Reviewed by Oliver Hunt

  • platform/mac/scrollbars: Added.
  • platform/mac/scrollbars/basic-scrollbar-expected.checksum: Added.
  • platform/mac/scrollbars/basic-scrollbar-expected.png: Added.
  • platform/mac/scrollbars/basic-scrollbar-expected.txt: Added.
  • scrollbars: Added.
  • scrollbars/basic-scrollbar.html: Added.
Location:
trunk
Files:
12 added
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r37461 r37462  
     12008-10-09  David Hyatt  <hyatt@apple.com>
     2
     3        Land layout test for CSS scrollbars.
     4
     5        Reviewed by Oliver Hunt
     6
     7        * platform/mac/scrollbars: Added.
     8        * platform/mac/scrollbars/basic-scrollbar-expected.checksum: Added.
     9        * platform/mac/scrollbars/basic-scrollbar-expected.png: Added.
     10        * platform/mac/scrollbars/basic-scrollbar-expected.txt: Added.
     11        * scrollbars: Added.
     12        * scrollbars/basic-scrollbar.html: Added.
     13
    1142008-10-09  Eric Seidel  <eric@webkit.org>
    215
  • trunk/WebCore/ChangeLog

    r37460 r37462  
     12008-10-09  David Hyatt  <hyatt@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=21446
     4
     5        This patch gets CSS scrollbars up and limping.  There's no way to distinguish between states or between
     6        orientation and back vs. forward on the buttons, but it's a start.
     7
     8        Reviewed by Oliver Hunt
     9
     10        Added scrollbars/basic-scrollbar.html
     11
     12        * WebCore.xcodeproj/project.pbxproj:
     13        * css/CSSSelector.cpp:
     14        (WebCore::CSSSelector::extractPseudoType):
     15        * css/CSSSelector.h:
     16        (WebCore::CSSSelector::):
     17        * css/CSSStyleSelector.cpp:
     18        (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
     19        * platform/ScrollTypes.h:
     20        (WebCore::):
     21        * platform/Scrollbar.h:
     22        (WebCore::Scrollbar::styleChanged):
     23        * platform/ScrollbarThemeComposite.cpp:
     24        (WebCore::ScrollbarThemeComposite::paint):
     25        (WebCore::ScrollbarThemeComposite::splitTrack):
     26        * platform/ScrollbarThemeComposite.h:
     27        (WebCore::ScrollbarThemeComposite::paintScrollbarBackground):
     28        (WebCore::ScrollbarThemeComposite::paintTrackBackground):
     29        (WebCore::ScrollbarThemeComposite::paintTrackPiece):
     30        * platform/win/ScrollbarThemeSafari.cpp:
     31        (WebCore::ScrollbarThemeSafari::paintTrackBackground):
     32        * platform/win/ScrollbarThemeSafari.h:
     33        * platform/win/ScrollbarThemeWin.cpp:
     34        (WebCore::ScrollbarThemeWin::paintTrack):
     35        * platform/win/ScrollbarThemeWin.h:
     36        * rendering/RenderLayer.cpp:
     37        (WebCore::RenderLayer::createScrollbar):
     38        (WebCore::RenderLayer::styleChanged):
     39        * rendering/RenderScrollbar.cpp: Added.
     40        (WebCore::RenderScrollbar::createCustomScrollbar):
     41        (WebCore::RenderScrollbar::RenderScrollbar):
     42        (WebCore::RenderScrollbar::~RenderScrollbar):
     43        (WebCore::RenderScrollbar::getScrollbarPseudoStyle):
     44        (WebCore::RenderScrollbar::updateScrollbarParts):
     45        (WebCore::RenderScrollbar::updateScrollbarPart):
     46        (WebCore::RenderScrollbar::paintPart):
     47        (WebCore::RenderScrollbar::buttonRect):
     48        (WebCore::RenderScrollbar::minimumThumbLength):
     49        * rendering/RenderScrollbar.h: Added.
     50        (WebCore::RenderScrollbar::styleChanged):
     51        (WebCore::RenderScrollbar::owningRenderer):
     52        * rendering/RenderScrollbarPart.cpp: Added.
     53        (WebCore::RenderScrollbarPart::RenderScrollbarPart):
     54        (WebCore::RenderScrollbarPart::~RenderScrollbarPart):
     55        (WebCore::RenderScrollbarPart::layout):
     56        (WebCore::RenderScrollbarPart::layoutHorizontalPart):
     57        (WebCore::RenderScrollbarPart::layoutVerticalPart):
     58        (WebCore::calcScrollbarThicknessUsing):
     59        (WebCore::RenderScrollbarPart::computeScrollbarWidth):
     60        (WebCore::RenderScrollbarPart::computeScrollbarHeight):
     61        (WebCore::RenderScrollbarPart::calcPrefWidths):
     62        (WebCore::RenderScrollbarPart::setStyle):
     63        * rendering/RenderScrollbarPart.h: Added.
     64        (WebCore::RenderScrollbarPart::renderName):
     65        (WebCore::RenderScrollbarPart::requiresLayer):
     66        * rendering/RenderScrollbarTheme.cpp: Added.
     67        (WebCore::RenderScrollbarTheme::renderScrollbarTheme):
     68        (WebCore::RenderScrollbarTheme::buttonSizesAlongTrackAxis):
     69        (WebCore::RenderScrollbarTheme::hasButtons):
     70        (WebCore::RenderScrollbarTheme::hasThumb):
     71        (WebCore::RenderScrollbarTheme::minimumThumbLength):
     72        (WebCore::RenderScrollbarTheme::backButtonRect):
     73        (WebCore::RenderScrollbarTheme::forwardButtonRect):
     74        (WebCore::RenderScrollbarTheme::trackRect):
     75        (WebCore::RenderScrollbarTheme::paintScrollCorner):
     76        (WebCore::RenderScrollbarTheme::paintScrollbarBackground):
     77        (WebCore::RenderScrollbarTheme::paintTrackBackground):
     78        (WebCore::RenderScrollbarTheme::paintTrackPiece):
     79        (WebCore::RenderScrollbarTheme::paintButton):
     80        (WebCore::RenderScrollbarTheme::paintThumb):
     81        * rendering/RenderScrollbarTheme.h: Added.
     82        (WebCore::RenderScrollbarTheme::~RenderScrollbarTheme):
     83        (WebCore::RenderScrollbarTheme::scrollbarThickness):
     84        (WebCore::RenderScrollbarTheme::buttonsPlacement):
     85        (WebCore::RenderScrollbarTheme::supportsControlTints):
     86        (WebCore::RenderScrollbarTheme::shouldCenterOnThumb):
     87        (WebCore::RenderScrollbarTheme::initialAutoscrollTimerDelay):
     88        (WebCore::RenderScrollbarTheme::autoscrollTimerDelay):
     89        (WebCore::RenderScrollbarTheme::registerScrollbar):
     90        (WebCore::RenderScrollbarTheme::unregisterScrollbar):
     91        * rendering/style/RenderStyle.h:
     92        (WebCore::RenderStyle::):
     93
    1942008-10-09  Eric Seidel  <eric@webkit.org>
    295
  • trunk/WebCore/GNUmakefile.am

    r37448 r37462  
    15431543        WebCore/rendering/RenderSlider.cpp \
    15441544        WebCore/rendering/RenderSlider.h \
     1545        WebCore/rendering/RenderScrollbar.cpp \
     1546        WebCore/rendering/RenderScrollbar.h \
     1547        WebCore/rendering/RenderScrollbarPart.cpp \
     1548        WebCore/rendering/RenderScrollbarPart.h \
     1549        WebCore/rendering/RenderScrollbarTheme.cpp \
     1550        WebCore/rendering/RenderScrollbarTheme.h \
    15451551        WebCore/rendering/RenderTable.cpp \
    15461552        WebCore/rendering/RenderTable.h \
  • trunk/WebCore/WebCore.pro

    r37435 r37462  
    905905    rendering/RenderReplaced.cpp \
    906906    rendering/RenderReplica.cpp \
     907    rendering/RenderScrollbar.cpp \
     908    rendering/RenderScrollbarPart.cpp \
     909    rendering/RenderScrollbarTheme.cpp \
    907910    rendering/RenderSlider.cpp \
    908911    rendering/RenderTableCell.cpp \
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r37435 r37462  
    85028502                                >
    85038503                        </File>
     8504                        <File
     8505                                RelativePath="..\rendering\RenderScrollbar.cpp"
     8506                                >
     8507                                <FileConfiguration
     8508                                        Name="Release_PGO|Win32"
     8509                                        >
     8510                                        <Tool
     8511                                                Name="VCCLCompilerTool"
     8512                                                WholeProgramOptimization="true"
     8513                                        />
     8514                                </FileConfiguration>
     8515                        </File>
     8516                        <File
     8517                                RelativePath="..\rendering\RenderScrollbar.h"
     8518                                >
     8519                        </File>
     8520                        <File
     8521                                RelativePath="..\rendering\RenderScrollbarPart.cpp"
     8522                                >
     8523                                <FileConfiguration
     8524                                        Name="Release_PGO|Win32"
     8525                                        >
     8526                                        <Tool
     8527                                                Name="VCCLCompilerTool"
     8528                                                WholeProgramOptimization="true"
     8529                                        />
     8530                                </FileConfiguration>
     8531                        </File>
     8532                        <File
     8533                                RelativePath="..\rendering\RenderScrollbarPart.h"
     8534                                >
     8535                        </File>
     8536                        <File
     8537                                RelativePath="..\rendering\RenderScrollbarTheme.cpp"
     8538                                >
     8539                                <FileConfiguration
     8540                                        Name="Release_PGO|Win32"
     8541                                        >
     8542                                        <Tool
     8543                                                Name="VCCLCompilerTool"
     8544                                                WholeProgramOptimization="true"
     8545                                        />
     8546                                </FileConfiguration>
     8547                        </File>
     8548                        <File
     8549                                RelativePath="..\rendering\RenderScrollbarTheme.h"
     8550                                >
     8551                        </File>
    85048552                        <File
    85058553                                RelativePath="..\rendering\RenderSlider.cpp"
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r37456 r37462  
    37183718                BC3BC29C0E91AB0F00835588 /* HostWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BC29B0E91AB0F00835588 /* HostWindow.h */; settings = {ATTRIBUTES = (Private, ); }; };
    37193719                BC3BE12B0E98092F00835588 /* PopupMenuStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BE12A0E98092F00835588 /* PopupMenuStyle.h */; settings = {ATTRIBUTES = (Private, ); }; };
     3720                BC3BE9930E9C1C7C00835588 /* RenderScrollbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3BE9900E9C1C7C00835588 /* RenderScrollbar.cpp */; };
     3721                BC3BE9940E9C1C7C00835588 /* RenderScrollbar.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BE9910E9C1C7C00835588 /* RenderScrollbar.h */; };
     3722                BC3BE9950E9C1C7C00835588 /* RenderScrollbarPart.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BE9920E9C1C7C00835588 /* RenderScrollbarPart.h */; };
     3723                BC3BE9990E9C1E5D00835588 /* RenderScrollbarTheme.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3BE9980E9C1E5D00835588 /* RenderScrollbarTheme.h */; };
     3724                BC3BE9A50E9C239600835588 /* RenderScrollbarTheme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3BE9A40E9C239600835588 /* RenderScrollbarTheme.cpp */; };
     3725                BC3BE9AB0E9C242000835588 /* RenderScrollbarPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3BE9AA0E9C242000835588 /* RenderScrollbarPart.cpp */; };
    37203726                BC3C39B60C0D3D8D005F4D7A /* JSMediaList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3C39B40C0D3D8D005F4D7A /* JSMediaList.cpp */; };
    37213727                BC3C39B70C0D3D8D005F4D7A /* JSMediaList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3C39B50C0D3D8D005F4D7A /* JSMediaList.h */; };
     
    82618267                BC3BC29B0E91AB0F00835588 /* HostWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HostWindow.h; sourceTree = "<group>"; };
    82628268                BC3BE12A0E98092F00835588 /* PopupMenuStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopupMenuStyle.h; sourceTree = "<group>"; };
     8269                BC3BE9900E9C1C7C00835588 /* RenderScrollbar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbar.cpp; sourceTree = "<group>"; };
     8270                BC3BE9910E9C1C7C00835588 /* RenderScrollbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbar.h; sourceTree = "<group>"; };
     8271                BC3BE9920E9C1C7C00835588 /* RenderScrollbarPart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbarPart.h; sourceTree = "<group>"; };
     8272                BC3BE9980E9C1E5D00835588 /* RenderScrollbarTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbarTheme.h; sourceTree = "<group>"; };
     8273                BC3BE9A40E9C239600835588 /* RenderScrollbarTheme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbarTheme.cpp; sourceTree = "<group>"; };
     8274                BC3BE9AA0E9C242000835588 /* RenderScrollbarPart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbarPart.cpp; sourceTree = "<group>"; };
    82638275                BC3C39B40C0D3D8D005F4D7A /* JSMediaList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaList.cpp; sourceTree = "<group>"; };
    82648276                BC3C39B50C0D3D8D005F4D7A /* JSMediaList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSMediaList.h; sourceTree = "<group>"; };
     
    1356013572                                ABDDFE740A5C6E7000A3E11D /* RenderMenuList.h */,
    1356113573                                BCEA4840097D93020094C9E4 /* RenderObject.cpp */,
     13574                                BC3BE9AA0E9C242000835588 /* RenderScrollbarPart.cpp */,
     13575                                BC3BE9A40E9C239600835588 /* RenderScrollbarTheme.cpp */,
     13576                                BC3BE9980E9C1E5D00835588 /* RenderScrollbarTheme.h */,
    1356213577                                BCEA4841097D93020094C9E4 /* RenderObject.h */,
    1356313578                                A871DEC80A1530C700B12A68 /* RenderPart.cpp */,
     
    1357113586                                BCA846D40DC67A350026C309 /* RenderReplica.cpp */,
    1357213587                                BCA846D50DC67A350026C309 /* RenderReplica.h */,
     13588                                BC3BE9900E9C1C7C00835588 /* RenderScrollbar.cpp */,
     13589                                BC3BE9910E9C1C7C00835588 /* RenderScrollbar.h */,
     13590                                BC3BE9920E9C1C7C00835588 /* RenderScrollbarPart.h */,
    1357313591                                AB247A6A0AFD6383003FA5FD /* RenderSlider.cpp */,
    1357413592                                AB247A6B0AFD6383003FA5FD /* RenderSlider.h */,
     
    1596215980                                1C81BA0E0E97348300266E07 /* JavaScriptDebugServer.h in Headers */,
    1596315981                                BC3BE12B0E98092F00835588 /* PopupMenuStyle.h in Headers */,
     15982                                BC3BE9940E9C1C7C00835588 /* RenderScrollbar.h in Headers */,
     15983                                BC3BE9950E9C1C7C00835588 /* RenderScrollbarPart.h in Headers */,
     15984                                BC3BE9990E9C1E5D00835588 /* RenderScrollbarTheme.h in Headers */,
    1596415985                                1CF6BDFA0E9BB26A0025E1CD /* ObjCEventListener.h in Headers */,
    1596515986                                1CF6BE150E9BB4670025E1CD /* ObjCNodeFilterCondition.h in Headers */,
     
    1782617847                                1C81BA090E97348300266E07 /* JavaScriptCallFrame.cpp in Sources */,
    1782717848                                1C81BA0D0E97348300266E07 /* JavaScriptDebugServer.cpp in Sources */,
     17849                                BC3BE9930E9C1C7C00835588 /* RenderScrollbar.cpp in Sources */,
     17850                                BC3BE9A50E9C239600835588 /* RenderScrollbarTheme.cpp in Sources */,
     17851                                BC3BE9AB0E9C242000835588 /* RenderScrollbarPart.cpp in Sources */,
    1782817852                                1CF6BDFB0E9BB26A0025E1CD /* ObjCEventListener.mm in Sources */,
    1782917853                                1CF6BE140E9BB4670025E1CD /* ObjCNodeFilterCondition.mm in Sources */,
  • trunk/WebCore/css/CSSSelector.cpp

    r37394 r37462  
    115115    static AtomicString scrollbarThumb("-webkit-scrollbar-thumb");
    116116    static AtomicString scrollbarTrack("-webkit-scrollbar-track");
     117    static AtomicString scrollbarTrackPiece("-webkit-scrollbar-track-piece");
    117118    static AtomicString scrollbarVertical("-webkit-scrollbar-vertical");
    118119    static AtomicString searchCancelButton("-webkit-search-cancel-button");
     
    254255        element = true;
    255256        m_pseudoType = PseudoScrollbarTrack;
     257    } else if (m_value == scrollbarTrackPiece) {
     258        element = true;
     259        m_pseudoType = PseudoScrollbarTrackPiece;
    256260    } else if (m_value == scrollbarVertical)
    257261        m_pseudoType = PseudoScrollbarVertical;
  • trunk/WebCore/css/CSSSelector.h

    r37394 r37462  
    160160            PseudoScrollbarThumb,
    161161            PseudoScrollbarTrack,
     162            PseudoScrollbarTrackPiece,
    162163            PseudoScrollbarVertical,
    163164            PseudoSelection,
  • trunk/WebCore/css/CSSStyleSelector.cpp

    r37220 r37462  
    23402340                dynamicPseudo = RenderStyle::MEDIA_CONTROLS_FULLSCREEN_BUTTON;
    23412341                return true;
     2342            case CSSSelector::PseudoScrollbar:
     2343                dynamicPseudo = RenderStyle::SCROLLBAR;
     2344                return true;
     2345            case CSSSelector::PseudoScrollbarButton:
     2346                dynamicPseudo = RenderStyle::SCROLLBAR_BUTTON;
     2347                return true;
     2348            case CSSSelector::PseudoScrollbarCorner:
     2349                dynamicPseudo = RenderStyle::SCROLLBAR_CORNER;
     2350                return true;
     2351            case CSSSelector::PseudoScrollbarThumb:
     2352                dynamicPseudo = RenderStyle::SCROLLBAR_THUMB;
     2353                return true;
     2354            case CSSSelector::PseudoScrollbarTrack:
     2355                dynamicPseudo = RenderStyle::SCROLLBAR_TRACK;
     2356                return true;
     2357            case CSSSelector::PseudoScrollbarTrackPiece:
     2358                dynamicPseudo = RenderStyle::SCROLLBAR_TRACK_PIECE;
     2359                return true;
    23422360            case CSSSelector::PseudoUnknown:
    23432361            case CSSSelector::PseudoNotParsed:
  • trunk/WebCore/platform/ScrollTypes.h

    r36684 r37462  
    6666        BackButtonEndPart = 1 << 5,
    6767        ForwardButtonEndPart = 1 << 6,
     68        ScrollbarBGPart = 1 << 7,
     69        TrackBGPart = 1 << 8,
    6870        AllParts = 0xffffffff,
    6971    };
  • trunk/WebCore/platform/Scrollbar.h

    r37251 r37462  
    121121    void setSuppressInvalidation(bool s) { m_suppressInvalidation = s; }
    122122
     123    virtual void styleChanged() { }
     124
    123125protected:
    124126    virtual void updateThumbPosition();
  • trunk/WebCore/platform/ScrollbarThemeComposite.cpp

    r37146 r37462  
    8585        IntRect track = trackRect(scrollbar);
    8686        splitTrack(scrollbar, track, startTrackRect, thumbRect, endTrackRect);
    87         if (damageRect.intersects(thumbRect)) {
     87        if (damageRect.intersects(thumbRect))
    8888            scrollMask |= ThumbPart;
    89             if (trackIsSinglePiece()) {
    90                 // The track is a single strip that paints under the thumb.
    91                 // Add both components of the track to the mask.
    92                 scrollMask |= BackTrackPart;
    93                 scrollMask |= ForwardTrackPart;
    94             }
    95         }
    9689        if (damageRect.intersects(startTrackRect))
    9790            scrollMask |= BackTrackPart;
     
    132125#endif
    133126
    134     // Paint the track.
     127    // Paint the scrollbar background (only used by custom CSS scrollbars).
     128    paintScrollbarBackground(graphicsContext, scrollbar);
     129
     130    // Paint the track background.
     131    if ((scrollMask & ForwardTrackPart) || (scrollMask & BackTrackPart) || (scrollMask && ThumbPart))
     132        paintTrackBackground(graphicsContext, scrollbar, trackPaintRect);
     133   
     134    // Paint the track pieces above and below the thumb.
    135135    if ((scrollMask & ForwardTrackPart) || (scrollMask & BackTrackPart)) {
    136         if (!thumbPresent || trackIsSinglePiece())
    137             paintTrack(graphicsContext, scrollbar, trackPaintRect, ForwardTrackPart | BackTrackPart);
    138         else {
    139             if (scrollMask & BackTrackPart)
    140                 paintTrack(graphicsContext, scrollbar, startTrackRect, BackTrackPart);
    141             if (scrollMask & ForwardTrackPart)
    142                 paintTrack(graphicsContext, scrollbar, endTrackRect, ForwardTrackPart);
    143         }
     136       
     137        if (scrollMask & BackTrackPart)
     138            paintTrackPiece(graphicsContext, scrollbar, startTrackRect, BackTrackPart);
     139        if (scrollMask & ForwardTrackPart)
     140            paintTrackPiece(graphicsContext, scrollbar, endTrackRect, ForwardTrackPart);
    144141    }
    145142
     
    233230    // This function won't even get called unless we're big enough to have some combination of these three rects where at least
    234231    // one of them is non-empty.
    235     int thickness = scrollbarThickness();
     232    int thickness = scrollbar->orientation() == HorizontalScrollbar ? scrollbar->height() : scrollbar->width();
    236233    int thumbPos = thumbPosition(scrollbar);
    237234    if (scrollbar->orientation() == HorizontalScrollbar) {
  • trunk/WebCore/platform/ScrollbarThemeComposite.h

    r37146 r37462  
    5555
    5656    virtual void splitTrack(Scrollbar*, const IntRect& track, IntRect& startTrack, IntRect& thumb, IntRect& endTrack);
    57    
    58     virtual bool trackIsSinglePiece() { return true; }
    5957
    6058    virtual int minimumThumbLength(Scrollbar*);
    6159
    62     virtual void paintTrack(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarControlPartMask) {}
     60    virtual void paintScrollbarBackground(GraphicsContext*, Scrollbar*) {}
     61    virtual void paintTrackBackground(GraphicsContext*, Scrollbar*, const IntRect&) {}
     62    virtual void paintTrackPiece(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarPart) {}
    6363    virtual void paintButton(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarPart) {}
    6464    virtual void paintThumb(GraphicsContext*, Scrollbar*, const IntRect&) {}
  • trunk/WebCore/platform/win/ScrollbarThemeSafari.cpp

    r37118 r37462  
    204204}
    205205
    206 void ScrollbarThemeSafari::paintTrack(GraphicsContext* graphicsContext, Scrollbar* scrollbar, const IntRect& trackRect, ScrollbarControlPartMask)
     206void ScrollbarThemeSafari::paintTrackBackground(GraphicsContext* graphicsContext, Scrollbar* scrollbar, const IntRect& trackRect)
    207207{
    208208    if (!SafariThemeLibrary())
  • trunk/WebCore/platform/win/ScrollbarThemeSafari.h

    r37118 r37462  
    5353    virtual bool shouldCenterOnThumb(Scrollbar*, const PlatformMouseEvent&);
    5454
    55     virtual void paintTrack(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarControlPartMask);
     55    virtual void paintTrackBackground(GraphicsContext*, Scrollbar*, const IntRect&);
    5656    virtual void paintButton(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarPart);
    5757    virtual void paintThumb(GraphicsContext*, Scrollbar*, const IntRect&);
  • trunk/WebCore/platform/win/ScrollbarThemeWin.cpp

    r37118 r37462  
    195195}
    196196
    197 void ScrollbarThemeWin::paintTrack(GraphicsContext* context, Scrollbar* scrollbar, const IntRect& rect, ScrollbarControlPartMask mask)
     197void ScrollbarThemeWin::paintTrack(GraphicsContext* context, Scrollbar* scrollbar, const IntRect& rect, ScrollbarPart partType)
    198198{
    199199    checkAndInitScrollbarTheme();
    200200
    201     bool start = mask & BackTrackPart;
     201    bool start = partType == BackTrackPart;
    202202    int part;
    203203    if (scrollbar->orientation() == HorizontalScrollbar)
  • trunk/WebCore/platform/win/ScrollbarThemeWin.h

    r37118 r37462  
    4949    virtual IntRect forwardButtonRect(Scrollbar*, ScrollbarPart, bool painting = false);
    5050    virtual IntRect trackRect(Scrollbar*, bool painting = false);
    51    
    52     virtual bool trackIsSinglePiece() { return false; }
    53    
     51
    5452    virtual bool shouldCenterOnThumb(Scrollbar*, const PlatformMouseEvent&);
    5553
    56     virtual void paintTrack(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarControlPartMask);
     54    virtual void paintTrackPiece(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarPart);
    5755    virtual void paintButton(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarPart);
    5856    virtual void paintThumb(GraphicsContext*, Scrollbar*, const IntRect&);
  • trunk/WebCore/rendering/RenderLayer.cpp

    r37223 r37462  
    6666#include "RenderMarquee.h"
    6767#include "RenderReplica.h"
     68#include "RenderScrollbar.h"
    6869#include "RenderTheme.h"
    6970#include "RenderView.h"
     
    11111112PassRefPtr<Scrollbar> RenderLayer::createScrollbar(ScrollbarOrientation orientation)
    11121113{
    1113     RefPtr<Scrollbar> widget = Scrollbar::createNativeScrollbar(this, orientation, RegularScrollbar);
     1114    RefPtr<Scrollbar> widget;
     1115    RenderStyle* style = renderer()->getPseudoStyle(RenderStyle::SCROLLBAR);
     1116    if (style)
     1117        widget = RenderScrollbar::createCustomScrollbar(this, orientation, style, renderer());
     1118    else
     1119        widget = Scrollbar::createNativeScrollbar(this, orientation, RegularScrollbar);
    11141120    m_object->document()->view()->addChild(widget.get());       
    11151121    return widget.release();
     
    23812387        updateReflectionStyle();
    23822388    }
     2389   
     2390    // FIXME: Need to detect a swap from custom to native scrollbars (and vice versa).
     2391    if (m_hBar)
     2392        m_hBar->styleChanged();
     2393    if (m_vBar)
     2394        m_vBar->styleChanged();
    23832395}
    23842396
  • trunk/WebCore/rendering/style/RenderStyle.h

    r37252 r37462  
    110110                    SLIDER_THUMB, SEARCH_CANCEL_BUTTON, SEARCH_DECORATION, SEARCH_RESULTS_DECORATION, SEARCH_RESULTS_BUTTON, MEDIA_CONTROLS_PANEL,
    111111                    MEDIA_CONTROLS_PLAY_BUTTON, MEDIA_CONTROLS_MUTE_BUTTON, MEDIA_CONTROLS_TIMELINE, MEDIA_CONTROLS_TIME_DISPLAY,
    112                     MEDIA_CONTROLS_SEEK_BACK_BUTTON, MEDIA_CONTROLS_SEEK_FORWARD_BUTTON , MEDIA_CONTROLS_FULLSCREEN_BUTTON };
     112                    MEDIA_CONTROLS_SEEK_BACK_BUTTON, MEDIA_CONTROLS_SEEK_FORWARD_BUTTON , MEDIA_CONTROLS_FULLSCREEN_BUTTON,
     113                    SCROLLBAR, SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER };
    113114    static const int FIRST_INTERNAL_PSEUDOID = FILE_UPLOAD_BUTTON;
    114115
Note: See TracChangeset for help on using the changeset viewer.