Changeset 64570 in webkit


Ignore:
Timestamp:
Aug 3, 2010 11:18:35 AM (14 years ago)
Author:
leandro@webkit.org
Message:

2010-08-03 Leandro Pereira <leandro@profusion.mobi>

Reviewed by Kenneth Rohde Christiansen.

Implement HTML5 slider theme (using the scrollbar theme as base).
https://bugs.webkit.org/show_bug.cgi?id=43430

  • DefaultTheme/default.edc: Include slider.edc.
  • DefaultTheme/widget/slider/slider.edc: Added.
  • DefaultTheme/widget/slider/slider_h.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_h.png.
  • DefaultTheme/widget/slider/slider_hilight.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_hilight.png.
  • DefaultTheme/widget/slider/slider_knob_h.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_h.png.
  • DefaultTheme/widget/slider/slider_knob_v.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_v.png.
  • DefaultTheme/widget/slider/slider_v.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_v.png.

2010-08-03 Leandro Pereira <leandro@profusion.mobi>

Reviewed by Kenneth Rohde Christiansen.

[EFL] Implement HTML5 slider theme (using the scrollbar theme as base).
https://bugs.webkit.org/show_bug.cgi?id=43430

EFL port does not yet support automated tests.

  • platform/efl/RenderThemeEfl.cpp: (WebCore::RenderThemeEfl::paintThemePart): (WebCore::RenderThemeEfl::edjeGroupFromFormType): Add Edje groups for both vertical and horizontal sliders. (WebCore::supportsFocus): Add sliders as focusable elements. (WebCore::RenderThemeEfl::paintSliderTrack): Implement. (WebCore::RenderThemeEfl::adjustSliderTrackStyle): Implement. (WebCore::RenderThemeEfl::adjustSliderThumbStyle): Use adjustSliderTrackStyle() implementation. (WebCore::RenderThemeEfl::paintSliderThumb): Use paintSliderTrack() implementation().
  • platform/efl/RenderThemeEfl.h: Add SliderVertical and
  • SliderHorizontal. (WebCore::): Added prototypes for adjustSlider*/paintSlider*.
Location:
trunk
Files:
7 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r64565 r64570  
     12010-08-03  Leandro Pereira  <leandro@profusion.mobi>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        [EFL] Implement HTML5 slider theme (using the scrollbar theme as base).
     6        https://bugs.webkit.org/show_bug.cgi?id=43430
     7
     8        EFL port does not yet support automated tests.
     9
     10        * platform/efl/RenderThemeEfl.cpp:
     11        (WebCore::RenderThemeEfl::paintThemePart):
     12        (WebCore::RenderThemeEfl::edjeGroupFromFormType): Add Edje groups
     13        for both vertical and horizontal sliders.
     14        (WebCore::supportsFocus): Add sliders as focusable elements.
     15        (WebCore::RenderThemeEfl::paintSliderTrack): Implement.
     16        (WebCore::RenderThemeEfl::adjustSliderTrackStyle): Implement.
     17        (WebCore::RenderThemeEfl::adjustSliderThumbStyle): Use
     18        adjustSliderTrackStyle() implementation.
     19        (WebCore::RenderThemeEfl::paintSliderThumb): Use paintSliderTrack()
     20        implementation().
     21        * platform/efl/RenderThemeEfl.h: Add SliderVertical and
     22        * SliderHorizontal.
     23        (WebCore::): Added prototypes for adjustSlider*/paintSlider*.
     24
    1252010-08-03  Alexander Pavlov  <apavlov@chromium.org>
    226
  • trunk/WebCore/platform/efl/RenderThemeEfl.cpp

    r62104 r64570  
    3535#include "RenderBox.h"
    3636#include "RenderObject.h"
     37#include "RenderSlider.h"
    3738#include <wtf/text/CString.h>
    3839
     
    257258bool RenderThemeEfl::paintThemePart(RenderObject* o, FormType type, const PaintInfo& i, const IntRect& rect)
    258259{
    259     struct ThemePartCacheEntry* ce;
     260    ThemePartCacheEntry* ce;
    260261    Eina_List* updates;
    261262    cairo_t* cairo;
     
    273274    cairo = i.context->platformContext();
    274275    ASSERT(cairo);
     276
     277    // Currently, only sliders needs this message; if other widget ever needs special
     278    // treatment, move them to special functions.
     279    if (type == SliderVertical || type == SliderHorizontal) {
     280        RenderSlider* renderSlider = toRenderSlider(o);
     281        Edje_Message_Float_Set* msg;
     282        int max, value;
     283
     284        if (type == SliderVertical) {
     285            max = rect.height() - renderSlider->thumbRect().height();
     286            value = renderSlider->thumbRect().y();
     287        } else {
     288            max = rect.width() - renderSlider->thumbRect().width();
     289            value = renderSlider->thumbRect().x();
     290        }
     291
     292        msg = static_cast<Edje_Message_Float_Set*>(alloca(sizeof(Edje_Message_Float_Set) + sizeof(float)));
     293
     294        msg->count = 2;
     295        msg->val[0] = static_cast<float>(value) / static_cast<float>(max);
     296        msg->val[1] = 0.1;
     297        edje_object_message_send(ce->o, EDJE_MESSAGE_FLOAT_SET, 0, msg);
     298    }
    275299
    276300    edje_object_calc_force(ce->o);
     
    543567        W("search/results_decoration"),
    544568        W("search/cancel_button"),
     569        W("slider/vertical"),
     570        W("slider/horizontal"),
    545571#undef W
    546572        0
     
    703729    case RadioPart:
    704730    case CheckboxPart:
     731    case SliderVerticalPart:
     732    case SliderHorizontalPart:
    705733        return true;
    706734    default:
     
    729757
    730758    return RenderTheme::baselinePosition(o);
     759}
     760
     761bool RenderThemeEfl::paintSliderTrack(RenderObject* o, const PaintInfo& i, const IntRect& rect)
     762{
     763    if (o->style()->appearance() == SliderHorizontalPart)
     764        return paintThemePart(o, SliderHorizontal, i, rect);
     765    return paintThemePart(o, SliderVertical, i, rect);
     766}
     767
     768void RenderThemeEfl::adjustSliderTrackStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const
     769{
     770    if (!m_page && e && e->document()->page()) {
     771        static_cast<RenderThemeEfl*>(e->document()->page()->theme())->adjustSliderTrackStyle(selector, style, e);
     772        return;
     773    }
     774
     775    adjustSizeConstraints(style, SliderHorizontal);
     776    style->resetBorder();
     777
     778    const struct ThemePartDesc *desc = m_partDescs + (size_t)SliderHorizontal;
     779    if (style->width().value() < desc->min.width().value())
     780        style->setWidth(desc->min.width());
     781    if (style->height().value() < desc->min.height().value())
     782        style->setHeight(desc->min.height());
     783}
     784
     785void RenderThemeEfl::adjustSliderThumbStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const
     786{
     787    adjustSliderTrackStyle(selector, style, e);
     788}
     789
     790bool RenderThemeEfl::paintSliderThumb(RenderObject* o, const PaintInfo& i, const IntRect& rect)
     791{
     792    return paintSliderTrack(o, i, rect);
    731793}
    732794
  • trunk/WebCore/platform/efl/RenderThemeEfl.h

    r62104 r64570  
    5151    SearchFieldResultsDecoration,
    5252    SearchFieldCancelButton,
     53    SliderVertical,
     54    SliderHorizontal,
    5355    FormTypeLast
    5456};
     
    136138    virtual bool paintSearchFieldCancelButton(RenderObject*, const PaintInfo&, const IntRect&);
    137139
     140    virtual void adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
     141    virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
     142
     143    virtual void adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
     144    virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
    138145private:
    139146    void createCanvas();
  • trunk/WebKit/efl/ChangeLog

    r64559 r64570  
     12010-08-03  Leandro Pereira  <leandro@profusion.mobi>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        Implement HTML5 slider theme (using the scrollbar theme as base).
     6        https://bugs.webkit.org/show_bug.cgi?id=43430
     7
     8        * DefaultTheme/default.edc: Include slider.edc.
     9        * DefaultTheme/widget/slider/slider.edc: Added.
     10        * DefaultTheme/widget/slider/slider_h.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_h.png.
     11        * DefaultTheme/widget/slider/slider_hilight.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_hilight.png.
     12        * DefaultTheme/widget/slider/slider_knob_h.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_h.png.
     13        * DefaultTheme/widget/slider/slider_knob_v.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_knob_v.png.
     14        * DefaultTheme/widget/slider/slider_v.png: Copied from WebKit/efl/DefaultTheme/widget/scrollbar/scrollbar_v.png.
     15
    1162010-08-03  ryuan choi  <ryuan.choi@samsung.com>
    217
  • trunk/WebKit/efl/DefaultTheme/default.edc

    r58034 r64570  
    7474#include "widget/search/cancel/search_cancel.edc"
    7575#include "widget/search/decoration/search_decoration.edc"
     76#include "widget/slider/slider.edc"
    7677}
Note: See TracChangeset for help on using the changeset viewer.