| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2008, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2008, 2009, 2010 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1294 // Treat a collapsed selection like no selection. | 1294 // Treat a collapsed selection like no selection. |
| 1295 if (!isRange()) | 1295 if (!isRange()) |
| 1296 return false; | 1296 return false; |
| 1297 if (!document->layoutView()) | 1297 if (!document->layoutView()) |
| 1298 return false; | 1298 return false; |
| 1299 | 1299 |
| 1300 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active); | 1300 HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active); |
| 1301 HitTestResult result(point); | 1301 HitTestResult result(point); |
| 1302 document->layoutView()->hitTest(request, result); | 1302 document->layoutView()->hitTest(request, result); |
| 1303 Node* innerNode = result.innerNode(); | 1303 Node* innerNode = result.innerNode(); |
| 1304 if (!innerNode || !innerNode->renderer()) | 1304 if (!innerNode || !innerNode->layoutObject()) |
| 1305 return false; | 1305 return false; |
| 1306 | 1306 |
| 1307 VisiblePosition visiblePos(innerNode->renderer()->positionForPoint(result.lo
calPoint())); | 1307 VisiblePosition visiblePos(innerNode->layoutObject()->positionForPoint(resul
t.localPoint())); |
| 1308 if (visiblePos.isNull()) | 1308 if (visiblePos.isNull()) |
| 1309 return false; | 1309 return false; |
| 1310 | 1310 |
| 1311 if (m_selection.visibleStart().isNull() || m_selection.visibleEnd().isNull()
) | 1311 if (m_selection.visibleStart().isNull() || m_selection.visibleEnd().isNull()
) |
| 1312 return false; | 1312 return false; |
| 1313 | 1313 |
| 1314 Position start(m_selection.visibleStart().deepEquivalent()); | 1314 Position start(m_selection.visibleStart().deepEquivalent()); |
| 1315 Position end(m_selection.visibleEnd().deepEquivalent()); | 1315 Position end(m_selection.visibleEnd().deepEquivalent()); |
| 1316 Position p(visiblePos.deepEquivalent()); | 1316 Position p(visiblePos.deepEquivalent()); |
| 1317 | 1317 |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1611 if (HTMLTextFormControlElement* textControl = enclosingTextFormControl(start
())) | 1611 if (HTMLTextFormControlElement* textControl = enclosingTextFormControl(start
())) |
| 1612 textControl->selectionChanged(userTriggered == UserTriggered); | 1612 textControl->selectionChanged(userTriggered == UserTriggered); |
| 1613 } | 1613 } |
| 1614 | 1614 |
| 1615 // Helper function that tells whether a particular node is an element that has a
n entire | 1615 // Helper function that tells whether a particular node is an element that has a
n entire |
| 1616 // LocalFrame and FrameView, a <frame>, <iframe>, or <object>. | 1616 // LocalFrame and FrameView, a <frame>, <iframe>, or <object>. |
| 1617 static bool isFrameElement(const Node* n) | 1617 static bool isFrameElement(const Node* n) |
| 1618 { | 1618 { |
| 1619 if (!n) | 1619 if (!n) |
| 1620 return false; | 1620 return false; |
| 1621 LayoutObject* renderer = n->renderer(); | 1621 LayoutObject* renderer = n->layoutObject(); |
| 1622 if (!renderer || !renderer->isLayoutPart()) | 1622 if (!renderer || !renderer->isLayoutPart()) |
| 1623 return false; | 1623 return false; |
| 1624 Widget* widget = toLayoutPart(renderer)->widget(); | 1624 Widget* widget = toLayoutPart(renderer)->widget(); |
| 1625 return widget && widget->isFrameView(); | 1625 return widget && widget->isFrameView(); |
| 1626 } | 1626 } |
| 1627 | 1627 |
| 1628 void FrameSelection::setFocusedNodeIfNeeded() | 1628 void FrameSelection::setFocusedNodeIfNeeded() |
| 1629 { | 1629 { |
| 1630 if (isNone() || !isFocused()) | 1630 if (isNone() || !isFocused()) |
| 1631 return; | 1631 return; |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1753 case CaretSelection: | 1753 case CaretSelection: |
| 1754 rect = LayoutRect(absoluteCaretBounds()); | 1754 rect = LayoutRect(absoluteCaretBounds()); |
| 1755 break; | 1755 break; |
| 1756 case RangeSelection: | 1756 case RangeSelection: |
| 1757 rect = LayoutRect(revealExtentOption == RevealExtent ? VisiblePosition(e
xtent()).absoluteCaretBounds() : enclosingIntRect(unclippedBounds())); | 1757 rect = LayoutRect(revealExtentOption == RevealExtent ? VisiblePosition(e
xtent()).absoluteCaretBounds() : enclosingIntRect(unclippedBounds())); |
| 1758 break; | 1758 break; |
| 1759 } | 1759 } |
| 1760 | 1760 |
| 1761 Position start = this->start(); | 1761 Position start = this->start(); |
| 1762 ASSERT(start.deprecatedNode()); | 1762 ASSERT(start.deprecatedNode()); |
| 1763 if (start.deprecatedNode() && start.deprecatedNode()->renderer()) { | 1763 if (start.deprecatedNode() && start.deprecatedNode()->layoutObject()) { |
| 1764 // FIXME: This code only handles scrolling the startContainer's layer, b
ut | 1764 // FIXME: This code only handles scrolling the startContainer's layer, b
ut |
| 1765 // the selection rect could intersect more than just that. | 1765 // the selection rect could intersect more than just that. |
| 1766 // See <rdar://problem/4799899>. | 1766 // See <rdar://problem/4799899>. |
| 1767 if (start.deprecatedNode()->renderer()->scrollRectToVisible(rect, alignm
ent, alignment)) | 1767 if (start.deprecatedNode()->layoutObject()->scrollRectToVisible(rect, al
ignment, alignment)) |
| 1768 updateAppearance(); | 1768 updateAppearance(); |
| 1769 } | 1769 } |
| 1770 } | 1770 } |
| 1771 | 1771 |
| 1772 void FrameSelection::setSelectionFromNone() | 1772 void FrameSelection::setSelectionFromNone() |
| 1773 { | 1773 { |
| 1774 // Put a caret inside the body if the entire frame is editable (either the | 1774 // Put a caret inside the body if the entire frame is editable (either the |
| 1775 // entire WebView is editable or designMode is on for this document). | 1775 // entire WebView is editable or designMode is on for this document). |
| 1776 | 1776 |
| 1777 Document* document = m_frame->document(); | 1777 Document* document = m_frame->document(); |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1943 sel.showTreeForThis(); | 1943 sel.showTreeForThis(); |
| 1944 } | 1944 } |
| 1945 | 1945 |
| 1946 void showTree(const blink::FrameSelection* sel) | 1946 void showTree(const blink::FrameSelection* sel) |
| 1947 { | 1947 { |
| 1948 if (sel) | 1948 if (sel) |
| 1949 sel->showTreeForThis(); | 1949 sel->showTreeForThis(); |
| 1950 } | 1950 } |
| 1951 | 1951 |
| 1952 #endif | 1952 #endif |
| OLD | NEW |