Changeset 18951 in webkit
- Timestamp:
- Jan 18, 2007 1:14:26 PM (17 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r18950 r18951 1 2007-01-18 David Hyatt <hyatt@apple.com> 2 3 Make sure layer autoscrolling puts the event coordinates into the layer's coordinate space before 4 calling hitTest on it. Fixes "flashy" selection in textareas. 5 6 Reviewed by darin 7 8 * rendering/RenderLayer.cpp: 9 (WebCore::RenderLayer::autoscroll): 10 * rendering/RenderTextControl.cpp: 11 (WebCore::RenderTextControl::nodeAtPoint): 12 1 13 2007-01-18 Anders Carlsson <acarlsson@apple.com> 2 14 -
trunk/WebCore/rendering/RenderLayer.cpp
r18838 r18951 871 871 872 872 if (currentFrame->eventHandler()->mouseDownMayStartSelect()) { 873 // Convert the mouse position to local layer space. 874 int objectX, objectY; 875 renderer()->absolutePosition(objectX, objectY); 876 currentPos.move(-objectX, -objectY); 873 877 HitTestRequest request(true, false, true); 874 878 HitTestResult result(currentPos); -
trunk/WebCore/rendering/RenderTextControl.cpp
r18944 r18951 590 590 // and act as if we've hit the close block if we're to the right of the inner text block. 591 591 592 if (RenderBlock::nodeAtPoint(request, result, x, y, tx, ty, hitTestAction)) { 593 Node* leftNode; 594 Node* rightNode; 595 if (style()->direction() == LTR) { 596 leftNode = m_resultsButton.get(); 597 rightNode = m_cancelButton.get(); 598 } else { 599 leftNode = m_cancelButton.get(); 600 rightNode = m_resultsButton.get(); 592 if (RenderBlock::nodeAtPoint(request, result, x, y, tx, ty, hitTestAction) && 593 (result.innerNode() == element() || result.innerNode() == m_innerBlock)) { 594 IntPoint localPoint = IntPoint(x - tx - m_x, y - ty - m_y); 595 if (m_innerBlock) { 596 Node* leftNode; 597 Node* rightNode; 598 if (style()->direction() == LTR) { 599 leftNode = m_resultsButton.get(); 600 rightNode = m_cancelButton.get(); 601 } else { 602 leftNode = m_cancelButton.get(); 603 rightNode = m_resultsButton.get(); 604 } 605 606 int textLeft = tx + m_x + m_innerBlock->renderer()->xPos() + m_innerText->renderer()->xPos(); 607 int textRight = textLeft + m_innerText->renderer()->width(); 608 if (leftNode && x < textLeft) { 609 result.setInnerNode(leftNode); 610 result.setLocalPoint(IntPoint(localPoint.x() - m_innerText->renderer()->xPos() - m_innerBlock->renderer()->xPos() - leftNode->renderer()->xPos(), 611 localPoint.y() - m_innerText->renderer()->yPos() - m_innerBlock->renderer()->yPos() - leftNode->renderer()->yPos())); 612 return true; 613 } 614 if (rightNode && x > textRight) { 615 result.setInnerNode(rightNode); 616 result.setLocalPoint(IntPoint(localPoint.x() - m_innerText->renderer()->xPos() - m_innerBlock->renderer()->xPos() - rightNode->renderer()->xPos(), 617 localPoint.y() - m_innerText->renderer()->yPos() - m_innerBlock->renderer()->yPos() - rightNode->renderer()->yPos())); 618 return true; 619 } 601 620 } 602 if (leftNode && x < m_innerText->renderer()->absoluteBoundingBoxRect().x())603 result.setInnerNode(leftNode);604 else if (rightNode && x > m_innerText->renderer()->absoluteBoundingBoxRect().right())605 result.setInnerNode(rightNode);606 else607 result.setInnerNode(m_innerText.get());621 622 // Hit the inner text block. 623 result.setInnerNode(m_innerText.get()); 624 result.setLocalPoint(IntPoint(localPoint.x() - m_innerText->renderer()->xPos() - (m_innerBlock.get() ? m_innerBlock->renderer()->xPos() : 0), 625 localPoint.y() - m_innerText->renderer()->yPos() - (m_innerBlock.get() ? m_innerBlock->renderer()->yPos() : 0))); 626 608 627 return true; 609 628 } 629 610 630 return false; 611 631 }
Note: See TracChangeset
for help on using the changeset viewer.