Changeset 52896 in webkit


Ignore:
Timestamp:
Jan 6, 2010 7:37:50 PM (14 years ago)
Author:
eric@webkit.org
Message:

2010-01-06 Jakub Wieczorek <faw217@gmail.com>

Reviewed by Adam Treat.

[Qt] RenderTheme: Missing support for native sliders

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

Implement painting of native slider controls in RenderTheme
and unskip a couple of layout tests that are passing after
this change.

  • platform/qt/Skipped:

2010-01-06 Jakub Wieczorek <faw217@gmail.com>

Reviewed by Adam Treat.

[Qt] RenderTheme: Missing support for native sliders

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

Implement painting of native slider controls in RenderTheme
and unskip a couple of layout tests that are passing after
this change.

  • platform/qt/RenderThemeQt.cpp: (WebCore::RenderThemeQt::paintSliderTrack): (WebCore::RenderThemeQt::adjustSliderTrackStyle): (WebCore::RenderThemeQt::paintSliderThumb): (WebCore::RenderThemeQt::adjustSliderThumbStyle): (WebCore::RenderThemeQt::supportsFocus): (WebCore::RenderThemeQt::adjustSliderThumbSize):
  • platform/qt/RenderThemeQt.h:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r52892 r52896  
     12010-01-06  Jakub Wieczorek  <faw217@gmail.com>
     2
     3        Reviewed by Adam Treat.
     4
     5        [Qt] RenderTheme: Missing support for native sliders
     6
     7        https://bugs.webkit.org/show_bug.cgi?id=33122
     8
     9        Implement painting of native slider controls in RenderTheme
     10        and unskip a couple of layout tests that are passing after
     11        this change.
     12
     13        * platform/qt/Skipped:
     14
    1152010-01-06  Fumitoshi Ukai  <ukai@chromium.org>
    216
  • trunk/LayoutTests/platform/qt/Skipped

    r52722 r52896  
    234234# Missing drag & drop functionality in DRT
    235235fast/images/drag-svg-as-image.html
     236fast/forms/slider-delete-while-dragging-thumb.html
    236237
    237238# ------- missing eventSender.zoomPageIn
     
    479480fast/forms/select-accesskey.html
    480481fast/forms/select-writing-direction-natural.html
    481 fast/forms/slider-mouse-events.html
    482482fast/forms/tabbing-input-iframe.html
    483483fast/forms/textAreaLineHeight.html
     
    10571057svg/hixie/viewbox/preserveAspectRatio/002.xml
    10581058
    1059 # ------- <video> support
    1060 fast/forms/slider-delete-while-dragging-thumb.html
    1061 
    10621059# ------ web archive support
    10631060svg/custom/image-with-prefix-in-webarchive.svg
     
    11671164fast/forms/input-text-option-delete.html
    11681165fast/forms/legend-access-key.html
    1169 fast/forms/slider-onchange-event.html
    11701166fast/forms/textarea-rows-cols.html
    11711167fast/frames/onlyCommentInIFrame.html
     
    29252921fast/forms/select-style.html
    29262922fast/forms/select-visual-hebrew.html
    2927 fast/forms/slider-padding.html
    2928 fast/forms/slider-thumb-shared-style.html
    2929 fast/forms/slider-thumb-stylability.html
    29302923fast/forms/stuff-on-my-optgroup.html
    29312924fast/forms/targeted-frame-submission.html
     
    48004793fast/events/pointer-events-2.html
    48014794fast/events/special-key-events-in-input-text.html
    4802 fast/events/tabindex-focus-blur-all.html
    48034795fast/forms/option-mouseevents.html
    48044796fast/forms/search-abs-pos-cancel-button.html
    4805 fast/forms/slider-transformed.html
    4806 fast/forms/slider-zoomed.html
    48074797fast/forms/text-control-intrinsic-widths.html
    48084798fast/forms/textarea-metrics.html
     
    51015091# https://bugs.webkit.org/show_bug.cgi?id=32961
    51025092http/tests/xmlhttprequest/failed-auth.html
     5093
     5094# Slider tests that need new results
     5095fast/forms/slider-padding.html
     5096fast/forms/slider-thumb-shared-style.html
     5097fast/forms/slider-thumb-stylability.html
     5098fast/forms/slider-zoomed.html
     5099fast/forms/slider-mouse-events.html
  • trunk/WebCore/ChangeLog

    r52895 r52896  
     12010-01-06  Jakub Wieczorek  <faw217@gmail.com>
     2
     3        Reviewed by Adam Treat.
     4
     5        [Qt] RenderTheme: Missing support for native sliders
     6
     7        https://bugs.webkit.org/show_bug.cgi?id=33122
     8
     9        Implement painting of native slider controls in RenderTheme
     10        and unskip a couple of layout tests that are passing after
     11        this change.
     12
     13        * platform/qt/RenderThemeQt.cpp:
     14        (WebCore::RenderThemeQt::paintSliderTrack):
     15        (WebCore::RenderThemeQt::adjustSliderTrackStyle):
     16        (WebCore::RenderThemeQt::paintSliderThumb):
     17        (WebCore::RenderThemeQt::adjustSliderThumbStyle):
     18        (WebCore::RenderThemeQt::supportsFocus):
     19        (WebCore::RenderThemeQt::adjustSliderThumbSize):
     20        * platform/qt/RenderThemeQt.h:
     21
    1222010-01-06  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>
    223
  • trunk/WebCore/platform/qt/RenderThemeQt.cpp

    r52664 r52896  
    4646#include "QWebPageClient.h"
    4747#include "RenderBox.h"
     48#include "RenderSlider.h"
    4849#include "RenderTheme.h"
    4950#include "UserAgentStyleSheets.h"
     
    6061#include <QStyleOptionButton>
    6162#include <QStyleOptionFrameV2>
     63#include <QStyleOptionSlider>
    6264#include <QWidget>
    6365
     
    630632                                     const IntRect& r)
    631633{
    632     notImplemented();
    633     return RenderTheme::paintSliderTrack(o, pi, r);
     634    StylePainter p(pi);
     635    if (!p.isValid())
     636       return true;
     637
     638    QStyleOptionSlider option;
     639    if (p.widget)
     640       option.initFrom(p.widget);
     641    ControlPart appearance = initializeCommonQStyleOptions(option, o);
     642
     643    RenderSlider* renderSlider = toRenderSlider(o);
     644    IntRect thumbRect = renderSlider->thumbRect();
     645
     646    option.rect = r;
     647
     648    int value;
     649    if (appearance == SliderVerticalPart) {
     650        option.maximum = r.height() - thumbRect.height();
     651        value = thumbRect.y();
     652    } else {
     653        option.maximum = r.width() - thumbRect.width();
     654        value = thumbRect.x();
     655    }
     656
     657    value = QStyle::sliderValueFromPosition(0, option.maximum, value, option.maximum);
     658
     659    option.sliderValue = value;
     660    option.sliderPosition = value;
     661    if (appearance == SliderVerticalPart)
     662        option.orientation = Qt::Vertical;
     663
     664    if (renderSlider->inDragMode()) {
     665        option.activeSubControls = QStyle::SC_SliderHandle;
     666        option.state |= QStyle::State_Sunken;
     667    }
     668
     669    const QPoint topLeft = r.topLeft();
     670    p.painter->translate(topLeft);
     671    option.rect.moveTo(QPoint(0, 0));
     672    option.rect.setSize(r.size());
     673
     674    p.drawComplexControl(QStyle::CC_Slider, option);
     675    p.painter->translate(-topLeft);
     676
     677    return false;
     678}
     679
     680void RenderThemeQt::adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
     681{
     682    style->setBoxShadow(0);
    634683}
    635684
     
    637686                                     const IntRect& r)
    638687{
    639     notImplemented();
    640     return RenderTheme::paintSliderThumb(o, pi, r);
     688    // We've already painted it in paintSliderTrack(), no need to do anything here.
     689    return false;
     690}
     691
     692void RenderThemeQt::adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
     693{
     694    style->setBoxShadow(0);
    641695}
    642696
     
    707761    case RadioPart:
    708762    case CheckboxPart:
     763    case SliderHorizontalPart:
     764    case SliderVerticalPart:
    709765        return true;
    710766    default: // No for all others...
     
    9591015void RenderThemeQt::adjustSliderThumbSize(RenderObject* o) const
    9601016{
    961     if (o->style()->appearance() == MediaSliderThumbPart) {
     1017    ControlPart part = o->style()->appearance();
     1018
     1019    if (part == MediaSliderThumbPart) {
    9621020        RenderStyle* parentStyle = o->parent()->style();
    9631021        Q_ASSERT(parentStyle);
     
    9661024        o->style()->setWidth(Length(parentHeight / 3, Fixed));
    9671025        o->style()->setHeight(Length(parentHeight, Fixed));
     1026    } else if (part == SliderThumbHorizontalPart || part == SliderThumbVerticalPart) {
     1027        QStyleOptionSlider option;
     1028        if (part == SliderThumbVerticalPart)
     1029            option.orientation = Qt::Vertical;
     1030
     1031        QStyle* style = qStyle();
     1032
     1033        int width = style->pixelMetric(QStyle::PM_SliderLength, &option);
     1034        int height = style->pixelMetric(QStyle::PM_SliderThickness, &option);
     1035        o->style()->setWidth(Length(width, Fixed));
     1036        o->style()->setHeight(Length(height, Fixed));
    9681037    }
    9691038}
  • trunk/WebCore/platform/qt/RenderThemeQt.h

    r52664 r52896  
    100100
    101101    virtual bool paintSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     102    virtual void adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
     103
    102104    virtual bool paintSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     105    virtual void adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
    103106
    104107    virtual bool paintSearchField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
Note: See TracChangeset for help on using the changeset viewer.