[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
tkent at chromium.org
tkent at chromium.org
Wed Dec 22 11:17:40 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit e5051187dfc7cd9e05dcd36b1950991c86c1d93a
Author: tkent at chromium.org <tkent at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Jul 16 22:05:47 2010 +0000
2010-07-16 Kent Tamura <tkent at chromium.org>
Reviewed by Darin Fisher.
[Chromium] <input type=number> UI implementation for Windows
https://bugs.webkit.org/show_bug.cgi?id=42259
No additional tests. Existing tests cover this change and we'll
update expectations.
* platform/chromium/ChromiumBridge.h: Add paintSpinButton().
* rendering/RenderThemeChromiumWin.cpp:
(WebCore::RenderThemeChromiumWin::determineState):
Add ControlSubPart parameter and add support for spin buttons.
(WebCore::RenderThemeChromiumWin::determineClassicState): ditto.
(WebCore::RenderThemeChromiumWin::getThemeData): ditto.
(WebCore::RenderThemeChromiumWin::adjustInnerSpinButtonStyle): Added.
(WebCore::RenderThemeChromiumWin::paintInnerSpinButton): Added.
* rendering/RenderThemeChromiumWin.h:
Declare ControlSubpart, and add it to some functions.
2010-07-16 Kent Tamura <tkent at chromium.org>
Reviewed by Darin Fisher.
[Chromium] <input type=number> UI implementation for Windows
https://bugs.webkit.org/show_bug.cgi?id=42259
* public/WebThemeEngine.h:
(WebKit::WebThemeEngine::paintSpinButton): Added.
* src/ChromiumBridge.cpp:
(WebCore::ChromiumBridge::paintSpinButton):
Added. It calls WebThemeEngine::paintSpinButton().
2010-07-16 Kent Tamura <tkent at chromium.org>
Reviewed by Darin Fisher.
[Chromium] <input type=number> UI implementation for Windows
https://bugs.webkit.org/show_bug.cgi?id=42259
* DumpRenderTree/chromium/WebThemeEngineDRT.cpp:
(WebThemeEngineDRT::paintSpinButton):
Added. Check state consistency and use existing arrow painting code.
* DumpRenderTree/chromium/WebThemeEngineDRT.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63589 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 2d51ab4..b232103 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,24 @@
+2010-07-16 Kent Tamura <tkent at chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ [Chromium] <input type=number> UI implementation for Windows
+ https://bugs.webkit.org/show_bug.cgi?id=42259
+
+ No additional tests. Existing tests cover this change and we'll
+ update expectations.
+
+ * platform/chromium/ChromiumBridge.h: Add paintSpinButton().
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::RenderThemeChromiumWin::determineState):
+ Add ControlSubPart parameter and add support for spin buttons.
+ (WebCore::RenderThemeChromiumWin::determineClassicState): ditto.
+ (WebCore::RenderThemeChromiumWin::getThemeData): ditto.
+ (WebCore::RenderThemeChromiumWin::adjustInnerSpinButtonStyle): Added.
+ (WebCore::RenderThemeChromiumWin::paintInnerSpinButton): Added.
+ * rendering/RenderThemeChromiumWin.h:
+ Declare ControlSubpart, and add it to some functions.
+
2010-07-16 Lucas De Marchi <lucas.demarchi at profusion.mobi>
Reviewed by Antonio Gomes.
diff --git a/WebCore/platform/chromium/ChromiumBridge.h b/WebCore/platform/chromium/ChromiumBridge.h
index 3284aae..2d9695e 100644
--- a/WebCore/platform/chromium/ChromiumBridge.h
+++ b/WebCore/platform/chromium/ChromiumBridge.h
@@ -241,6 +241,8 @@ namespace WebCore {
GraphicsContext*, int part, int state, int classicState, const IntRect&);
static void paintScrollbarTrack(
GraphicsContext*, int part, int state, int classicState, const IntRect&, const IntRect& alignRect);
+ static void paintSpinButton(
+ GraphicsContext*, int part, int state, int classicState, const IntRect&);
static void paintTextField(
GraphicsContext*, int part, int state, int classicState, const IntRect&, const Color&, bool fillContentArea, bool drawEdges);
static void paintTrackbar(
diff --git a/WebCore/rendering/RenderThemeChromiumWin.cpp b/WebCore/rendering/RenderThemeChromiumWin.cpp
index 97a9352..7e58399 100644
--- a/WebCore/rendering/RenderThemeChromiumWin.cpp
+++ b/WebCore/rendering/RenderThemeChromiumWin.cpp
@@ -505,19 +505,20 @@ double RenderThemeChromiumWin::caretBlinkIntervalInternal() const
return blinkInterval;
}
-unsigned RenderThemeChromiumWin::determineState(RenderObject* o)
+unsigned RenderThemeChromiumWin::determineState(RenderObject* o, ControlSubPart subPart)
{
unsigned result = TS_NORMAL;
ControlPart appearance = o->style()->appearance();
if (!isEnabled(o))
result = TS_DISABLED;
- else if (isReadOnlyControl(o) && (TextFieldPart == appearance || TextAreaPart == appearance || SearchFieldPart == appearance))
- result = ETS_READONLY; // Readonly is supported on textfields.
- else if (isPressed(o)) // Active overrides hover and focused.
+ else if (isReadOnlyControl(o))
+ result = (appearance == TextFieldPart || appearance == TextAreaPart || appearance == SearchFieldPart) ? ETS_READONLY : TS_DISABLED;
+ // Active overrides hover and focused.
+ else if (isPressed(o) && (subPart == SpinButtonUp) == isSpinUpButtonPartPressed(o))
result = TS_PRESSED;
else if (supportsFocus(appearance) && isFocused(o))
result = ETS_FOCUSED;
- else if (isHovered(o))
+ else if (isHovered(o) && (subPart == SpinButtonUp) == isSpinUpButtonPartHovered(o))
result = TS_HOT;
// CBS_UNCHECKED*: 1-4
@@ -544,7 +545,7 @@ unsigned RenderThemeChromiumWin::determineSliderThumbState(RenderObject* o)
return result;
}
-unsigned RenderThemeChromiumWin::determineClassicState(RenderObject* o)
+unsigned RenderThemeChromiumWin::determineClassicState(RenderObject* o, ControlSubPart subPart)
{
unsigned result = 0;
@@ -566,13 +567,14 @@ unsigned RenderThemeChromiumWin::determineClassicState(RenderObject* o)
else if (isHovered(o))
result = DFCS_HOT;
} else {
- if (!isEnabled(o))
+ if (!isEnabled(o) || isReadOnlyControl(o))
result = DFCS_INACTIVE;
- else if (isPressed(o)) // Active supersedes hover
+ // Active supersedes hover
+ else if (isPressed(o) && (subPart == SpinButtonUp) == isSpinUpButtonPartPressed(o))
result = DFCS_PUSHED;
else if (supportsFocus(part) && isFocused(o)) // So does focused
result = 0;
- else if (isHovered(o))
+ else if (isHovered(o) && (subPart == SpinButtonUp) == isSpinUpButtonPartHovered(o))
result = DFCS_HOT;
// Classic theme can't represent indeterminate states. Use unchecked appearance.
if (isChecked(o) && !isIndeterminate(o))
@@ -581,7 +583,7 @@ unsigned RenderThemeChromiumWin::determineClassicState(RenderObject* o)
return result;
}
-ThemeData RenderThemeChromiumWin::getThemeData(RenderObject* o)
+ThemeData RenderThemeChromiumWin::getThemeData(RenderObject* o, ControlSubPart subPart)
{
ThemeData result;
switch (o->style()->appearance()) {
@@ -626,9 +628,14 @@ ThemeData RenderThemeChromiumWin::getThemeData(RenderObject* o)
result.m_part = EP_EDITTEXT;
result.m_state = determineState(o);
break;
+ case InnerSpinButtonPart:
+ result.m_part = subPart == SpnButtonUp ? SPNP_UP : SPNP_DOWN;
+ result.m_state = determineState(o, subPart);
+ result.m_classicState = subPart == SpinButtonUp ? DFCS_SCROLLUP : DFCS_SCROLLDOWN;
+ break;
}
- result.m_classicState |= determineClassicState(o);
+ result.m_classicState |= determineClassicState(o, subPart);
return result;
}
@@ -680,6 +687,37 @@ bool RenderThemeChromiumWin::paintTextFieldInternal(RenderObject* o,
return false;
}
+void RenderThemeChromiumWin::adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
+{
+ int width = ScrollbarTheme::nativeTheme()->scrollbarThickness();
+ style->setWidth(Length(width, Fixed));
+ style->setMinWidth(Length(width, Fixed));
+}
+
+bool RenderThemeChromiumWin::paintInnerSpinButton(RenderObject* object, const PaintInfo& info, const IntRect& rect)
+{
+ IntRect half = rect;
+
+ half.setHeight(rect.height() / 2);
+ const ThemeData& upThemeData = getThemeData(object, SpinButtonUp);
+ WebCore::ThemePainter upPainter(info.context, half);
+ ChromiumBridge::paintSpinButton(upPainter.context(),
+ upThemeData.m_part,
+ upThemeData.m_state,
+ upThemeData.m_classicState,
+ upPainter.drawRect());
+
+ half.setY(rect.y() + rect.height() / 2);
+ const ThemeData& downThemeData = getThemeData(object, SpinButtonDown);
+ WebCore::ThemePainter downPainter(info.context, half);
+ ChromiumBridge::paintSpinButton(downPainter.context(),
+ downThemeData.m_part,
+ downThemeData.m_state,
+ downThemeData.m_classicState,
+ downPainter.drawRect());
+ return false;
+}
+
#if ENABLE(PROGRESS_TAG)
// MSDN says that update intervals for the bar is 30ms.
diff --git a/WebCore/rendering/RenderThemeChromiumWin.h b/WebCore/rendering/RenderThemeChromiumWin.h
index c6c95e6..661b623 100644
--- a/WebCore/rendering/RenderThemeChromiumWin.h
+++ b/WebCore/rendering/RenderThemeChromiumWin.h
@@ -86,6 +86,8 @@ namespace WebCore {
// See comment in RenderThemeChromiumSkia::setDefaultFontSize() regarding ugliness of this hack.
static void setDefaultFontSize(int);
+ virtual void adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
+ virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&);
#if ENABLE(PROGRESS_TAG)
virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const;
@@ -98,14 +100,20 @@ namespace WebCore {
virtual double caretBlinkIntervalInternal() const;
private:
+ enum ControlSubPart {
+ None,
+ SpinButtonDown,
+ SpinButtonUp,
+ };
+
RenderThemeChromiumWin() { }
virtual ~RenderThemeChromiumWin() { }
- unsigned determineState(RenderObject*);
+ unsigned determineState(RenderObject*, ControlSubPart = None);
unsigned determineSliderThumbState(RenderObject*);
- unsigned determineClassicState(RenderObject*);
+ unsigned determineClassicState(RenderObject*, ControlSubPart = None);
- ThemeData getThemeData(RenderObject*);
+ ThemeData getThemeData(RenderObject*, ControlSubPart = None);
bool paintTextFieldInternal(RenderObject*, const PaintInfo&, const IntRect&, bool);
};
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 78c2e29..879bdf2 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,16 @@
+2010-07-16 Kent Tamura <tkent at chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ [Chromium] <input type=number> UI implementation for Windows
+ https://bugs.webkit.org/show_bug.cgi?id=42259
+
+ * public/WebThemeEngine.h:
+ (WebKit::WebThemeEngine::paintSpinButton): Added.
+ * src/ChromiumBridge.cpp:
+ (WebCore::ChromiumBridge::paintSpinButton):
+ Added. It calls WebThemeEngine::paintSpinButton().
+
2010-07-16 James Robinson <jamesr at chromium.org>
Reviewed by Darin Fisher.
diff --git a/WebKit/chromium/public/WebThemeEngine.h b/WebKit/chromium/public/WebThemeEngine.h
index 9638c2f..ab59fa2 100644
--- a/WebKit/chromium/public/WebThemeEngine.h
+++ b/WebKit/chromium/public/WebThemeEngine.h
@@ -68,6 +68,10 @@ public:
WebCanvas*, int part, int state, int classicState,
const WebRect&, const WebRect& alignRect) = 0;
+ virtual void paintSpinButton(
+ WebCanvas*, int part, int state, int classicState,
+ const WebRect&) {}
+
virtual void paintTextField(
WebCanvas*, int part, int state, int classicState,
const WebRect&, WebColor, bool fillContentArea, bool drawEdges) = 0;
diff --git a/WebKit/chromium/src/ChromiumBridge.cpp b/WebKit/chromium/src/ChromiumBridge.cpp
index 5124a7f..333020f 100644
--- a/WebKit/chromium/src/ChromiumBridge.cpp
+++ b/WebKit/chromium/src/ChromiumBridge.cpp
@@ -691,6 +691,14 @@ void ChromiumBridge::paintScrollbarTrack(
alignRect);
}
+void ChromiumBridge::paintSpinButton(
+ GraphicsContext* gc, int part, int state, int classicState,
+ const IntRect& rect)
+{
+ webKitClient()->themeEngine()->paintSpinButton(
+ gc->platformContext()->canvas(), part, state, classicState, rect);
+}
+
void ChromiumBridge::paintTextField(
GraphicsContext* gc, int part, int state, int classicState,
const IntRect& rect, const Color& color, bool fillContentArea,
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index b6b31f4..417f4ff 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,15 @@
+2010-07-16 Kent Tamura <tkent at chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ [Chromium] <input type=number> UI implementation for Windows
+ https://bugs.webkit.org/show_bug.cgi?id=42259
+
+ * DumpRenderTree/chromium/WebThemeEngineDRT.cpp:
+ (WebThemeEngineDRT::paintSpinButton):
+ Added. Check state consistency and use existing arrow painting code.
+ * DumpRenderTree/chromium/WebThemeEngineDRT.h:
+
2010-07-16 Alice Liu <alice.liu at apple.com>
Reviewed by Sam Weinig.
diff --git a/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp b/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp
index c28da1f..ef6c26a 100755
--- a/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp
+++ b/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp
@@ -583,6 +583,64 @@ void WebThemeEngineDRT::paintScrollbarTrack(WebCanvas* canvas,
drawControl(canvas, rect, ctype, cstate);
}
+void WebThemeEngineDRT::paintSpinButton(WebCanvas* canvas,
+ int part,
+ int state,
+ int classicState,
+ const WebRect& rect)
+{
+ WebThemeControlDRT::Type ctype = WebThemeControlDRT::UnknownType;
+ WebThemeControlDRT::State cstate = WebThemeControlDRT::UnknownState;
+
+ if (part == SPNP_UP) {
+ ctype = WebThemeControlDRT::UpArrowType;
+ switch (state) {
+ case UPS_NORMAL:
+ ASSERT(classicState == DFCS_SCROLLUP);
+ cstate = WebThemeControlDRT::NormalState;
+ break;
+ case UPS_DISABLED:
+ ASSERT(classicState == (DFCS_SCROLLUP | DFCS_INACTIVE));
+ cstate = WebThemeControlDRT::DisabledState;
+ break;
+ case UPS_PRESSED:
+ ASSERT(classicState == (DFCS_SCROLLUP | DFCS_PUSHED));
+ cstate = WebThemeControlDRT::PressedState;
+ break;
+ case UPS_HOT:
+ ASSERT(classicState == (DFCS_SCROLLUP | DFCS_HOT));
+ cstate = WebThemeControlDRT::HoverState;
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ }
+ } else if (part == SPNP_DOWN) {
+ ctype = WebThemeControlDRT::DownArrowType;
+ switch (state) {
+ case DNS_NORMAL:
+ ASSERT(classicState == DFCS_SCROLLDOWN);
+ cstate = WebThemeControlDRT::NormalState;
+ break;
+ case DNS_DISABLED:
+ ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_INACTIVE));
+ cstate = WebThemeControlDRT::DisabledState;
+ break;
+ case DNS_PRESSED:
+ ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_PUSHED));
+ cstate = WebThemeControlDRT::PressedState;
+ break;
+ case DNS_HOT:
+ ASSERT(classicState == (DFCS_SCROLLDOWN | DFCS_HOT));
+ cstate = WebThemeControlDRT::HoverState;
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ }
+ } else
+ ASSERT_NOT_REACHED();
+ drawControl(canvas, rect, ctype, cstate);
+}
+
void WebThemeEngineDRT::paintTextField(WebCanvas* canvas,
int part,
int state,
diff --git a/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.h b/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.h
index 89805b1..c731540 100644
--- a/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.h
+++ b/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.h
@@ -75,6 +75,10 @@ public:
WebKit::WebCanvas*, int part, int state, int classicState,
const WebKit::WebRect&, const WebKit::WebRect& alignRect);
+ virtual void paintSpinButton(
+ WebKit::WebCanvas*, int part, int state, int classicState,
+ const WebKit::WebRect&);
+
virtual void paintTextField(
WebKit::WebCanvas*, int part, int state, int classicState,
const WebKit::WebRect&, WebKit::WebColor, bool fillContentArea,
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list