diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/WebCore/page/DOMSelection.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebCore/page/DOMSelection.cpp')
-rw-r--r-- | Source/WebCore/page/DOMSelection.cpp | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/Source/WebCore/page/DOMSelection.cpp b/Source/WebCore/page/DOMSelection.cpp index 062443ac4..79c8a1fd0 100644 --- a/Source/WebCore/page/DOMSelection.cpp +++ b/Source/WebCore/page/DOMSelection.cpp @@ -397,11 +397,10 @@ void DOMSelection::addRange(Range* r) } RefPtr<Range> range = selection->selection().toNormalizedRange(); - ExceptionCode ec = 0; - if (r->compareBoundaryPoints(Range::START_TO_START, range.get(), ec) == -1) { + if (r->compareBoundaryPoints(Range::START_TO_START, range.get(), IGNORE_EXCEPTION) == -1) { // We don't support discontiguous selection. We don't do anything if r and range don't intersect. - if (r->compareBoundaryPoints(Range::START_TO_END, range.get(), ec) > -1) { - if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), ec) == -1) + if (r->compareBoundaryPoints(Range::START_TO_END, range.get(), IGNORE_EXCEPTION) > -1) { + if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), IGNORE_EXCEPTION) == -1) // The original range and r intersect. selection->setSelection(VisibleSelection(r->startPosition(), range->endPosition(), DOWNSTREAM)); else @@ -410,8 +409,9 @@ void DOMSelection::addRange(Range* r) } } else { // We don't support discontiguous selection. We don't do anything if r and range don't intersect. + ExceptionCode ec = 0; if (r->compareBoundaryPoints(Range::END_TO_START, range.get(), ec) < 1 && !ec) { - if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), ec) == -1) + if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), IGNORE_EXCEPTION) == -1) // The original range contains r. selection->setSelection(VisibleSelection(range.get())); else @@ -438,15 +438,12 @@ void DOMSelection::deleteFromDocument() if (!selectedRange) return; - ExceptionCode ec = 0; - selectedRange->deleteContents(ec); - ASSERT(!ec); + selectedRange->deleteContents(ASSERT_NO_EXCEPTION); - setBaseAndExtent(selectedRange->startContainer(ec), selectedRange->startOffset(ec), selectedRange->startContainer(ec), selectedRange->startOffset(ec), ec); - ASSERT(!ec); + setBaseAndExtent(selectedRange->startContainer(ASSERT_NO_EXCEPTION), selectedRange->startOffset(), selectedRange->startContainer(), selectedRange->startOffset(), ASSERT_NO_EXCEPTION); } -bool DOMSelection::containsNode(const Node* n, bool allowPartial) const +bool DOMSelection::containsNode(Node* n, bool allowPartial) const { if (!m_frame) return false; @@ -456,27 +453,28 @@ bool DOMSelection::containsNode(const Node* n, bool allowPartial) const if (!n || m_frame->document() != n->document() || selection->isNone()) return false; - ContainerNode* parentNode = n->parentNode(); - unsigned nodeIndex = n->nodeIndex(); + RefPtr<Node> node = n; RefPtr<Range> selectedRange = selection->selection().toNormalizedRange(); - if (!parentNode) + ContainerNode* parentNode = node->parentNode(); + if (!parentNode || !parentNode->inDocument()) return false; + unsigned nodeIndex = node->nodeIndex(); ExceptionCode ec = 0; - bool nodeFullySelected = Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->startContainer(ec), selectedRange->startOffset(ec), ec) >= 0 && !ec - && Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->endContainer(ec), selectedRange->endOffset(ec), ec) <= 0 && !ec; + bool nodeFullySelected = Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->startContainer(), selectedRange->startOffset(), ec) >= 0 && !ec + && Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->endContainer(), selectedRange->endOffset(), ec) <= 0 && !ec; ASSERT(!ec); if (nodeFullySelected) return true; - bool nodeFullyUnselected = (Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->endContainer(ec), selectedRange->endOffset(ec), ec) > 0 && !ec) - || (Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->startContainer(ec), selectedRange->startOffset(ec), ec) < 0 && !ec); + bool nodeFullyUnselected = (Range::compareBoundaryPoints(parentNode, nodeIndex, selectedRange->endContainer(), selectedRange->endOffset(), ec) > 0 && !ec) + || (Range::compareBoundaryPoints(parentNode, nodeIndex + 1, selectedRange->startContainer(), selectedRange->startOffset(), ec) < 0 && !ec); ASSERT(!ec); if (nodeFullyUnselected) return false; - return allowPartial || n->isTextNode(); + return allowPartial || node->isTextNode(); } void DOMSelection::selectAllChildren(Node* n, ExceptionCode& ec) |