Index: third_party/WebKit/WebCore/rendering/RenderListBox.cpp |
=================================================================== |
--- third_party/WebKit/WebCore/rendering/RenderListBox.cpp (revision 9391) |
+++ third_party/WebKit/WebCore/rendering/RenderListBox.cpp (working copy) |
@@ -579,6 +579,29 @@ |
m_vBar->setValue(index); |
} |
+bool RenderListBox::nodeAtPoint(const HitTestRequest& request, HitTestResult& result, int x, int y, int tx, int ty, HitTestAction hitTestAction) |
+{ |
+ if (!RenderBlock::nodeAtPoint(request, result, x, y, tx, ty, hitTestAction)) |
+ return false; |
+ const Vector<HTMLElement*>& listItems = static_cast<HTMLSelectElement*>(node())->listItems(); |
+ int size = numItems(); |
+ tx += this->x(); |
+ ty += this->y(); |
+ for (int i = 0; i < size; ++i) { |
+ if (itemBoundingBoxRect(tx, ty, i).contains(x, y)) { |
+ if (HTMLElement* node = listItems[i]) { |
+ result.setInnerNode(node); |
+ if (!result.innerNonSharedNode()) |
+ result.setInnerNonSharedNode(node); |
+ result.setLocalPoint(IntPoint(x - tx, y - ty)); |
+ break; |
+ } |
+ } |
+ } |
+ |
+ return true; |
+} |
+ |
IntRect RenderListBox::controlClipRect(int tx, int ty) const |
{ |
IntRect clipRect = contentBoxRect(); |