summaryrefslogtreecommitdiffstats
path: root/WebKit/android/RenderSkinRadio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/android/RenderSkinRadio.cpp')
-rw-r--r--WebKit/android/RenderSkinRadio.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/WebKit/android/RenderSkinRadio.cpp b/WebKit/android/RenderSkinRadio.cpp
index 2fca175..ff5e908 100644
--- a/WebKit/android/RenderSkinRadio.cpp
+++ b/WebKit/android/RenderSkinRadio.cpp
@@ -28,6 +28,8 @@
#include "android_graphics.h"
#include "Document.h"
+#include "Element.h"
+#include "InputElement.h"
#include "IntRect.h"
#include "Node.h"
#include "RenderSkinAndroid.h"
@@ -60,11 +62,12 @@ void RenderSkinRadio::Draw(SkCanvas* canvas, Node* element, const IntRect& ir,
if (!s_decoded || !element) {
return;
}
- SkRect r;
- android_setrect(&r, ir);
+ SkRect r(ir);
int saveLayerCount = 0;
int saveScaleCount = 0;
- if (!element->isEnabled()) {
+
+ if (!element->isElementNode() ||
+ !static_cast<Element*>(element)->isEnabledFormControl()) {
saveLayerCount = canvas->saveLayerAlpha(&r, 0x80);
}
SkScalar width = r.width();
@@ -72,7 +75,12 @@ void RenderSkinRadio::Draw(SkCanvas* canvas, Node* element, const IntRect& ir,
SkScalar scale = SkScalarDiv(width, SIZE);
saveScaleCount = canvas->scale(scale, scale);
}
- canvas->drawBitmap(s_bitmap[element->isChecked() + 2*(!isCheckBox)],
+ bool checked = false;
+ if (InputElement* inputElement = toInputElement(static_cast<Element*>(element))) {
+ checked = inputElement->isChecked();
+ }
+
+ canvas->drawBitmap(s_bitmap[checked + 2*(!isCheckBox)],
r.fLeft, r.fTop, NULL);
if (saveLayerCount != 0) {
canvas->restoreToCount(saveLayerCount);