[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
leandro at webkit.org
leandro at webkit.org
Wed Dec 22 11:40:47 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit acec2dfd92a7af92f6774bfa1bd0d0a9570ac81f
Author: leandro at webkit.org <leandro at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Aug 3 18:18:35 2010 +0000
2010-08-03 Leandro Pereira <leandro at 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 at 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*.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64570 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 3daa0fc..4180fa1 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,27 @@
+2010-08-03 Leandro Pereira <leandro at 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*.
+
2010-08-03 Alexander Pavlov <apavlov at chromium.org>
Reviewed by Joseph Pecoraro.
diff --git a/WebCore/platform/efl/RenderThemeEfl.cpp b/WebCore/platform/efl/RenderThemeEfl.cpp
index d5a5365..36600a9 100644
--- a/WebCore/platform/efl/RenderThemeEfl.cpp
+++ b/WebCore/platform/efl/RenderThemeEfl.cpp
@@ -34,6 +34,7 @@
#include "Page.h"
#include "RenderBox.h"
#include "RenderObject.h"
+#include "RenderSlider.h"
#include <wtf/text/CString.h>
#include <Ecore_Evas.h>
@@ -256,7 +257,7 @@ void RenderThemeEfl::applyEdjeStateFromForm(Evas_Object* o, ControlStates states
bool RenderThemeEfl::paintThemePart(RenderObject* o, FormType type, const PaintInfo& i, const IntRect& rect)
{
- struct ThemePartCacheEntry* ce;
+ ThemePartCacheEntry* ce;
Eina_List* updates;
cairo_t* cairo;
@@ -273,6 +274,29 @@ bool RenderThemeEfl::paintThemePart(RenderObject* o, FormType type, const PaintI
cairo = i.context->platformContext();
ASSERT(cairo);
+ // Currently, only sliders needs this message; if other widget ever needs special
+ // treatment, move them to special functions.
+ if (type == SliderVertical || type == SliderHorizontal) {
+ RenderSlider* renderSlider = toRenderSlider(o);
+ Edje_Message_Float_Set* msg;
+ int max, value;
+
+ if (type == SliderVertical) {
+ max = rect.height() - renderSlider->thumbRect().height();
+ value = renderSlider->thumbRect().y();
+ } else {
+ max = rect.width() - renderSlider->thumbRect().width();
+ value = renderSlider->thumbRect().x();
+ }
+
+ msg = static_cast<Edje_Message_Float_Set*>(alloca(sizeof(Edje_Message_Float_Set) + sizeof(float)));
+
+ msg->count = 2;
+ msg->val[0] = static_cast<float>(value) / static_cast<float>(max);
+ msg->val[1] = 0.1;
+ edje_object_message_send(ce->o, EDJE_MESSAGE_FLOAT_SET, 0, msg);
+ }
+
edje_object_calc_force(ce->o);
edje_object_message_signal_process(ce->o);
updates = evas_render_updates(ecore_evas_get(ce->ee));
@@ -542,6 +566,8 @@ const char* RenderThemeEfl::edjeGroupFromFormType(FormType type) const
W("search/results_button"),
W("search/results_decoration"),
W("search/cancel_button"),
+ W("slider/vertical"),
+ W("slider/horizontal"),
#undef W
0
};
@@ -702,6 +728,8 @@ static bool supportsFocus(ControlPart appearance)
case MenulistPart:
case RadioPart:
case CheckboxPart:
+ case SliderVerticalPart:
+ case SliderHorizontalPart:
return true;
default:
return false;
@@ -730,6 +758,40 @@ int RenderThemeEfl::baselinePosition(const RenderObject* o) const
return RenderTheme::baselinePosition(o);
}
+bool RenderThemeEfl::paintSliderTrack(RenderObject* o, const PaintInfo& i, const IntRect& rect)
+{
+ if (o->style()->appearance() == SliderHorizontalPart)
+ return paintThemePart(o, SliderHorizontal, i, rect);
+ return paintThemePart(o, SliderVertical, i, rect);
+}
+
+void RenderThemeEfl::adjustSliderTrackStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const
+{
+ if (!m_page && e && e->document()->page()) {
+ static_cast<RenderThemeEfl*>(e->document()->page()->theme())->adjustSliderTrackStyle(selector, style, e);
+ return;
+ }
+
+ adjustSizeConstraints(style, SliderHorizontal);
+ style->resetBorder();
+
+ const struct ThemePartDesc *desc = m_partDescs + (size_t)SliderHorizontal;
+ if (style->width().value() < desc->min.width().value())
+ style->setWidth(desc->min.width());
+ if (style->height().value() < desc->min.height().value())
+ style->setHeight(desc->min.height());
+}
+
+void RenderThemeEfl::adjustSliderThumbStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const
+{
+ adjustSliderTrackStyle(selector, style, e);
+}
+
+bool RenderThemeEfl::paintSliderThumb(RenderObject* o, const PaintInfo& i, const IntRect& rect)
+{
+ return paintSliderTrack(o, i, rect);
+}
+
void RenderThemeEfl::adjustCheckboxStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const
{
if (!m_page && e && e->document()->page()) {
diff --git a/WebCore/platform/efl/RenderThemeEfl.h b/WebCore/platform/efl/RenderThemeEfl.h
index 9753a76..8e5650d 100644
--- a/WebCore/platform/efl/RenderThemeEfl.h
+++ b/WebCore/platform/efl/RenderThemeEfl.h
@@ -50,6 +50,8 @@ enum FormType { // KEEP IN SYNC WITH edjeGroupFromFormType()
SearchFieldResultsButton,
SearchFieldResultsDecoration,
SearchFieldCancelButton,
+ SliderVertical,
+ SliderHorizontal,
FormTypeLast
};
@@ -135,6 +137,11 @@ public:
virtual void adjustSearchFieldCancelButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
virtual bool paintSearchFieldCancelButton(RenderObject*, const PaintInfo&, const IntRect&);
+ virtual void adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
+ virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
+
+ virtual void adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
+ virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
private:
void createCanvas();
void createEdje();
diff --git a/WebKit/efl/ChangeLog b/WebKit/efl/ChangeLog
index 0632ff1..e7e209f 100644
--- a/WebKit/efl/ChangeLog
+++ b/WebKit/efl/ChangeLog
@@ -1,3 +1,18 @@
+2010-08-03 Leandro Pereira <leandro at 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 ryuan choi <ryuan.choi at samsung.com>
Reviewed by Darin Adler.
diff --git a/WebKit/efl/DefaultTheme/default.edc b/WebKit/efl/DefaultTheme/default.edc
index 7e0fe48..82b6882 100644
--- a/WebKit/efl/DefaultTheme/default.edc
+++ b/WebKit/efl/DefaultTheme/default.edc
@@ -73,4 +73,5 @@ collections {
#include "widget/search/field/search_field.edc"
#include "widget/search/cancel/search_cancel.edc"
#include "widget/search/decoration/search_decoration.edc"
+#include "widget/slider/slider.edc"
}
diff --git a/WebKit/efl/DefaultTheme/widget/slider/slider.edc b/WebKit/efl/DefaultTheme/widget/slider/slider.edc
new file mode 100644
index 0000000..6c1f6a5
--- /dev/null
+++ b/WebKit/efl/DefaultTheme/widget/slider/slider.edc
@@ -0,0 +1,221 @@
+/*
+ Copyright (C) 2008,2009 INdT - Instituto Nokia de Tecnologia
+ Copyright (C) 2009,2010 ProFUSION embedded systems
+ Copyright (C) 2009,2010 Samsung Electronics
+
+ This file is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+group {
+ name: "webkit/widget/slider/vertical";
+
+ min: 10 0; /* if > 0, this is the minimum size that will be allocated.
+ * If wants to draw on top, just overflow usign edje's rel1/rel2
+ */
+
+ images {
+ image: "widget/slider/slider_v.png" COMP;
+ image: "widget/slider/slider_knob_v.png" COMP;
+ }
+
+ script {
+ public message(Msg_Type:type, id, ...) {
+ if ((id == 0) && (type == MSG_FLOAT_SET)) {
+ new Float:vy, Float:sy;
+
+ vy = getfarg(2);
+ sy = getfarg(3);
+
+ if (vy >= 0.0) {
+ set_drag_size(PART:"img.knob", 1.0, sy);
+ set_drag(PART:"img.knob", 0.0, vy);
+ }
+ }
+ }
+
+ public update_drag_pos() {
+ new Float:x, Float:y;
+ get_drag(PART:"img.knob", x, y);
+ send_message(MSG_FLOAT, 1, y);
+ }
+ }
+
+ parts {
+ part {
+ name: "rect.base";
+ type: RECT;
+ description {
+ min: 10 0;
+ max: 10 999999;
+ state: "default" 0.0;
+ color: 255 255 255 0;
+ }
+ }
+ part {
+ name: "rect.clipper";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "img.slider";
+ type: IMAGE;
+ mouse_events: 0;
+ clip_to: "rect.clipper";
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "widget/slider/slider_v.png";
+ border: 0 0 6 6;
+ }
+ }
+ }
+
+ part {
+ name: "img.knob";
+ type: IMAGE;
+ mouse_events: 1;
+ clip_to: "rect.clipper";
+ dragable {
+ x: 0 0 0;
+ y: 1 1 0;
+ confine: "rect.base";
+ }
+ description {
+ state: "default" 0.0;
+ min: 10 10;
+ max: 10 999999;
+ image {
+ normal: "widget/slider/slider_knob_v.png";
+ border: 0 0 6 6;
+ }
+ }
+ }
+ }
+ programs {
+ program {
+ name: "dragged";
+ signal: "drag";
+ source: "img.knob";
+ script {
+ update_drag_pos();
+ }
+ }
+ }
+}
+
+group {
+ name: "webkit/widget/slider/horizontal";
+
+ min: 0 10; /* if > 0, this is the minimum size that will be allocated.
+ * If wants to draw on top, just overflow usign edje's rel1/rel2
+ */
+
+ images {
+ image: "widget/slider/slider_h.png" COMP;
+ image: "widget/slider/slider_knob_h.png" COMP;
+ }
+
+ script {
+ public message(Msg_Type:type, id, ...) {
+ if ((id == 0) && (type == MSG_FLOAT_SET)) {
+ new Float:vx, Float:sx;
+
+ vx = getfarg(2);
+ sx = getfarg(3);
+
+ if (vx >= 0.0) {
+ set_drag_size(PART:"img.knob", sx, 1.0);
+ set_drag(PART:"img.knob", vx, 0.0);
+ }
+ }
+ }
+
+ public update_drag_pos() {
+ new Float:x, Float:y;
+ get_drag(PART:"img.knob", x, y);
+ send_message(MSG_FLOAT, 1, x);
+ }
+ }
+
+ parts {
+ part {
+ name: "rect.base";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 0 10;
+ max: 999999 10;
+ color: 255 255 255 0;
+ }
+ }
+ part {
+ name: "rect.clipper";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: "img.slider";
+ type: IMAGE;
+ mouse_events: 0;
+ clip_to: "rect.clipper";
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "widget/slider/slider_h.png";
+ border: 6 6 0 0;
+ }
+ }
+ }
+
+ part {
+ name: "img.knob";
+ type: IMAGE;
+ mouse_events: 1;
+ clip_to: "rect.clipper";
+ dragable {
+ x: 1 1 0;
+ y: 0 0 0;
+ confine: "rect.base";
+ }
+ description {
+ state: "default" 0.0;
+ min: 10 10;
+ image {
+ normal: "widget/slider/slider_knob_h.png";
+ border: 6 6 0 0;
+ }
+ }
+ }
+ }
+ programs {
+ program {
+ name: "dragged";
+ signal: "drag";
+ source: "img.knob";
+ script {
+ update_drag_pos();
+ }
+ }
+ }
+}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list