First pass at s/Selection/VisibleSelection
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@40793 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 937e314..385b85b 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,251 @@
+2009-02-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Dave Hyatt.
+
+ Rename Selection to VisibleSelection to allow us to separate
+ the selections the user works with from the ones used by
+ the JS editing APIs.
+ https://bugs.webkit.org/show_bug.cgi?id=23852
+
+ No functional changes, thus no tests.
+
+ * WebCore.base.exp:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/Element.cpp:
+ (WebCore::Element::updateFocusAppearance):
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::updateStartEnd):
+ (WebCore::ApplyStyleCommand::surroundNodeRangeWithElement):
+ * editing/BreakBlockquoteCommand.cpp:
+ (WebCore::BreakBlockquoteCommand::doApply):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::inputText):
+ (WebCore::CompositeEditCommand::deleteSelection):
+ (WebCore::CompositeEditCommand::rebalanceWhitespace):
+ (WebCore::CompositeEditCommand::pushAnchorElementDown):
+ (WebCore::CompositeEditCommand::pushPartiallySelectedAnchorElementsDown):
+ (WebCore::CompositeEditCommand::moveParagraphs):
+ (WebCore::CompositeEditCommand::breakOutOfEmptyListItem):
+ (WebCore::CompositeEditCommand::breakOutOfEmptyMailBlockquotedParagraph):
+ * editing/CompositeEditCommand.h:
+ * editing/CreateLinkCommand.cpp:
+ (WebCore::CreateLinkCommand::doApply):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::enclosingDeletableElement):
+ (WebCore::DeleteButtonController::respondToChangedSelection):
+ * editing/DeleteButtonController.h:
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::DeleteSelectionCommand):
+ (WebCore::DeleteSelectionCommand::clearTransientState):
+ (WebCore::DeleteSelectionCommand::doApply):
+ * editing/DeleteSelectionCommand.h:
+ (WebCore::DeleteSelectionCommand::create):
+ * editing/EditCommand.cpp:
+ (WebCore::EditCommand::setStartingSelection):
+ (WebCore::EditCommand::setEndingSelection):
+ * editing/EditCommand.h:
+ (WebCore::EditCommand::startingSelection):
+ (WebCore::EditCommand::endingSelection):
+ * editing/Editor.cpp:
+ (WebCore::Editor::selectionForCommand):
+ (WebCore::Editor::respondToChangedSelection):
+ (WebCore::Editor::respondToChangedContents):
+ (WebCore::Editor::applyStyle):
+ (WebCore::Editor::applyParagraphStyle):
+ (WebCore::Editor::appliedEditing):
+ (WebCore::Editor::unappliedEditing):
+ (WebCore::Editor::reappliedEditing):
+ (WebCore::Editor::insertTextWithoutSendingTextEvent):
+ (WebCore::Editor::selectComposition):
+ (WebCore::Editor::confirmComposition):
+ (WebCore::Editor::advanceToNextMisspelling):
+ (WebCore::Editor::markMisspellingsAfterTypingToPosition):
+ (WebCore::markMisspellingsOrBadGrammar):
+ (WebCore::Editor::markMisspellings):
+ (WebCore::Editor::markBadGrammar):
+ (WebCore::Editor::rangeForPoint):
+ (WebCore::Editor::transpose):
+ * editing/Editor.h:
+ * editing/EditorCommand.cpp:
+ (WebCore::expandSelectionToGranularity):
+ (WebCore::executeSwapWithMark):
+ (WebCore::enabledVisibleSelection):
+ (WebCore::enabledVisibleSelectionAndMark):
+ (WebCore::enableCaretInEditableText):
+ * editing/FormatBlockCommand.cpp:
+ (WebCore::FormatBlockCommand::modifyRange):
+ (WebCore::FormatBlockCommand::doApply):
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::IndentOutdentCommand::indentRegion):
+ (WebCore::IndentOutdentCommand::outdentRegion):
+ (WebCore::IndentOutdentCommand::doApply):
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+ * editing/InsertListCommand.cpp:
+ (WebCore::InsertListCommand::modifyRange):
+ (WebCore::InsertListCommand::doApply):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * editing/InsertTextCommand.cpp:
+ (WebCore::InsertTextCommand::performTrivialReplace):
+ (WebCore::InsertTextCommand::input):
+ * editing/ModifySelectionListLevel.cpp:
+ (WebCore::getStartEndListChildren):
+ (WebCore::canIncreaseListLevel):
+ (WebCore::canDecreaseListLevel):
+ * editing/MoveSelectionCommand.cpp:
+ (WebCore::MoveSelectionCommand::doApply):
+ * editing/RemoveFormatCommand.cpp:
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::ReplacementFragment):
+ (WebCore::ReplaceSelectionCommand::doApply):
+ (WebCore::ReplaceSelectionCommand::completeHTMLReplacement):
+ * editing/Selection.cpp: Removed.
+ * editing/Selection.h: Removed.
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::moveTo):
+ (WebCore::SelectionController::setSelection):
+ (WebCore::SelectionController::nodeWillBeRemoved):
+ (WebCore::SelectionController::clear):
+ (WebCore::SelectionController::setBase):
+ (WebCore::SelectionController::setExtent):
+ (WebCore::SelectionController::selectFrameElementInParentIfFullySelected):
+ (WebCore::SelectionController::selectAll):
+ (WebCore::SelectionController::setSelectedRange):
+ * editing/SelectionController.h:
+ (WebCore::SelectionController::selection):
+ (WebCore::SelectionController::selectionType):
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::insertText):
+ (WebCore::TypingCommand::deleteKeyPressed):
+ (WebCore::TypingCommand::forwardDeleteKeyPressed):
+ * editing/TypingCommand.h:
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::honorEditableBoundaryAtOrBefore):
+ (WebCore::VisiblePosition::honorEditableBoundaryAtOrAfter):
+ * editing/VisibleSelection.cpp: Added.
+ (WebCore::VisibleSelection::VisibleSelection):
+ (WebCore::VisibleSelection::selectionFromContentsOfNode):
+ (WebCore::VisibleSelection::setBase):
+ (WebCore::VisibleSelection::setExtent):
+ (WebCore::VisibleSelection::firstRange):
+ (WebCore::VisibleSelection::toNormalizedRange):
+ (WebCore::VisibleSelection::expandUsingGranularity):
+ (WebCore::makeSearchRange):
+ (WebCore::VisibleSelection::appendTrailingWhitespace):
+ (WebCore::VisibleSelection::setBaseAndExtentToDeepEquivalents):
+ (WebCore::VisibleSelection::setStartAndEndFromBaseAndExtentRespectingGranularity):
+ (WebCore::VisibleSelection::updateSelectionType):
+ (WebCore::VisibleSelection::validate):
+ (WebCore::VisibleSelection::setWithoutValidation):
+ (WebCore::VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries):
+ (WebCore::VisibleSelection::isContentEditable):
+ (WebCore::VisibleSelection::isContentRichlyEditable):
+ (WebCore::VisibleSelection::rootEditableElement):
+ (WebCore::VisibleSelection::shadowTreeRootNode):
+ (WebCore::VisibleSelection::debugPosition):
+ (WebCore::VisibleSelection::formatForDebugger):
+ (WebCore::VisibleSelection::showTreeForThis):
+ (showTree):
+ * editing/VisibleSelection.h: Added.
+ (WebCore::VisibleSelection::):
+ (WebCore::VisibleSelection::selectionType):
+ (WebCore::VisibleSelection::setAffinity):
+ (WebCore::VisibleSelection::affinity):
+ (WebCore::VisibleSelection::base):
+ (WebCore::VisibleSelection::extent):
+ (WebCore::VisibleSelection::start):
+ (WebCore::VisibleSelection::end):
+ (WebCore::VisibleSelection::visibleStart):
+ (WebCore::VisibleSelection::visibleEnd):
+ (WebCore::VisibleSelection::isNone):
+ (WebCore::VisibleSelection::isCaret):
+ (WebCore::VisibleSelection::isRange):
+ (WebCore::VisibleSelection::isCaretOrRange):
+ (WebCore::VisibleSelection::isBaseFirst):
+ (WebCore::VisibleSelection::granularity):
+ (WebCore::operator==):
+ (WebCore::operator!=):
+ * editing/htmlediting.cpp:
+ (WebCore::selectionForParagraphIteration):
+ (WebCore::avoidIntersectionWithNode):
+ * editing/htmlediting.h:
+ * editing/markup.cpp:
+ (WebCore::createMarkup):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::selection):
+ * html/HTMLInputElement.h:
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::selection):
+ * html/HTMLTextAreaElement.h:
+ * page/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::selection):
+ (WebCore::AccessibilityObject::visiblePositionRangeForUnorderedPositions):
+ * page/AccessibilityObject.h:
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::selection):
+ (WebCore::AccessibilityRenderObject::setSelectedTextRange):
+ (WebCore::AccessibilityRenderObject::visiblePositionRangeForLine):
+ (WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange):
+ (WebCore::AccessibilityRenderObject::doAXRangeForLine):
+ * page/AccessibilityRenderObject.h:
+ * page/DOMSelection.cpp:
+ (WebCore::DOMSelection::anchorNode):
+ (WebCore::DOMSelection::anchorOffset):
+ (WebCore::DOMSelection::focusNode):
+ (WebCore::DOMSelection::focusOffset):
+ (WebCore::DOMSelection::collapseToEnd):
+ (WebCore::DOMSelection::collapseToStart):
+ (WebCore::DOMSelection::getRangeAt):
+ (WebCore::DOMSelection::addRange):
+ * page/DOMSelection.h:
+ * page/DragController.cpp:
+ (WebCore::DragController::tryDocumentDrag):
+ (WebCore::setSelectionToDragCaret):
+ (WebCore::DragController::concludeEditDrag):
+ (WebCore::prepareClipboardForImageDrag):
+ (WebCore::DragController::startDrag):
+ (WebCore::DragController::placeDragCaret):
+ * page/EditorClient.h:
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::selectClosestWordFromMouseEvent):
+ (WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent):
+ (WebCore::EventHandler::handleMousePressEventTripleClick):
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+ (WebCore::EventHandler::updateSelectionForMouseDrag):
+ (WebCore::EventHandler::handleMouseReleaseEvent):
+ * page/Frame.cpp:
+ (WebCore::Frame::mark):
+ (WebCore::Frame::setMark):
+ (WebCore::Frame::selectionLayoutChanged):
+ (WebCore::Frame::shouldChangeSelection):
+ (WebCore::Frame::shouldDeleteSelection):
+ (WebCore::Frame::revealSelection):
+ (WebCore::Frame::setSelectionFromNone):
+ (WebCore::Frame::findString):
+ (WebCore::Frame::respondToChangedSelection):
+ * page/Frame.h:
+ * page/Page.cpp:
+ (WebCore::Page::selection):
+ * page/Page.h:
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper textMarkerRangeForSelection]):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::fillInlineSelectionGaps):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::setSelectionRange):
+ (WebCore::RenderTextControl::selection):
+ * rendering/RenderTextControl.h:
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::writeSelection):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::fillLineSelectionGap):
+ * svg/SVGTextContentElement.cpp:
+ (WebCore::SVGTextContentElement::selectSubString):
+
2009-02-09 Dimitri Glazkov <dglazkov@chromium.org>
Reviewed by Dave Hyatt.
diff --git a/WebCore/WebCore.base.exp b/WebCore/WebCore.base.exp
index 08a866b..1e2808c 100644
--- a/WebCore/WebCore.base.exp
+++ b/WebCore/WebCore.base.exp
@@ -370,6 +370,8 @@
__ZN7WebCore16NavigationActionC1Ev
__ZN7WebCore16ScriptController10initScriptEv
__ZN7WebCore16ScriptController18windowScriptObjectEv
+__ZN7WebCore16VisibleSelectionC1EPKNS_5RangeENS_9EAffinityE
+__ZN7WebCore16VisibleSelectionC1ERKNS_15VisiblePositionES3_
__ZN7WebCore16colorFromNSColorEP7NSColor
__ZN7WebCore16createFullMarkupEPKNS_4NodeE
__ZN7WebCore16createFullMarkupEPKNS_5RangeE
@@ -398,7 +400,7 @@
__ZN7WebCore19InspectorController7inspectEPNS_4NodeE
__ZN7WebCore19InspectorController9showPanelENS0_13SpecialPanelsE
__ZN7WebCore19SelectionController10setFocusedEb
-__ZN7WebCore19SelectionController12setSelectionERKNS_9SelectionEbbb
+__ZN7WebCore19SelectionController12setSelectionERKNS_16VisibleSelectionEbbb
__ZN7WebCore19SelectionController16setSelectedRangeEPNS_5RangeENS_9EAffinityEb
__ZN7WebCore19SelectionController5clearEv
__ZN7WebCore19SelectionController6modifyENS0_11EAlterationENS0_10EDirectionENS_15TextGranularityEb
@@ -680,9 +682,6 @@
__ZN7WebCore9PageGroup17closeLocalStorageEv
__ZN7WebCore9PageGroup21removeAllVisitedLinksEv
__ZN7WebCore9PageGroup26setShouldTrackVisitedLinksEb
-__ZN7WebCore9Selection22expandUsingGranularityENS_15TextGranularityE
-__ZN7WebCore9SelectionC1EPKNS_5RangeENS_9EAffinityE
-__ZN7WebCore9SelectionC1ERKNS_15VisiblePositionES3_
__ZN7WebCore9TimerBase4stopEv
__ZN7WebCore9TimerBase5startEdd
__ZN7WebCore9TimerBaseC2Ev
@@ -788,6 +787,10 @@
__ZNK7WebCore15VisiblePosition8previousEb
__ZNK7WebCore16HTMLInputElement12autoCompleteEv
__ZNK7WebCore16ResourceResponse13nsURLResponseEv
+__ZNK7WebCore16VisibleSelection17isContentEditableEv
+__ZNK7WebCore16VisibleSelection17toNormalizedRangeEv
+__ZNK7WebCore16VisibleSelection19rootEditableElementEv
+__ZNK7WebCore16VisibleSelection23isContentRichlyEditableEv
__ZNK7WebCore17ResourceErrorBase8lazyInitEv
__ZNK7WebCore19AnimationController24numberOfActiveAnimationsEv
__ZNK7WebCore19InspectorController17drawNodeHighlightERNS_15GraphicsContextE
@@ -900,10 +903,6 @@
__ZNK7WebCore9FrameTree5childERKNS_12AtomicStringE
__ZNK7WebCore9FrameTree6parentEb
__ZNK7WebCore9FrameView11needsLayoutEv
-__ZNK7WebCore9Selection17isContentEditableEv
-__ZNK7WebCore9Selection17toNormalizedRangeEv
-__ZNK7WebCore9Selection19rootEditableElementEv
-__ZNK7WebCore9Selection23isContentRichlyEditableEv
__ZNK7WebCore9TimerBase8isActiveEv
__ZTVN7WebCore12ChromeClientE
__ZTVN7WebCore17FileChooserClientE
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 8ccde29..7a35c66 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -665,7 +665,6 @@
editing/RemoveNodePreservingChildrenCommand.cpp \
editing/ReplaceSelectionCommand.cpp \
editing/SelectionController.cpp \
- editing/Selection.cpp \
editing/SetNodeAttributeCommand.cpp \
editing/SmartReplace.cpp \
editing/SmartReplaceICU.cpp \
@@ -676,6 +675,7 @@
editing/TypingCommand.cpp \
editing/UnlinkCommand.cpp \
editing/VisiblePosition.cpp \
+ editing/VisibleSelection.cpp \
editing/visible_units.cpp \
editing/WrapContentsInDummySpanCommand.cpp \
history/BackForwardList.cpp \
diff --git a/WebCore/WebCore.scons b/WebCore/WebCore.scons
index 4962c5d..376dc0b 100644
--- a/WebCore/WebCore.scons
+++ b/WebCore/WebCore.scons
@@ -180,7 +180,6 @@
'editing/RemoveNodeCommand.cpp',
'editing/RemoveNodePreservingChildrenCommand.cpp',
'editing/ReplaceSelectionCommand.cpp',
- 'editing/Selection.cpp',
'editing/SelectionController.cpp',
'editing/SetNodeAttributeCommand.cpp',
'editing/SmartReplace.cpp',
@@ -194,6 +193,7 @@
'editing/UnlinkCommand.cpp',
'editing/visible_units.cpp',
'editing/VisiblePosition.cpp',
+ 'editing/VisibleSelection.cpp',
'editing/WrapContentsInDummySpanCommand.cpp',
]
sources['history'] = [
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index 9538a7e..a6942d4 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -12518,14 +12518,6 @@
>
</File>
<File
- RelativePath="..\editing\Selection.cpp"
- >
- </File>
- <File
- RelativePath="..\editing\Selection.h"
- >
- </File>
- <File
RelativePath="..\editing\SelectionController.cpp"
>
</File>
@@ -12626,6 +12618,14 @@
>
</File>
<File
+ RelativePath="..\editing\VisibleSelection.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\editing\VisibleSelection.h"
+ >
+ </File>
+ <File
RelativePath="..\editing\WrapContentsInDummySpanCommand.cpp"
>
</File>
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index af865ab..16eb408 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -1892,8 +1892,6 @@
93309E07099E64920056E581 /* RemoveNodePreservingChildrenCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DB8099E64910056E581 /* RemoveNodePreservingChildrenCommand.h */; };
93309E09099E64920056E581 /* ReplaceSelectionCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DBA099E64910056E581 /* ReplaceSelectionCommand.cpp */; };
93309E0A099E64920056E581 /* ReplaceSelectionCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DBB099E64910056E581 /* ReplaceSelectionCommand.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 93309E0B099E64920056E581 /* Selection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DBC099E64910056E581 /* Selection.cpp */; };
- 93309E0C099E64920056E581 /* Selection.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DBD099E64910056E581 /* Selection.h */; settings = {ATTRIBUTES = (Private, ); }; };
93309E0D099E64920056E581 /* SelectionController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DBE099E64910056E581 /* SelectionController.cpp */; };
93309E0E099E64920056E581 /* SelectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 93309DBF099E64910056E581 /* SelectionController.h */; settings = {ATTRIBUTES = (Private, ); }; };
93309E0F099E64920056E581 /* SetNodeAttributeCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93309DC0099E64910056E581 /* SetNodeAttributeCommand.cpp */; };
@@ -2501,6 +2499,8 @@
A871DFE30A15376B00B12A68 /* RenderReplaced.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DFDF0A15376B00B12A68 /* RenderReplaced.h */; settings = {ATTRIBUTES = (Private, ); }; };
A871DFE40A15376B00B12A68 /* RenderWidget.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DFE00A15376B00B12A68 /* RenderWidget.h */; settings = {ATTRIBUTES = (Private, ); }; };
A871DFE50A15376B00B12A68 /* RenderWidget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DFE10A15376B00B12A68 /* RenderWidget.cpp */; };
+ A883DF270F3D045D00F19BF6 /* VisibleSelection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A883DF250F3D045D00F19BF6 /* VisibleSelection.cpp */; };
+ A883DF280F3D045D00F19BF6 /* VisibleSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = A883DF260F3D045D00F19BF6 /* VisibleSelection.h */; settings = {ATTRIBUTES = (Private, ); }; };
A88AD52F09524B92001DD196 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A85D7A2F0879EBA9006A9172 /* QuartzCore.framework */; };
A88DD4870B4629A300C02990 /* PathTraversalState.h in Headers */ = {isa = PBXBuildFile; fileRef = A88DD4860B4629A300C02990 /* PathTraversalState.h */; };
A88DD4890B4629B000C02990 /* PathTraversalState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A88DD4880B4629B000C02990 /* PathTraversalState.cpp */; };
@@ -6789,8 +6789,6 @@
93309DB8099E64910056E581 /* RemoveNodePreservingChildrenCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoveNodePreservingChildrenCommand.h; sourceTree = "<group>"; };
93309DBA099E64910056E581 /* ReplaceSelectionCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReplaceSelectionCommand.cpp; sourceTree = "<group>"; };
93309DBB099E64910056E581 /* ReplaceSelectionCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReplaceSelectionCommand.h; sourceTree = "<group>"; };
- 93309DBC099E64910056E581 /* Selection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Selection.cpp; sourceTree = "<group>"; };
- 93309DBD099E64910056E581 /* Selection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Selection.h; sourceTree = "<group>"; };
93309DBE099E64910056E581 /* SelectionController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectionController.cpp; sourceTree = "<group>"; };
93309DBF099E64910056E581 /* SelectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectionController.h; sourceTree = "<group>"; };
93309DC0099E64910056E581 /* SetNodeAttributeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SetNodeAttributeCommand.cpp; sourceTree = "<group>"; };
@@ -7242,6 +7240,8 @@
A871DFDF0A15376B00B12A68 /* RenderReplaced.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderReplaced.h; sourceTree = "<group>"; };
A871DFE00A15376B00B12A68 /* RenderWidget.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderWidget.h; sourceTree = "<group>"; };
A871DFE10A15376B00B12A68 /* RenderWidget.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderWidget.cpp; sourceTree = "<group>"; };
+ A883DF250F3D045D00F19BF6 /* VisibleSelection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VisibleSelection.cpp; sourceTree = "<group>"; };
+ A883DF260F3D045D00F19BF6 /* VisibleSelection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisibleSelection.h; sourceTree = "<group>"; };
A88DD4860B4629A300C02990 /* PathTraversalState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PathTraversalState.h; sourceTree = "<group>"; };
A88DD4880B4629B000C02990 /* PathTraversalState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PathTraversalState.cpp; sourceTree = "<group>"; };
A88FE3330E5EEE87008D8C0F /* GraphicsContextPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsContextPrivate.h; sourceTree = "<group>"; };
@@ -11381,8 +11381,6 @@
93309DB8099E64910056E581 /* RemoveNodePreservingChildrenCommand.h */,
93309DBA099E64910056E581 /* ReplaceSelectionCommand.cpp */,
93309DBB099E64910056E581 /* ReplaceSelectionCommand.h */,
- 93309DBC099E64910056E581 /* Selection.cpp */,
- 93309DBD099E64910056E581 /* Selection.h */,
93309DBE099E64910056E581 /* SelectionController.cpp */,
93309DBF099E64910056E581 /* SelectionController.h */,
93309DC0099E64910056E581 /* SetNodeAttributeCommand.cpp */,
@@ -11406,6 +11404,8 @@
D086FE9609D53AAB005BC74D /* UnlinkCommand.h */,
93309DD0099E64910056E581 /* VisiblePosition.cpp */,
93309DD1099E64910056E581 /* VisiblePosition.h */,
+ A883DF250F3D045D00F19BF6 /* VisibleSelection.cpp */,
+ A883DF260F3D045D00F19BF6 /* VisibleSelection.h */,
93309DD4099E64910056E581 /* WrapContentsInDummySpanCommand.cpp */,
93309DD5099E64910056E581 /* WrapContentsInDummySpanCommand.h */,
93309D98099E64910056E581 /* htmlediting.cpp */,
@@ -16452,7 +16452,6 @@
BCD0E0FC0E972C3500265DEA /* SecurityOriginHash.h in Headers */,
371F4FFC0D25E7F300ECE0D5 /* SegmentedFontData.h in Headers */,
B2C3DA2F0D006C1D00EF6F26 /* SegmentedString.h in Headers */,
- 93309E0C099E64920056E581 /* Selection.h in Headers */,
93309E0E099E64920056E581 /* SelectionController.h in Headers */,
BC7FA6810D1F167900DB22A9 /* SelectorNodeList.h in Headers */,
51E0BB230DA572A600A9E417 /* SessionStorage.h in Headers */,
@@ -16723,6 +16722,7 @@
BC96DB430F3A880E00573CB3 /* RenderBoxModelObject.h in Headers */,
2E3AC84E0F3D06D100633F04 /* WorkerContextProxy.h in Headers */,
2E3AC8500F3D06F700633F04 /* WorkerObjectProxy.h in Headers */,
+ A883DF280F3D045D00F19BF6 /* VisibleSelection.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -18461,7 +18461,6 @@
BCD0E0FA0E972C3500265DEA /* SecurityOrigin.cpp in Sources */,
371F4FFD0D25E7F300ECE0D5 /* SegmentedFontData.cpp in Sources */,
B2C3DA2E0D006C1D00EF6F26 /* SegmentedString.cpp in Sources */,
- 93309E0B099E64920056E581 /* Selection.cpp in Sources */,
93309E0D099E64920056E581 /* SelectionController.cpp in Sources */,
4A8C96EB0BE69032004EEFF0 /* SelectionControllerMac.mm in Sources */,
BC7FA6820D1F167900DB22A9 /* SelectorNodeList.cpp in Sources */,
@@ -18703,6 +18702,7 @@
1A569D240D7E2B82007C3983 /* runtime_root.cpp in Sources */,
93309E1D099E64920056E581 /* visible_units.cpp in Sources */,
BC96DB460F3A882200573CB3 /* RenderBoxModelObject.cpp in Sources */,
+ A883DF270F3D045D00F19BF6 /* VisibleSelection.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/WebCore/dom/Element.cpp b/WebCore/dom/Element.cpp
index 168ab2b..2742130 100644
--- a/WebCore/dom/Element.cpp
+++ b/WebCore/dom/Element.cpp
@@ -1096,7 +1096,7 @@
return;
// FIXME: We should restore the previous selection if there is one.
- Selection newSelection = hasTagName(htmlTag) || hasTagName(bodyTag) ? Selection(Position(this, 0), DOWNSTREAM) : Selection::selectionFromContentsOfNode(this);
+ VisibleSelection newSelection = hasTagName(htmlTag) || hasTagName(bodyTag) ? VisibleSelection(Position(this, 0), DOWNSTREAM) : VisibleSelection::selectionFromContentsOfNode(this);
if (frame->shouldChangeSelection(newSelection)) {
frame->selection()->setSelection(newSelection);
diff --git a/WebCore/editing/ApplyStyleCommand.cpp b/WebCore/editing/ApplyStyleCommand.cpp
index fbd8fe4..d888aed 100644
--- a/WebCore/editing/ApplyStyleCommand.cpp
+++ b/WebCore/editing/ApplyStyleCommand.cpp
@@ -342,7 +342,7 @@
if (!m_useEndingSelection && (newStart != m_start || newEnd != m_end))
m_useEndingSelection = true;
- setEndingSelection(Selection(newStart, newEnd, VP_DEFAULT_AFFINITY));
+ setEndingSelection(VisibleSelection(newStart, newEnd, VP_DEFAULT_AFFINITY));
m_start = newStart;
m_end = newEnd;
}
@@ -1480,7 +1480,7 @@
}
// FIXME: We should probably call updateStartEnd if the start or end was in the node
// range so that the endingSelection() is canonicalized. See the comments at the end of
- // Selection::validate().
+ // VisibleSelection::validate().
}
void ApplyStyleCommand::addBlockStyle(const StyleChange& styleChange, HTMLElement* block)
diff --git a/WebCore/editing/BreakBlockquoteCommand.cpp b/WebCore/editing/BreakBlockquoteCommand.cpp
index 76a0890..44a44c5 100644
--- a/WebCore/editing/BreakBlockquoteCommand.cpp
+++ b/WebCore/editing/BreakBlockquoteCommand.cpp
@@ -72,7 +72,7 @@
insertNodeAfter(breakNode.get(), topBlockquote);
if (isLastVisiblePositionInNode(visiblePos, topBlockquote)) {
- setEndingSelection(Selection(Position(breakNode.get(), 0), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(Position(breakNode.get(), 0), DOWNSTREAM));
rebalanceWhitespace();
return;
}
@@ -97,7 +97,7 @@
// If there's nothing inside topBlockquote to move, we're finished.
if (!startNode->isDescendantOf(topBlockquote)) {
- setEndingSelection(Selection(VisiblePosition(Position(startNode, 0))));
+ setEndingSelection(VisibleSelection(VisiblePosition(Position(startNode, 0))));
return;
}
@@ -168,7 +168,7 @@
addBlockPlaceholderIfNeeded(clonedBlockquote.get());
// Put the selection right before the break.
- setEndingSelection(Selection(Position(breakNode.get(), 0), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(Position(breakNode.get(), 0), DOWNSTREAM));
rebalanceWhitespace();
}
diff --git a/WebCore/editing/CompositeEditCommand.cpp b/WebCore/editing/CompositeEditCommand.cpp
index 1f62244..ecc61dc 100644
--- a/WebCore/editing/CompositeEditCommand.cpp
+++ b/WebCore/editing/CompositeEditCommand.cpp
@@ -296,7 +296,7 @@
if (selectInsertedText) {
RefPtr<Range> selectedRange = TextIterator::rangeFromLocationAndLength(document()->documentElement(), startIndex, length);
- setEndingSelection(Selection(selectedRange.get()));
+ setEndingSelection(VisibleSelection(selectedRange.get()));
}
}
@@ -345,7 +345,7 @@
applyCommandToComposite(DeleteSelectionCommand::create(document(), smartDelete, mergeBlocksAfterDelete, replace, expandForSpecialElements));
}
-void CompositeEditCommand::deleteSelection(const Selection &selection, bool smartDelete, bool mergeBlocksAfterDelete, bool replace, bool expandForSpecialElements)
+void CompositeEditCommand::deleteSelection(const VisibleSelection &selection, bool smartDelete, bool mergeBlocksAfterDelete, bool replace, bool expandForSpecialElements)
{
if (selection.isRange())
applyCommandToComposite(DeleteSelectionCommand::create(selection, smartDelete, mergeBlocksAfterDelete, replace, expandForSpecialElements));
@@ -452,7 +452,7 @@
void CompositeEditCommand::rebalanceWhitespace()
{
- Selection selection = endingSelection();
+ VisibleSelection selection = endingSelection();
if (selection.isNone())
return;
@@ -696,7 +696,7 @@
ASSERT(anchorNode->isLink());
- setEndingSelection(Selection::selectionFromContentsOfNode(anchorNode));
+ setEndingSelection(VisibleSelection::selectionFromContentsOfNode(anchorNode));
applyStyledElement(static_cast<Element*>(anchorNode));
// Clones of anchorNode have been pushed down, now remove it.
if (anchorNode->inDocument())
@@ -709,7 +709,7 @@
// Anchors cannot be nested.
void CompositeEditCommand::pushPartiallySelectedAnchorElementsDown()
{
- Selection originalSelection = endingSelection();
+ VisibleSelection originalSelection = endingSelection();
VisiblePosition visibleStart(originalSelection.start());
VisiblePosition visibleEnd(originalSelection.end());
@@ -797,7 +797,7 @@
// FIXME (5098931): We should add a new insert action "WebViewInsertActionMoved" and call shouldInsertFragment here.
- setEndingSelection(Selection(start, end, DOWNSTREAM));
+ setEndingSelection(VisibleSelection(start, end, DOWNSTREAM));
deleteSelection(false, false, false, false);
ASSERT(destination.deepEquivalent().node()->inDocument());
@@ -866,7 +866,7 @@
RefPtr<Range> start = TextIterator::rangeFromLocationAndLength(document()->documentElement(), destinationIndex + startIndex, 0, true);
RefPtr<Range> end = TextIterator::rangeFromLocationAndLength(document()->documentElement(), destinationIndex + endIndex, 0, true);
if (start && end)
- setEndingSelection(Selection(start->startPosition(), end->startPosition(), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(start->startPosition(), end->startPosition(), DOWNSTREAM));
}
}
@@ -897,7 +897,7 @@
}
appendBlockPlaceholder(newBlock);
- setEndingSelection(Selection(Position(newBlock.get(), 0), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(Position(newBlock.get(), 0), DOWNSTREAM));
computedStyle(endingSelection().start().node())->diff(style.get());
if (style->length() > 0)
@@ -935,7 +935,7 @@
// a second one.
if (!isStartOfParagraph(atBR))
insertNodeBefore(createBreakElement(document()), br);
- setEndingSelection(Selection(atBR));
+ setEndingSelection(VisibleSelection(atBR));
// If this is an empty paragraph there must be a line break here.
if (!lineBreakExistsAtPosition(caret))
diff --git a/WebCore/editing/CompositeEditCommand.h b/WebCore/editing/CompositeEditCommand.h
index 6bb142b..4a3defd 100644
--- a/WebCore/editing/CompositeEditCommand.h
+++ b/WebCore/editing/CompositeEditCommand.h
@@ -52,7 +52,7 @@
void applyStyledElement(PassRefPtr<Element>);
void removeStyledElement(PassRefPtr<Element>);
void deleteSelection(bool smartDelete = false, bool mergeBlocksAfterDelete = true, bool replace = false, bool expandForSpecialElements = true);
- void deleteSelection(const Selection&, bool smartDelete = false, bool mergeBlocksAfterDelete = true, bool replace = false, bool expandForSpecialElements = true);
+ void deleteSelection(const VisibleSelection&, bool smartDelete = false, bool mergeBlocksAfterDelete = true, bool replace = false, bool expandForSpecialElements = true);
virtual void deleteTextFromNode(PassRefPtr<Text>, unsigned offset, unsigned count);
void inputText(const String&, bool selectInsertedText = false);
void insertNodeAfter(PassRefPtr<Node>, PassRefPtr<Node> refChild);
diff --git a/WebCore/editing/CreateLinkCommand.cpp b/WebCore/editing/CreateLinkCommand.cpp
index c5d68dd..263feab 100644
--- a/WebCore/editing/CreateLinkCommand.cpp
+++ b/WebCore/editing/CreateLinkCommand.cpp
@@ -53,7 +53,7 @@
insertNodeAt(anchorElement.get(), endingSelection().start());
RefPtr<Text> textNode = new Text(document(), m_url);
appendNode(textNode.get(), anchorElement.get());
- setEndingSelection(Selection(positionBeforeNode(anchorElement.get()), positionAfterNode(anchorElement.get()), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(positionBeforeNode(anchorElement.get()), positionAfterNode(anchorElement.get()), DOWNSTREAM));
}
}
diff --git a/WebCore/editing/DeleteButtonController.cpp b/WebCore/editing/DeleteButtonController.cpp
index 4be9fb7..f35ae79 100644
--- a/WebCore/editing/DeleteButtonController.cpp
+++ b/WebCore/editing/DeleteButtonController.cpp
@@ -101,7 +101,7 @@
return false;
}
-static HTMLElement* enclosingDeletableElement(const Selection& selection)
+static HTMLElement* enclosingDeletableElement(const VisibleSelection& selection)
{
if (!selection.isContentEditable())
return 0;
@@ -128,7 +128,7 @@
return static_cast<HTMLElement*>(element);
}
-void DeleteButtonController::respondToChangedSelection(const Selection& oldSelection)
+void DeleteButtonController::respondToChangedSelection(const VisibleSelection& oldSelection)
{
if (!enabled())
return;
diff --git a/WebCore/editing/DeleteButtonController.h b/WebCore/editing/DeleteButtonController.h
index ab2d0b0..713ae8b 100644
--- a/WebCore/editing/DeleteButtonController.h
+++ b/WebCore/editing/DeleteButtonController.h
@@ -34,7 +34,7 @@
class Frame;
class HTMLElement;
class RenderObject;
-class Selection;
+class VisibleSelection;
class DeleteButtonController {
public:
@@ -45,7 +45,7 @@
HTMLElement* target() const { return m_target.get(); }
HTMLElement* containerElement() const { return m_containerElement.get(); }
- void respondToChangedSelection(const Selection& oldSelection);
+ void respondToChangedSelection(const VisibleSelection& oldSelection);
void show(HTMLElement*);
void hide();
diff --git a/WebCore/editing/DeleteSelectionCommand.cpp b/WebCore/editing/DeleteSelectionCommand.cpp
index 21b597e..e8b748b 100644
--- a/WebCore/editing/DeleteSelectionCommand.cpp
+++ b/WebCore/editing/DeleteSelectionCommand.cpp
@@ -88,7 +88,7 @@
{
}
-DeleteSelectionCommand::DeleteSelectionCommand(const Selection& selection, bool smartDelete, bool mergeBlocksAfterDelete, bool replace, bool expandForSpecialElements)
+DeleteSelectionCommand::DeleteSelectionCommand(const VisibleSelection& selection, bool smartDelete, bool mergeBlocksAfterDelete, bool replace, bool expandForSpecialElements)
: CompositeEditCommand(selection.start().node()->document()),
m_hasSelectionToDelete(true),
m_smartDelete(smartDelete),
@@ -696,7 +696,7 @@
void DeleteSelectionCommand::clearTransientState()
{
- m_selectionToDelete = Selection();
+ m_selectionToDelete = VisibleSelection();
m_upstreamStart.clear();
m_downstreamStart.clear();
m_upstreamEnd.clear();
@@ -755,7 +755,7 @@
// want to replace it with a placeholder BR!
if (handleSpecialCaseBRDelete()) {
calculateTypingStyleAfterDelete();
- setEndingSelection(Selection(m_endingPosition, affinity));
+ setEndingSelection(VisibleSelection(m_endingPosition, affinity));
clearTransientState();
rebalanceWhitespace();
return;
@@ -778,7 +778,7 @@
calculateTypingStyleAfterDelete();
- setEndingSelection(Selection(m_endingPosition, affinity));
+ setEndingSelection(VisibleSelection(m_endingPosition, affinity));
clearTransientState();
}
diff --git a/WebCore/editing/DeleteSelectionCommand.h b/WebCore/editing/DeleteSelectionCommand.h
index 0f9f2f7..640c549 100644
--- a/WebCore/editing/DeleteSelectionCommand.h
+++ b/WebCore/editing/DeleteSelectionCommand.h
@@ -36,14 +36,14 @@
{
return adoptRef(new DeleteSelectionCommand(document, smartDelete, mergeBlocksAfterDelete, replace, expandForSpecialElements));
}
- static PassRefPtr<DeleteSelectionCommand> create(const Selection& selection, bool smartDelete = false, bool mergeBlocksAfterDelete = true, bool replace = false, bool expandForSpecialElements = false)
+ static PassRefPtr<DeleteSelectionCommand> create(const VisibleSelection& selection, bool smartDelete = false, bool mergeBlocksAfterDelete = true, bool replace = false, bool expandForSpecialElements = false)
{
return adoptRef(new DeleteSelectionCommand(selection, smartDelete, mergeBlocksAfterDelete, replace, expandForSpecialElements));
}
private:
DeleteSelectionCommand(Document*, bool smartDelete, bool mergeBlocksAfterDelete, bool replace, bool expandForSpecialElements);
- DeleteSelectionCommand(const Selection&, bool smartDelete, bool mergeBlocksAfterDelete, bool replace, bool expandForSpecialElements);
+ DeleteSelectionCommand(const VisibleSelection&, bool smartDelete, bool mergeBlocksAfterDelete, bool replace, bool expandForSpecialElements);
virtual void doApply();
virtual EditAction editingAction() const;
@@ -74,7 +74,7 @@
bool m_pruneStartBlockIfNecessary;
// This data is transient and should be cleared at the end of the doApply function.
- Selection m_selectionToDelete;
+ VisibleSelection m_selectionToDelete;
Position m_upstreamStart;
Position m_downstreamStart;
Position m_upstreamEnd;
diff --git a/WebCore/editing/EditCommand.cpp b/WebCore/editing/EditCommand.cpp
index 7ec0c19..ca5bf41 100644
--- a/WebCore/editing/EditCommand.cpp
+++ b/WebCore/editing/EditCommand.cpp
@@ -158,7 +158,7 @@
return EditActionUnspecified;
}
-void EditCommand::setStartingSelection(const Selection& s)
+void EditCommand::setStartingSelection(const VisibleSelection& s)
{
Element* root = s.rootEditableElement();
for (EditCommand* cmd = this; ; cmd = cmd->m_parent) {
@@ -169,7 +169,7 @@
}
}
-void EditCommand::setEndingSelection(const Selection &s)
+void EditCommand::setEndingSelection(const VisibleSelection &s)
{
Element* root = s.rootEditableElement();
for (EditCommand* cmd = this; cmd; cmd = cmd->m_parent) {
diff --git a/WebCore/editing/EditCommand.h b/WebCore/editing/EditCommand.h
index 78490f8..c4969f6 100644
--- a/WebCore/editing/EditCommand.h
+++ b/WebCore/editing/EditCommand.h
@@ -28,7 +28,7 @@
#include "EditAction.h"
#include "Element.h"
-#include "Selection.h"
+#include "VisibleSelection.h"
namespace WebCore {
@@ -47,8 +47,8 @@
virtual EditAction editingAction() const;
- const Selection& startingSelection() const { return m_startingSelection; }
- const Selection& endingSelection() const { return m_endingSelection; }
+ const VisibleSelection& startingSelection() const { return m_startingSelection; }
+ const VisibleSelection& endingSelection() const { return m_endingSelection; }
Element* startingRootEditableElement() const { return m_startingRootEditableElement.get(); }
Element* endingRootEditableElement() const { return m_endingRootEditableElement.get(); }
@@ -63,8 +63,8 @@
Document* document() const { return m_document.get(); }
- void setStartingSelection(const Selection&);
- void setEndingSelection(const Selection&);
+ void setStartingSelection(const VisibleSelection&);
+ void setEndingSelection(const VisibleSelection&);
PassRefPtr<CSSMutableStyleDeclaration> styleAtPosition(const Position&);
void updateLayout() const;
@@ -75,8 +75,8 @@
virtual void doReapply(); // calls doApply()
RefPtr<Document> m_document;
- Selection m_startingSelection;
- Selection m_endingSelection;
+ VisibleSelection m_startingSelection;
+ VisibleSelection m_endingSelection;
RefPtr<Element> m_startingRootEditableElement;
RefPtr<Element> m_endingRootEditableElement;
CompositeEditCommand* m_parent;
diff --git a/WebCore/editing/Editor.cpp b/WebCore/editing/Editor.cpp
index 8cc8c19..c1740d1 100644
--- a/WebCore/editing/Editor.cpp
+++ b/WebCore/editing/Editor.cpp
@@ -74,9 +74,9 @@
// When an event handler has moved the selection outside of a text control
// we should use the target control's selection for this editing operation.
-Selection Editor::selectionForCommand(Event* event)
+VisibleSelection Editor::selectionForCommand(Event* event)
{
- Selection selection = m_frame->selection()->selection();
+ VisibleSelection selection = m_frame->selection()->selection();
if (!event)
return selection;
// If the target is a text control, and the current selection is outside of its shadow tree,
@@ -376,14 +376,14 @@
return client() && client()->shouldShowDeleteInterface(element);
}
-void Editor::respondToChangedSelection(const Selection& oldSelection)
+void Editor::respondToChangedSelection(const VisibleSelection& oldSelection)
{
if (client())
client()->respondToChangedSelection();
m_deleteButtonController->respondToChangedSelection(oldSelection);
}
-void Editor::respondToChangedContents(const Selection& endingSelection)
+void Editor::respondToChangedContents(const VisibleSelection& endingSelection)
{
if (AXObjectCache::accessibilityEnabled()) {
Node* node = endingSelection.start().node();
@@ -711,13 +711,13 @@
void Editor::applyStyle(CSSStyleDeclaration* style, EditAction editingAction)
{
switch (m_frame->selection()->selectionType()) {
- case Selection::NoSelection:
+ case VisibleSelection::NoSelection:
// do nothing
break;
- case Selection::CaretSelection:
+ case VisibleSelection::CaretSelection:
m_frame->computeAndSetTypingStyle(style, editingAction);
break;
- case Selection::RangeSelection:
+ case VisibleSelection::RangeSelection:
if (m_frame->document() && style)
applyCommand(ApplyStyleCommand::create(m_frame->document(), style, editingAction));
break;
@@ -732,11 +732,11 @@
void Editor::applyParagraphStyle(CSSStyleDeclaration* style, EditAction editingAction)
{
switch (m_frame->selection()->selectionType()) {
- case Selection::NoSelection:
+ case VisibleSelection::NoSelection:
// do nothing
break;
- case Selection::CaretSelection:
- case Selection::RangeSelection:
+ case VisibleSelection::CaretSelection:
+ case VisibleSelection::RangeSelection:
if (m_frame->document() && style)
applyCommand(ApplyStyleCommand::create(m_frame->document(), style, editingAction, ApplyStyleCommand::ForceBlockProperties));
break;
@@ -870,7 +870,7 @@
{
dispatchEditableContentChangedEvents(*cmd);
- Selection newSelection(cmd->endingSelection());
+ VisibleSelection newSelection(cmd->endingSelection());
// If there is no selection change, don't bother sending shouldChangeSelection, but still call setSelection,
// because there is work that it must do in this situation.
// The old selection can be invalid here and calling shouldChangeSelection can produce some strange calls.
@@ -899,7 +899,7 @@
{
dispatchEditableContentChangedEvents(*cmd);
- Selection newSelection(cmd->startingSelection());
+ VisibleSelection newSelection(cmd->startingSelection());
// If there is no selection change, don't bother sending shouldChangeSelection, but still call setSelection,
// because there is work that it must do in this situation.
// The old selection can be invalid here and calling shouldChangeSelection can produce some strange calls.
@@ -917,7 +917,7 @@
{
dispatchEditableContentChangedEvents(*cmd);
- Selection newSelection(cmd->endingSelection());
+ VisibleSelection newSelection(cmd->endingSelection());
// If there is no selection change, don't bother sending shouldChangeSelection, but still call setSelection,
// because there is work that it must do in this situation.
// The old selection can be invalid here and calling shouldChangeSelection can produce some strange calls.
@@ -962,7 +962,7 @@
if (text.isEmpty())
return false;
- Selection selection = selectionForCommand(triggeringEvent);
+ VisibleSelection selection = selectionForCommand(triggeringEvent);
if (!selection.isContentEditable())
return false;
RefPtr<Range> range = selection.toNormalizedRange();
@@ -1229,7 +1229,7 @@
// The composition can start inside a composed character sequence, so we have to override checks.
// See <http://bugs.webkit.org/show_bug.cgi?id=15781>
- Selection selection;
+ VisibleSelection selection;
selection.setWithoutValidation(range->startPosition(), range->endPosition());
m_frame->selection()->setSelection(selection, false, false);
}
@@ -1257,7 +1257,7 @@
{
setIgnoreCompositionSelectionChange(true);
- Selection oldSelection = m_frame->selection()->selection();
+ VisibleSelection oldSelection = m_frame->selection()->selection();
selectComposition();
@@ -1560,7 +1560,7 @@
// Start at the end of the selection, search to edge of document. Starting at the selection end makes
// repeated "check spelling" commands work.
- Selection selection(frame()->selection()->selection());
+ VisibleSelection selection(frame()->selection()->selection());
RefPtr<Range> spellingSearchRange(rangeOfContents(frame()->document()));
bool startedWithSelection = false;
if (selection.start().node()) {
@@ -1674,7 +1674,7 @@
// FIXME 4859190: This gets confused with doubled punctuation at the end of a paragraph
RefPtr<Range> badGrammarRange = TextIterator::subrange(grammarSearchRange.get(), grammarPhraseOffset + grammarDetail.location, grammarDetail.length);
- frame()->selection()->setSelection(Selection(badGrammarRange.get(), SEL_DEFAULT_AFFINITY));
+ frame()->selection()->setSelection(VisibleSelection(badGrammarRange.get(), SEL_DEFAULT_AFFINITY));
frame()->revealSelection();
client()->updateSpellingUIWithGrammarString(badGrammarPhrase, grammarDetail);
@@ -1685,7 +1685,7 @@
// a marker so we draw the red squiggle later.
RefPtr<Range> misspellingRange = TextIterator::subrange(spellingSearchRange.get(), misspellingOffset, misspelledWord.length());
- frame()->selection()->setSelection(Selection(misspellingRange.get(), DOWNSTREAM));
+ frame()->selection()->setSelection(VisibleSelection(misspellingRange.get(), DOWNSTREAM));
frame()->revealSelection();
client()->updateSpellingUIWithMisspelledWord(misspelledWord);
@@ -1833,13 +1833,13 @@
return;
// Check spelling of one word
- markMisspellings(Selection(startOfWord(p, LeftWordIfOnBoundary), endOfWord(p, RightWordIfOnBoundary)));
+ markMisspellings(VisibleSelection(startOfWord(p, LeftWordIfOnBoundary), endOfWord(p, RightWordIfOnBoundary)));
if (!isGrammarCheckingEnabled())
return;
// Check grammar of entire sentence
- markBadGrammar(Selection(startOfSentence(p), endOfSentence(p)));
+ markBadGrammar(VisibleSelection(startOfSentence(p), endOfSentence(p)));
}
static void markAllMisspellingsInRange(EditorClient* client, Range* searchRange)
@@ -1861,7 +1861,7 @@
}
#endif
-static void markMisspellingsOrBadGrammar(Editor* editor, const Selection& selection, bool checkSpelling)
+static void markMisspellingsOrBadGrammar(Editor* editor, const VisibleSelection& selection, bool checkSpelling)
{
// This function is called with a selection already expanded to word boundaries.
// Might be nice to assert that here.
@@ -1896,12 +1896,12 @@
}
}
-void Editor::markMisspellings(const Selection& selection)
+void Editor::markMisspellings(const VisibleSelection& selection)
{
markMisspellingsOrBadGrammar(this, selection, true);
}
-void Editor::markBadGrammar(const Selection& selection)
+void Editor::markBadGrammar(const VisibleSelection& selection)
{
#ifndef BUILDING_ON_TIGER
markMisspellingsOrBadGrammar(this, selection, false);
@@ -1922,7 +1922,7 @@
if (!frameView)
return 0;
IntPoint framePoint = frameView->windowToContents(windowPoint);
- Selection selection(frame->visiblePositionForPoint(framePoint));
+ VisibleSelection selection(frame->visiblePositionForPoint(framePoint));
return avoidIntersectionWithNode(selection.toNormalizedRange().get(), deleteButtonController() ? deleteButtonController()->containerElement() : 0);
}
@@ -1982,7 +1982,7 @@
if (!canEdit())
return;
- Selection selection = m_frame->selection()->selection();
+ VisibleSelection selection = m_frame->selection()->selection();
if (!selection.isCaret())
return;
@@ -1998,7 +1998,7 @@
RefPtr<Range> range = makeRange(previous, next);
if (!range)
return;
- Selection newSelection(range.get(), DOWNSTREAM);
+ VisibleSelection newSelection(range.get(), DOWNSTREAM);
// Transpose the two characters.
String text = plainText(range.get());
diff --git a/WebCore/editing/Editor.h b/WebCore/editing/Editor.h
index 1de19da..2f67723 100644
--- a/WebCore/editing/Editor.h
+++ b/WebCore/editing/Editor.h
@@ -110,8 +110,8 @@
bool shouldDeleteRange(Range*) const;
bool shouldApplyStyle(CSSStyleDeclaration*, Range*);
- void respondToChangedSelection(const Selection& oldSelection);
- void respondToChangedContents(const Selection& endingSelection);
+ void respondToChangedSelection(const VisibleSelection& oldSelection);
+ void respondToChangedContents(const VisibleSelection& endingSelection);
TriState selectionHasStyle(CSSStyleDeclaration*) const;
const SimpleFontData* fontForSelection(bool&) const;
@@ -196,8 +196,8 @@
Vector<String> guessesForMisspelledSelection();
Vector<String> guessesForUngrammaticalSelection();
void markMisspellingsAfterTypingToPosition(const VisiblePosition&);
- void markMisspellings(const Selection&);
- void markBadGrammar(const Selection&);
+ void markMisspellings(const VisibleSelection&);
+ void markBadGrammar(const VisibleSelection&);
void advanceToNextMisspelling(bool startBeforeSelection = false);
void showSpellingGuessPanel();
bool spellingPanelIsShowing();
@@ -253,7 +253,7 @@
void clear();
- Selection selectionForCommand(Event*);
+ VisibleSelection selectionForCommand(Event*);
void appendToKillRing(const String&);
void prependToKillRing(const String&);
diff --git a/WebCore/editing/EditorCommand.cpp b/WebCore/editing/EditorCommand.cpp
index 582ca0a..afe4eac 100644
--- a/WebCore/editing/EditorCommand.cpp
+++ b/WebCore/editing/EditorCommand.cpp
@@ -184,7 +184,7 @@
static bool expandSelectionToGranularity(Frame* frame, TextGranularity granularity)
{
- Selection selection = frame->selection()->selection();
+ VisibleSelection selection = frame->selection()->selection();
selection.expandUsingGranularity(granularity);
RefPtr<Range> newRange = selection.toNormalizedRange();
if (!newRange)
@@ -935,8 +935,8 @@
static bool executeSwapWithMark(Frame* frame, Event*, EditorCommandSource, const String&)
{
- const Selection& mark = frame->mark();
- const Selection& selection = frame->selection()->selection();
+ const VisibleSelection& mark = frame->mark();
+ const VisibleSelection& selection = frame->selection()->selection();
if (mark.isNone() || selection.isNone()) {
systemBeep();
return false;
@@ -1042,20 +1042,20 @@
static bool enabledVisibleSelection(Frame* frame, Event* event, EditorCommandSource)
{
// The term "visible" here includes a caret in editable text or a range in any text.
- const Selection& selection = frame->editor()->selectionForCommand(event);
+ const VisibleSelection& selection = frame->editor()->selectionForCommand(event);
return (selection.isCaret() && selection.isContentEditable()) || selection.isRange();
}
static bool enabledVisibleSelectionAndMark(Frame* frame, Event* event, EditorCommandSource)
{
- const Selection& selection = frame->editor()->selectionForCommand(event);
+ const VisibleSelection& selection = frame->editor()->selectionForCommand(event);
return ((selection.isCaret() && selection.isContentEditable()) || selection.isRange())
&& frame->mark().isCaretOrRange();
}
static bool enableCaretInEditableText(Frame* frame, Event* event, EditorCommandSource)
{
- const Selection& selection = frame->editor()->selectionForCommand(event);
+ const VisibleSelection& selection = frame->editor()->selectionForCommand(event);
return selection.isCaret() && selection.isContentEditable();
}
diff --git a/WebCore/editing/FormatBlockCommand.cpp b/WebCore/editing/FormatBlockCommand.cpp
index 6a4ee7e..88169be 100644
--- a/WebCore/editing/FormatBlockCommand.cpp
+++ b/WebCore/editing/FormatBlockCommand.cpp
@@ -63,7 +63,7 @@
setEndingSelection(visibleEnd);
doApply();
visibleEnd = endingSelection().visibleEnd();
- setEndingSelection(Selection(visibleStart.deepEquivalent(), visibleEnd.deepEquivalent(), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(visibleStart.deepEquivalent(), visibleEnd.deepEquivalent(), DOWNSTREAM));
return true;
}
@@ -87,7 +87,7 @@
// margin/padding, but not others. We should make the gap painting more consistent and
// then use a left margin/padding rule here.
if (visibleEnd != visibleStart && isStartOfParagraph(visibleEnd))
- setEndingSelection(Selection(visibleStart, visibleEnd.previous(true)));
+ setEndingSelection(VisibleSelection(visibleStart, visibleEnd.previous(true)));
if (endingSelection().isRange() && modifyRange())
return;
diff --git a/WebCore/editing/IndentOutdentCommand.cpp b/WebCore/editing/IndentOutdentCommand.cpp
index 242aeb0..2838a19 100644
--- a/WebCore/editing/IndentOutdentCommand.cpp
+++ b/WebCore/editing/IndentOutdentCommand.cpp
@@ -109,7 +109,7 @@
void IndentOutdentCommand::indentRegion()
{
- Selection selection = selectionForParagraphIteration(endingSelection());
+ VisibleSelection selection = selectionForParagraphIteration(endingSelection());
VisiblePosition startOfSelection = selection.visibleStart();
VisiblePosition endOfSelection = selection.visibleEnd();
int startIndex = indexForVisiblePosition(startOfSelection);
@@ -126,7 +126,7 @@
insertNodeAt(blockquote, start);
RefPtr<Element> placeholder = createBreakElement(document());
appendNode(placeholder, blockquote);
- setEndingSelection(Selection(Position(placeholder.get(), 0), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(Position(placeholder.get(), 0), DOWNSTREAM));
return;
}
@@ -191,7 +191,7 @@
RefPtr<Range> startRange = TextIterator::rangeFromLocationAndLength(document()->documentElement(), startIndex, 0, true);
RefPtr<Range> endRange = TextIterator::rangeFromLocationAndLength(document()->documentElement(), endIndex, 0, true);
if (startRange && endRange)
- setEndingSelection(Selection(startRange->startPosition(), endRange->startPosition(), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(startRange->startPosition(), endRange->startPosition(), DOWNSTREAM));
}
void IndentOutdentCommand::outdentParagraph()
@@ -262,13 +262,13 @@
while (endOfCurrentParagraph != endAfterSelection) {
VisiblePosition endOfNextParagraph = endOfParagraph(endOfCurrentParagraph.next());
if (endOfCurrentParagraph == endOfLastParagraph)
- setEndingSelection(Selection(originalSelectionEnd, DOWNSTREAM));
+ setEndingSelection(VisibleSelection(originalSelectionEnd, DOWNSTREAM));
else
setEndingSelection(endOfCurrentParagraph);
outdentParagraph();
endOfCurrentParagraph = endOfNextParagraph;
}
- setEndingSelection(Selection(originalSelectionStart, endingSelection().end(), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(originalSelectionStart, endingSelection().end(), DOWNSTREAM));
}
void IndentOutdentCommand::doApply()
@@ -290,7 +290,7 @@
// margin/padding, but not others. We should make the gap painting more consistent and
// then use a left margin/padding rule here.
if (visibleEnd != visibleStart && isStartOfParagraph(visibleEnd))
- setEndingSelection(Selection(visibleStart, visibleEnd.previous(true)));
+ setEndingSelection(VisibleSelection(visibleStart, visibleEnd.previous(true)));
if (m_typeOfAction == Indent)
indentRegion();
diff --git a/WebCore/editing/InsertLineBreakCommand.cpp b/WebCore/editing/InsertLineBreakCommand.cpp
index 42cca41..181a91b 100644
--- a/WebCore/editing/InsertLineBreakCommand.cpp
+++ b/WebCore/editing/InsertLineBreakCommand.cpp
@@ -88,7 +88,7 @@
void InsertLineBreakCommand::doApply()
{
deleteSelection();
- Selection selection = endingSelection();
+ VisibleSelection selection = endingSelection();
if (selection.isNone())
return;
@@ -116,7 +116,7 @@
insertNodeBefore(nodeToInsert->cloneNode(false), nodeToInsert);
VisiblePosition endingPosition(Position(nodeToInsert.get(), 0));
- setEndingSelection(Selection(endingPosition));
+ setEndingSelection(VisibleSelection(endingPosition));
} else if (pos.offset() <= caretMinOffset(pos.node())) {
insertNodeAt(nodeToInsert.get(), pos);
@@ -124,12 +124,12 @@
if (!isStartOfParagraph(VisiblePosition(Position(nodeToInsert.get(), 0))))
insertNodeBefore(nodeToInsert->cloneNode(false).get(), nodeToInsert.get());
- setEndingSelection(Selection(positionAfterNode(nodeToInsert.get()), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(positionAfterNode(nodeToInsert.get()), DOWNSTREAM));
// If we're inserting after all of the rendered text in a text node, or into a non-text node,
// a simple insertion is sufficient.
} else if (pos.offset() >= caretMaxOffset(pos.node()) || !pos.node()->isTextNode()) {
insertNodeAt(nodeToInsert.get(), pos);
- setEndingSelection(Selection(positionAfterNode(nodeToInsert.get()), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(positionAfterNode(nodeToInsert.get()), DOWNSTREAM));
} else {
// Split a text node
ASSERT(pos.node()->isTextNode());
@@ -157,7 +157,7 @@
}
}
- setEndingSelection(Selection(endingPosition, DOWNSTREAM));
+ setEndingSelection(VisibleSelection(endingPosition, DOWNSTREAM));
}
// Handle the case where there is a typing style.
@@ -172,7 +172,7 @@
applyStyle(typingStyle, Position(nodeToInsert.get(), 0),
Position(nodeToInsert.get(), maxDeepOffset(nodeToInsert.get())));
// Even though this applyStyle operates on a Range, it still sets an endingSelection().
- // It tries to set a Selection around the content it operated on. So, that Selection
+ // It tries to set a VisibleSelection around the content it operated on. So, that VisibleSelection
// will either (a) select the line break we inserted, or it will (b) be a caret just
// before the line break (if the line break is at the end of a block it isn't selectable).
// So, this next call sets the endingSelection() to a caret just after the line break
diff --git a/WebCore/editing/InsertListCommand.cpp b/WebCore/editing/InsertListCommand.cpp
index 20c63b8..947ed25 100644
--- a/WebCore/editing/InsertListCommand.cpp
+++ b/WebCore/editing/InsertListCommand.cpp
@@ -61,7 +61,7 @@
bool InsertListCommand::modifyRange()
{
- Selection selection = selectionForParagraphIteration(endingSelection());
+ VisibleSelection selection = selectionForParagraphIteration(endingSelection());
ASSERT(selection.isRange());
VisiblePosition startOfSelection = selection.visibleStart();
VisiblePosition endOfSelection = selection.visibleEnd();
@@ -99,7 +99,7 @@
doApply();
// Fetch the end of the selection, for the reason mentioned above.
endOfSelection = endingSelection().visibleEnd();
- setEndingSelection(Selection(startOfSelection, endOfSelection));
+ setEndingSelection(VisibleSelection(startOfSelection, endOfSelection));
m_forceCreateList = false;
return true;
}
@@ -123,7 +123,7 @@
// margin/padding, but not others. We should make the gap painting more consistent and
// then use a left margin/padding rule here.
if (visibleEnd != visibleStart && isStartOfParagraph(visibleEnd))
- setEndingSelection(Selection(visibleStart, visibleEnd.previous(true)));
+ setEndingSelection(VisibleSelection(visibleStart, visibleEnd.previous(true)));
if (endingSelection().isRange() && modifyRange())
return;
diff --git a/WebCore/editing/InsertParagraphSeparatorCommand.cpp b/WebCore/editing/InsertParagraphSeparatorCommand.cpp
index 30e006e..b81489e 100644
--- a/WebCore/editing/InsertParagraphSeparatorCommand.cpp
+++ b/WebCore/editing/InsertParagraphSeparatorCommand.cpp
@@ -186,7 +186,7 @@
insertNodeAfter(blockToInsert, startBlock);
appendBlockPlaceholder(blockToInsert);
- setEndingSelection(Selection(Position(blockToInsert.get(), 0), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(Position(blockToInsert.get(), 0), DOWNSTREAM));
applyStyleAfterInsertion(startBlock);
return;
}
@@ -209,9 +209,9 @@
insertNodeBefore(blockToInsert, refNode);
appendBlockPlaceholder(blockToInsert.get());
- setEndingSelection(Selection(Position(blockToInsert.get(), 0), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(Position(blockToInsert.get(), 0), DOWNSTREAM));
applyStyleAfterInsertion(startBlock);
- setEndingSelection(Selection(pos, DOWNSTREAM));
+ setEndingSelection(VisibleSelection(pos, DOWNSTREAM));
return;
}
@@ -331,7 +331,7 @@
}
}
- setEndingSelection(Selection(Position(blockToInsert.get(), 0), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(Position(blockToInsert.get(), 0), DOWNSTREAM));
applyStyleAfterInsertion(startBlock);
}
diff --git a/WebCore/editing/InsertTextCommand.cpp b/WebCore/editing/InsertTextCommand.cpp
index 46e9a94..4dfd541 100644
--- a/WebCore/editing/InsertTextCommand.cpp
+++ b/WebCore/editing/InsertTextCommand.cpp
@@ -96,12 +96,12 @@
// We could have inserted a part of composed character sequence,
// so we are basically treating ending selection as a range to avoid validation.
// <http://bugs.webkit.org/show_bug.cgi?id=15781>
- Selection forcedEndingSelection;
+ VisibleSelection forcedEndingSelection;
forcedEndingSelection.setWithoutValidation(start, endPosition);
setEndingSelection(forcedEndingSelection);
if (!selectInsertedText)
- setEndingSelection(Selection(endingSelection().visibleEnd()));
+ setEndingSelection(VisibleSelection(endingSelection().visibleEnd()));
return true;
}
@@ -172,7 +172,7 @@
// We could have inserted a part of composed character sequence,
// so we are basically treating ending selection as a range to avoid validation.
// <http://bugs.webkit.org/show_bug.cgi?id=15781>
- Selection forcedEndingSelection;
+ VisibleSelection forcedEndingSelection;
forcedEndingSelection.setWithoutValidation(startPosition, endPosition);
setEndingSelection(forcedEndingSelection);
@@ -199,7 +199,7 @@
applyStyle(typingStyle);
if (!selectInsertedText)
- setEndingSelection(Selection(endingSelection().end(), endingSelection().affinity()));
+ setEndingSelection(VisibleSelection(endingSelection().end(), endingSelection().affinity()));
}
Position InsertTextCommand::insertTab(const Position& pos)
diff --git a/WebCore/editing/ModifySelectionListLevel.cpp b/WebCore/editing/ModifySelectionListLevel.cpp
index 9bc73c6..2495970 100644
--- a/WebCore/editing/ModifySelectionListLevel.cpp
+++ b/WebCore/editing/ModifySelectionListLevel.cpp
@@ -46,7 +46,7 @@
}
// This needs to be static so it can be called by canIncreaseSelectionListLevel and canDecreaseSelectionListLevel
-static bool getStartEndListChildren(const Selection& selection, Node*& start, Node*& end)
+static bool getStartEndListChildren(const VisibleSelection& selection, Node*& start, Node*& end)
{
if (selection.isNone())
return false;
@@ -141,7 +141,7 @@
}
// This needs to be static so it can be called by canIncreaseSelectionListLevel
-static bool canIncreaseListLevel(const Selection& selection, Node*& start, Node*& end)
+static bool canIncreaseListLevel(const VisibleSelection& selection, Node*& start, Node*& end)
{
if (!getStartEndListChildren(selection, start, end))
return false;
@@ -239,7 +239,7 @@
}
// This needs to be static so it can be called by canDecreaseSelectionListLevel
-static bool canDecreaseListLevel(const Selection& selection, Node*& start, Node*& end)
+static bool canDecreaseListLevel(const VisibleSelection& selection, Node*& start, Node*& end)
{
if (!getStartEndListChildren(selection, start, end))
return false;
diff --git a/WebCore/editing/MoveSelectionCommand.cpp b/WebCore/editing/MoveSelectionCommand.cpp
index 08587cb..45364bc 100644
--- a/WebCore/editing/MoveSelectionCommand.cpp
+++ b/WebCore/editing/MoveSelectionCommand.cpp
@@ -39,7 +39,7 @@
void MoveSelectionCommand::doApply()
{
- Selection selection = endingSelection();
+ VisibleSelection selection = endingSelection();
ASSERT(selection.isRange());
Position pos = m_position;
@@ -69,7 +69,7 @@
if (!pos.node()->inDocument())
pos = endingSelection().start();
- setEndingSelection(Selection(pos, endingSelection().affinity()));
+ setEndingSelection(VisibleSelection(pos, endingSelection().affinity()));
applyCommandToComposite(ReplaceSelectionCommand::create(positionNode->document(), m_fragment, true, m_smartMove));
}
diff --git a/WebCore/editing/RemoveFormatCommand.cpp b/WebCore/editing/RemoveFormatCommand.cpp
index e6888c3..609ab0e 100644
--- a/WebCore/editing/RemoveFormatCommand.cpp
+++ b/WebCore/editing/RemoveFormatCommand.cpp
@@ -30,7 +30,7 @@
#include "Editor.h"
#include "Frame.h"
#include "HTMLNames.h"
-#include "Selection.h"
+#include "VisibleSelection.h"
#include "SelectionController.h"
#include "TextIterator.h"
#include "TypingCommand.h"
diff --git a/WebCore/editing/ReplaceSelectionCommand.cpp b/WebCore/editing/ReplaceSelectionCommand.cpp
index bed51bf..40b92a3 100644
--- a/WebCore/editing/ReplaceSelectionCommand.cpp
+++ b/WebCore/editing/ReplaceSelectionCommand.cpp
@@ -61,7 +61,7 @@
class ReplacementFragment : Noncopyable {
public:
- ReplacementFragment(Document*, DocumentFragment*, bool matchStyle, const Selection&);
+ ReplacementFragment(Document*, DocumentFragment*, bool matchStyle, const VisibleSelection&);
Node* firstChild() const;
Node* lastChild() const;
@@ -103,7 +103,7 @@
static_cast<const HTMLElement *>(node)->getAttribute(classAttr) == convertedSpaceSpanClassString;
}
-ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* fragment, bool matchStyle, const Selection& selection)
+ReplacementFragment::ReplacementFragment(Document* document, DocumentFragment* fragment, bool matchStyle, const VisibleSelection& selection)
: m_document(document),
m_fragment(fragment),
m_matchStyle(matchStyle),
@@ -136,7 +136,7 @@
Node* styleNode = selection.base().node();
RefPtr<Node> holder = insertFragmentForTestRendering(styleNode);
- RefPtr<Range> range = Selection::selectionFromContentsOfNode(holder.get()).toNormalizedRange();
+ RefPtr<Range> range = VisibleSelection::selectionFromContentsOfNode(holder.get()).toNormalizedRange();
String text = plainText(range.get());
// Give the root a chance to change the text.
RefPtr<BeforeTextInsertedEvent> evt = BeforeTextInsertedEvent::create(text);
@@ -698,7 +698,7 @@
void ReplaceSelectionCommand::doApply()
{
- Selection selection = endingSelection();
+ VisibleSelection selection = endingSelection();
ASSERT(selection.isCaretOrRange());
ASSERT(selection.start().node());
if (selection.isNone() || !selection.start().node())
@@ -1032,9 +1032,9 @@
return;
if (m_selectReplacement)
- setEndingSelection(Selection(start, end, SEL_DEFAULT_AFFINITY));
+ setEndingSelection(VisibleSelection(start, end, SEL_DEFAULT_AFFINITY));
else
- setEndingSelection(Selection(end, SEL_DEFAULT_AFFINITY));
+ setEndingSelection(VisibleSelection(end, SEL_DEFAULT_AFFINITY));
}
EditAction ReplaceSelectionCommand::editingAction() const
diff --git a/WebCore/editing/SelectionController.cpp b/WebCore/editing/SelectionController.cpp
index e1416b8..43e9250 100644
--- a/WebCore/editing/SelectionController.cpp
+++ b/WebCore/editing/SelectionController.cpp
@@ -76,30 +76,30 @@
void SelectionController::moveTo(const VisiblePosition &pos, bool userTriggered)
{
- setSelection(Selection(pos.deepEquivalent(), pos.deepEquivalent(), pos.affinity()), true, true, userTriggered);
+ setSelection(VisibleSelection(pos.deepEquivalent(), pos.deepEquivalent(), pos.affinity()), true, true, userTriggered);
}
void SelectionController::moveTo(const VisiblePosition &base, const VisiblePosition &extent, bool userTriggered)
{
- setSelection(Selection(base.deepEquivalent(), extent.deepEquivalent(), base.affinity()), true, true, userTriggered);
+ setSelection(VisibleSelection(base.deepEquivalent(), extent.deepEquivalent(), base.affinity()), true, true, userTriggered);
}
void SelectionController::moveTo(const Position &pos, EAffinity affinity, bool userTriggered)
{
- setSelection(Selection(pos, affinity), true, true, userTriggered);
+ setSelection(VisibleSelection(pos, affinity), true, true, userTriggered);
}
void SelectionController::moveTo(const Range *r, EAffinity affinity, bool userTriggered)
{
- setSelection(Selection(startPosition(r), endPosition(r), affinity), true, true, userTriggered);
+ setSelection(VisibleSelection(startPosition(r), endPosition(r), affinity), true, true, userTriggered);
}
void SelectionController::moveTo(const Position &base, const Position &extent, EAffinity affinity, bool userTriggered)
{
- setSelection(Selection(base, extent, affinity), true, true, userTriggered);
+ setSelection(VisibleSelection(base, extent, affinity), true, true, userTriggered);
}
-void SelectionController::setSelection(const Selection& s, bool closeTyping, bool clearTypingStyle, bool userTriggered)
+void SelectionController::setSelection(const VisibleSelection& s, bool closeTyping, bool clearTypingStyle, bool userTriggered)
{
if (m_isDragCaretController) {
invalidateCaretRect();
@@ -134,7 +134,7 @@
if (m_sel == s)
return;
- Selection oldSelection = m_sel;
+ VisibleSelection oldSelection = m_sel;
m_sel = s;
@@ -220,7 +220,7 @@
}
if (clearDOMTreeSelection)
- setSelection(Selection(), false, false);
+ setSelection(VisibleSelection(), false, false);
}
void SelectionController::willBeModified(EAlteration alter, EDirection direction)
@@ -700,27 +700,27 @@
void SelectionController::clear()
{
- setSelection(Selection());
+ setSelection(VisibleSelection());
}
void SelectionController::setBase(const VisiblePosition &pos, bool userTriggered)
{
- setSelection(Selection(pos.deepEquivalent(), m_sel.extent(), pos.affinity()), true, true, userTriggered);
+ setSelection(VisibleSelection(pos.deepEquivalent(), m_sel.extent(), pos.affinity()), true, true, userTriggered);
}
void SelectionController::setExtent(const VisiblePosition &pos, bool userTriggered)
{
- setSelection(Selection(m_sel.base(), pos.deepEquivalent(), pos.affinity()), true, true, userTriggered);
+ setSelection(VisibleSelection(m_sel.base(), pos.deepEquivalent(), pos.affinity()), true, true, userTriggered);
}
void SelectionController::setBase(const Position &pos, EAffinity affinity, bool userTriggered)
{
- setSelection(Selection(pos, m_sel.extent(), affinity), true, true, userTriggered);
+ setSelection(VisibleSelection(pos, m_sel.extent(), affinity), true, true, userTriggered);
}
void SelectionController::setExtent(const Position &pos, EAffinity affinity, bool userTriggered)
{
- setSelection(Selection(m_sel.base(), pos, affinity), true, true, userTriggered);
+ setSelection(VisibleSelection(m_sel.base(), pos, affinity), true, true, userTriggered);
}
void SelectionController::setNeedsLayout(bool flag)
@@ -1062,7 +1062,7 @@
VisiblePosition afterOwnerElement(VisiblePosition(ownerElementParent, ownerElementNodeIndex + 1, VP_UPSTREAM_IF_POSSIBLE));
// Focus on the parent frame, and then select from before this element to after.
- Selection newSelection(beforeOwnerElement, afterOwnerElement);
+ VisibleSelection newSelection(beforeOwnerElement, afterOwnerElement);
if (parent->shouldChangeSelection(newSelection)) {
page->focusController()->setFocusedFrame(parent);
parent->selection()->setSelection(newSelection);
@@ -1090,7 +1090,7 @@
}
if (!root)
return;
- Selection newSelection(Selection::selectionFromContentsOfNode(root));
+ VisibleSelection newSelection(VisibleSelection::selectionFromContentsOfNode(root));
if (m_frame->shouldChangeSelection(newSelection))
setSelection(newSelection);
selectFrameElementInParentIfFullySelected();
@@ -1134,7 +1134,7 @@
// FIXME: Can we provide extentAffinity?
VisiblePosition visibleStart(startContainer, startOffset, collapsed ? affinity : DOWNSTREAM);
VisiblePosition visibleEnd(endContainer, endOffset, SEL_DEFAULT_AFFINITY);
- setSelection(Selection(visibleStart, visibleEnd), closeTyping);
+ setSelection(VisibleSelection(visibleStart, visibleEnd), closeTyping);
return true;
}
diff --git a/WebCore/editing/SelectionController.h b/WebCore/editing/SelectionController.h
index a7f3134..21e849d 100644
--- a/WebCore/editing/SelectionController.h
+++ b/WebCore/editing/SelectionController.h
@@ -27,8 +27,8 @@
#define SelectionController_h
#include "IntRect.h"
-#include "Selection.h"
#include "Range.h"
+#include "VisibleSelection.h"
#include <wtf/Noncopyable.h>
namespace WebCore {
@@ -56,8 +56,8 @@
void moveTo(const Position&, EAffinity, bool userTriggered = false);
void moveTo(const Position&, const Position&, EAffinity, bool userTriggered = false);
- const Selection& selection() const { return m_sel; }
- void setSelection(const Selection&, bool closeTyping = true, bool clearTypingStyle = true, bool userTriggered = false);
+ const VisibleSelection& selection() const { return m_sel; }
+ void setSelection(const VisibleSelection&, bool closeTyping = true, bool clearTypingStyle = true, bool userTriggered = false);
bool setSelectedRange(Range*, EAffinity, bool closeTyping);
void selectAll();
void clear();
@@ -67,7 +67,7 @@
bool contains(const IntPoint&);
- Selection::SelectionType selectionType() const { return m_sel.selectionType(); }
+ VisibleSelection::SelectionType selectionType() const { return m_sel.selectionType(); }
EAffinity affinity() const { return m_sel.affinity(); }
@@ -154,7 +154,7 @@
Frame* m_frame;
int m_xPosForVerticalArrowNavigation;
- Selection m_sel;
+ VisibleSelection m_sel;
IntRect m_caretRect; // caret rect in coords local to the renderer responsible for painting the caret
IntRect m_absCaretBounds; // absolute bounding rect for the caret
diff --git a/WebCore/editing/TypingCommand.cpp b/WebCore/editing/TypingCommand.cpp
index 1a2950b..b6a96a9 100644
--- a/WebCore/editing/TypingCommand.cpp
+++ b/WebCore/editing/TypingCommand.cpp
@@ -125,14 +125,14 @@
insertText(document, text, frame->selection()->selection(), selectInsertedText, insertedTextIsComposition);
}
-void TypingCommand::insertText(Document* document, const String& text, const Selection& selectionForInsertion, bool selectInsertedText, bool insertedTextIsComposition)
+void TypingCommand::insertText(Document* document, const String& text, const VisibleSelection& selectionForInsertion, bool selectInsertedText, bool insertedTextIsComposition)
{
ASSERT(document);
RefPtr<Frame> frame = document->frame();
ASSERT(frame);
- Selection currentSelection = frame->selection()->selection();
+ VisibleSelection currentSelection = frame->selection()->selection();
bool changeSelection = currentSelection != selectionForInsertion;
String newText = text;
@@ -370,15 +370,15 @@
void TypingCommand::deleteKeyPressed(TextGranularity granularity, bool killRing)
{
- Selection selectionToDelete;
- Selection selectionAfterUndo;
+ VisibleSelection selectionToDelete;
+ VisibleSelection selectionAfterUndo;
switch (endingSelection().selectionType()) {
- case Selection::RangeSelection:
+ case VisibleSelection::RangeSelection:
selectionToDelete = endingSelection();
selectionAfterUndo = selectionToDelete;
break;
- case Selection::CaretSelection: {
+ case VisibleSelection::CaretSelection: {
if (breakOutOfEmptyMailBlockquotedParagraph()) {
typingAddedToOpenCommand();
return;
@@ -410,7 +410,7 @@
selection.modify(SelectionController::EXTEND, SelectionController::BACKWARD, granularity);
// If the caret is just after a table, select the table and don't delete anything.
} else if (Node* table = isFirstPositionAfterTable(visibleStart)) {
- setEndingSelection(Selection(Position(table, 0), endingSelection().start(), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(Position(table, 0), endingSelection().start(), DOWNSTREAM));
typingAddedToOpenCommand();
return;
}
@@ -426,12 +426,12 @@
selectionAfterUndo = selectionToDelete;
else
// It's a little tricky to compute what the starting selection would have been in the original document.
- // We can't let the Selection class's validation kick in or it'll adjust for us based on
+ // We can't let the VisibleSelection class's validation kick in or it'll adjust for us based on
// the current state of the document and we'll get the wrong result.
selectionAfterUndo.setWithoutValidation(startingSelection().end(), selectionToDelete.extent());
break;
}
- case Selection::NoSelection:
+ case VisibleSelection::NoSelection:
ASSERT_NOT_REACHED();
break;
}
@@ -452,15 +452,15 @@
void TypingCommand::forwardDeleteKeyPressed(TextGranularity granularity, bool killRing)
{
- Selection selectionToDelete;
- Selection selectionAfterUndo;
+ VisibleSelection selectionToDelete;
+ VisibleSelection selectionAfterUndo;
switch (endingSelection().selectionType()) {
- case Selection::RangeSelection:
+ case VisibleSelection::RangeSelection:
selectionToDelete = endingSelection();
selectionAfterUndo = selectionToDelete;
break;
- case Selection::CaretSelection: {
+ case VisibleSelection::CaretSelection: {
m_smartDelete = false;
// Handle delete at beginning-of-block case.
@@ -478,7 +478,7 @@
downstreamEnd = visibleEnd.next(true).deepEquivalent().downstream();
// When deleting tables: Select the table first, then perform the deletion
if (downstreamEnd.node() && downstreamEnd.node()->renderer() && downstreamEnd.node()->renderer()->isTable() && downstreamEnd.offset() == 0) {
- setEndingSelection(Selection(endingSelection().end(), Position(downstreamEnd.node(), maxDeepOffset(downstreamEnd.node())), DOWNSTREAM));
+ setEndingSelection(VisibleSelection(endingSelection().end(), Position(downstreamEnd.node(), maxDeepOffset(downstreamEnd.node())), DOWNSTREAM));
typingAddedToOpenCommand();
return;
}
@@ -492,7 +492,7 @@
selectionAfterUndo = selectionToDelete;
else {
// It's a little tricky to compute what the starting selection would have been in the original document.
- // We can't let the Selection class's validation kick in or it'll adjust for us based on
+ // We can't let the VisibleSelection class's validation kick in or it'll adjust for us based on
// the current state of the document and we'll get the wrong result.
Position extent = startingSelection().end();
if (extent.node() != selectionToDelete.end().node())
@@ -509,7 +509,7 @@
}
break;
}
- case Selection::NoSelection:
+ case VisibleSelection::NoSelection:
ASSERT_NOT_REACHED();
break;
}
diff --git a/WebCore/editing/TypingCommand.h b/WebCore/editing/TypingCommand.h
index b4e1091..e5cdde6 100644
--- a/WebCore/editing/TypingCommand.h
+++ b/WebCore/editing/TypingCommand.h
@@ -46,7 +46,7 @@
static void deleteKeyPressed(Document*, bool smartDelete = false, TextGranularity = CharacterGranularity, bool killRing = false);
static void forwardDeleteKeyPressed(Document*, bool smartDelete = false, TextGranularity = CharacterGranularity, bool killRing = false);
static void insertText(Document*, const String&, bool selectInsertedText = false, bool insertedTextIsComposition = false);
- static void insertText(Document*, const String&, const Selection&, bool selectInsertedText = false, bool insertedTextIsComposition = false);
+ static void insertText(Document*, const String&, const VisibleSelection&, bool selectInsertedText = false, bool insertedTextIsComposition = false);
static void insertLineBreak(Document*);
static void insertParagraphSeparator(Document*);
static void insertParagraphSeparatorInQuotedContent(Document*);
diff --git a/WebCore/editing/VisiblePosition.cpp b/WebCore/editing/VisiblePosition.cpp
index 3d771c6..27fe03a 100644
--- a/WebCore/editing/VisiblePosition.cpp
+++ b/WebCore/editing/VisiblePosition.cpp
@@ -399,7 +399,7 @@
// Return pos itself if the two are from the very same editable region, or both are non-editable
// FIXME: In the non-editable case, just because the new position is non-editable doesn't mean movement
- // to it is allowed. Selection::adjustForEditableContent has this problem too.
+ // to it is allowed. VisibleSelection::adjustForEditableContent has this problem too.
if (highestEditableRoot(pos.deepEquivalent()) == highestRoot)
return pos;
@@ -425,7 +425,7 @@
// Return pos itself if the two are from the very same editable region, or both are non-editable
// FIXME: In the non-editable case, just because the new position is non-editable doesn't mean movement
- // to it is allowed. Selection::adjustForEditableContent has this problem too.
+ // to it is allowed. VisibleSelection::adjustForEditableContent has this problem too.
if (highestEditableRoot(pos.deepEquivalent()) == highestRoot)
return pos;
diff --git a/WebCore/editing/Selection.cpp b/WebCore/editing/VisibleSelection.cpp
similarity index 90%
rename from WebCore/editing/Selection.cpp
rename to WebCore/editing/VisibleSelection.cpp
index 9701c97..b99f41c 100644
--- a/WebCore/editing/Selection.cpp
+++ b/WebCore/editing/VisibleSelection.cpp
@@ -24,7 +24,7 @@
*/
#include "config.h"
-#include "Selection.h"
+#include "VisibleSelection.h"
#include "CharacterNames.h"
#include "CString.h"
@@ -35,12 +35,13 @@
#include "VisiblePosition.h"
#include "visible_units.h"
#include "Range.h"
+
#include <wtf/Assertions.h>
#include <stdio.h>
namespace WebCore {
-Selection::Selection()
+VisibleSelection::VisibleSelection()
: m_affinity(DOWNSTREAM)
, m_granularity(CharacterGranularity)
, m_selectionType(NoSelection)
@@ -48,7 +49,7 @@
{
}
-Selection::Selection(const Position& pos, EAffinity affinity)
+VisibleSelection::VisibleSelection(const Position& pos, EAffinity affinity)
: m_base(pos)
, m_extent(pos)
, m_affinity(affinity)
@@ -57,7 +58,7 @@
validate();
}
-Selection::Selection(const Position& base, const Position& extent, EAffinity affinity)
+VisibleSelection::VisibleSelection(const Position& base, const Position& extent, EAffinity affinity)
: m_base(base)
, m_extent(extent)
, m_affinity(affinity)
@@ -66,7 +67,7 @@
validate();
}
-Selection::Selection(const VisiblePosition& pos)
+VisibleSelection::VisibleSelection(const VisiblePosition& pos)
: m_base(pos.deepEquivalent())
, m_extent(pos.deepEquivalent())
, m_affinity(pos.affinity())
@@ -75,7 +76,7 @@
validate();
}
-Selection::Selection(const VisiblePosition& base, const VisiblePosition& extent)
+VisibleSelection::VisibleSelection(const VisiblePosition& base, const VisiblePosition& extent)
: m_base(base.deepEquivalent())
, m_extent(extent.deepEquivalent())
, m_affinity(base.affinity())
@@ -84,7 +85,7 @@
validate();
}
-Selection::Selection(const Range* range, EAffinity affinity)
+VisibleSelection::VisibleSelection(const Range* range, EAffinity affinity)
: m_base(range->startPosition())
, m_extent(range->endPosition())
, m_affinity(affinity)
@@ -93,36 +94,36 @@
validate();
}
-Selection Selection::selectionFromContentsOfNode(Node* node)
+VisibleSelection VisibleSelection::selectionFromContentsOfNode(Node* node)
{
- return Selection(Position(node, 0), Position(node, maxDeepOffset(node)), DOWNSTREAM);
+ return VisibleSelection(Position(node, 0), Position(node, maxDeepOffset(node)), DOWNSTREAM);
}
-void Selection::setBase(const Position& position)
+void VisibleSelection::setBase(const Position& position)
{
m_base = position;
validate();
}
-void Selection::setBase(const VisiblePosition& visiblePosition)
+void VisibleSelection::setBase(const VisiblePosition& visiblePosition)
{
m_base = visiblePosition.deepEquivalent();
validate();
}
-void Selection::setExtent(const Position& position)
+void VisibleSelection::setExtent(const Position& position)
{
m_extent = position;
validate();
}
-void Selection::setExtent(const VisiblePosition& visiblePosition)
+void VisibleSelection::setExtent(const VisiblePosition& visiblePosition)
{
m_extent = visiblePosition.deepEquivalent();
validate();
}
-PassRefPtr<Range> Selection::firstRange() const
+PassRefPtr<Range> VisibleSelection::firstRange() const
{
if (isNone())
return 0;
@@ -131,7 +132,7 @@
return Range::create(start.node()->document(), start, end);
}
-PassRefPtr<Range> Selection::toNormalizedRange() const
+PassRefPtr<Range> VisibleSelection::toNormalizedRange() const
{
if (isNone())
return 0;
@@ -179,12 +180,12 @@
e = rangeCompliantEquivalent(e);
}
- // Selections are supposed to always be valid. This constructor will ASSERT
+ // VisibleSelections are supposed to always be valid. This constructor will ASSERT
// if a valid range could not be created, which is fine for this callsite.
return Range::create(s.node()->document(), s, e);
}
-bool Selection::expandUsingGranularity(TextGranularity granularity)
+bool VisibleSelection::expandUsingGranularity(TextGranularity granularity)
{
if (isNone())
return false;
@@ -221,7 +222,7 @@
return searchRange.release();
}
-void Selection::appendTrailingWhitespace()
+void VisibleSelection::appendTrailingWhitespace()
{
RefPtr<Range> searchRange = makeSearchRange(m_end);
if (!searchRange)
@@ -237,7 +238,7 @@
}
}
-void Selection::setBaseAndExtentToDeepEquivalents()
+void VisibleSelection::setBaseAndExtentToDeepEquivalents()
{
// Move the selection to rendered positions, if possible.
bool baseAndExtentEqual = m_base == m_extent;
@@ -262,7 +263,7 @@
m_baseIsFirst = comparePositions(m_base, m_extent) <= 0;
}
-void Selection::setStartAndEndFromBaseAndExtentRespectingGranularity()
+void VisibleSelection::setStartAndEndFromBaseAndExtentRespectingGranularity()
{
if (m_baseIsFirst) {
m_start = m_base;
@@ -387,7 +388,7 @@
m_end = m_start;
}
-void Selection::updateSelectionType()
+void VisibleSelection::updateSelectionType()
{
if (m_start.isNull()) {
ASSERT(m_end.isNull());
@@ -402,7 +403,7 @@
m_affinity = DOWNSTREAM;
}
-void Selection::validate()
+void VisibleSelection::validate()
{
setBaseAndExtentToDeepEquivalents();
setStartAndEndFromBaseAndExtentRespectingGranularity();
@@ -424,12 +425,12 @@
}
// FIXME: This function breaks the invariant of this class.
-// But because we use Selection to store values in editing commands for use when
+// But because we use VisibleSelection to store values in editing commands for use when
// undoing the command, we need to be able to create a selection that while currently
// invalid, will be valid once the changes are undone. This is a design problem.
-// To fix it we either need to change the invariants of Selection or create a new
+// To fix it we either need to change the invariants of VisibleSelection or create a new
// class for editing to use that can manipulate selections that are not currently valid.
-void Selection::setWithoutValidation(const Position& base, const Position& extent)
+void VisibleSelection::setWithoutValidation(const Position& base, const Position& extent)
{
ASSERT(!base.isNull());
ASSERT(!extent.isNull());
@@ -449,7 +450,7 @@
m_selectionType = RangeSelection;
}
-void Selection::adjustSelectionToAvoidCrossingEditingBoundaries()
+void VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries()
{
if (m_base.isNull() || m_start.isNull() || m_end.isNull())
return;
@@ -558,32 +559,32 @@
m_extent = m_baseIsFirst ? m_end : m_start;
}
-bool Selection::isContentEditable() const
+bool VisibleSelection::isContentEditable() const
{
return isEditablePosition(start());
}
-bool Selection::isContentRichlyEditable() const
+bool VisibleSelection::isContentRichlyEditable() const
{
return isRichlyEditablePosition(start());
}
-Element* Selection::rootEditableElement() const
+Element* VisibleSelection::rootEditableElement() const
{
return editableRootForPosition(start());
}
-Node* Selection::shadowTreeRootNode() const
+Node* VisibleSelection::shadowTreeRootNode() const
{
return start().node() ? start().node()->shadowTreeRootNode() : 0;
}
-void Selection::debugPosition() const
+void VisibleSelection::debugPosition() const
{
if (!m_start.node())
return;
- fprintf(stderr, "Selection =================\n");
+ fprintf(stderr, "VisibleSelection =================\n");
if (m_start == m_end) {
Position pos = m_start;
@@ -602,7 +603,7 @@
#ifndef NDEBUG
-void Selection::formatForDebugger(char* buffer, unsigned length) const
+void VisibleSelection::formatForDebugger(char* buffer, unsigned length) const
{
String result;
String s;
@@ -623,7 +624,7 @@
strncpy(buffer, result.utf8().data(), length - 1);
}
-void Selection::showTreeForThis() const
+void VisibleSelection::showTreeForThis() const
{
if (start().node()) {
start().node()->showTreeAndMark(start().node(), "S", end().node(), "E");
@@ -637,12 +638,12 @@
#ifndef NDEBUG
-void showTree(const WebCore::Selection& sel)
+void showTree(const WebCore::VisibleSelection& sel)
{
sel.showTreeForThis();
}
-void showTree(const WebCore::Selection* sel)
+void showTree(const WebCore::VisibleSelection* sel)
{
if (sel)
sel->showTreeForThis();
diff --git a/WebCore/editing/Selection.h b/WebCore/editing/VisibleSelection.h
similarity index 85%
rename from WebCore/editing/Selection.h
rename to WebCore/editing/VisibleSelection.h
index 24752d9..ae2142d 100644
--- a/WebCore/editing/Selection.h
+++ b/WebCore/editing/VisibleSelection.h
@@ -23,8 +23,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef Selection_h
-#define Selection_h
+#ifndef VisibleSelection_h
+#define VisibleSelection_h
#include "TextGranularity.h"
#include "VisiblePosition.h"
@@ -35,21 +35,21 @@
const EAffinity SEL_DEFAULT_AFFINITY = DOWNSTREAM;
-class Selection {
+class VisibleSelection {
public:
enum SelectionType { NoSelection, CaretSelection, RangeSelection };
- Selection();
+ VisibleSelection();
- Selection(const Position&, EAffinity);
- Selection(const Position&, const Position&, EAffinity);
+ VisibleSelection(const Position&, EAffinity);
+ VisibleSelection(const Position&, const Position&, EAffinity);
- Selection(const Range*, EAffinity = SEL_DEFAULT_AFFINITY);
+ VisibleSelection(const Range*, EAffinity = SEL_DEFAULT_AFFINITY);
- Selection(const VisiblePosition&);
- Selection(const VisiblePosition&, const VisiblePosition&);
+ VisibleSelection(const VisiblePosition&);
+ VisibleSelection(const VisiblePosition&, const VisiblePosition&);
- static Selection selectionFromContentsOfNode(Node*);
+ static VisibleSelection selectionFromContentsOfNode(Node*);
SelectionType selectionType() const { return m_selectionType; }
@@ -112,6 +112,7 @@
void adjustSelectionToAvoidCrossingEditingBoundaries();
void updateSelectionType();
+ // FIXME: These should all be VisiblePositions
Position m_base; // Where the first click happened
Position m_extent; // Where the end click happened
Position m_start; // Leftmost position when expanded to respect granularity
@@ -125,12 +126,12 @@
bool m_baseIsFirst; // true if base is before the extent
};
-inline bool operator==(const Selection& a, const Selection& b)
+inline bool operator==(const VisibleSelection& a, const VisibleSelection& b)
{
return a.start() == b.start() && a.end() == b.end() && a.affinity() == b.affinity() && a.granularity() == b.granularity() && a.isBaseFirst() == b.isBaseFirst();
}
-inline bool operator!=(const Selection& a, const Selection& b)
+inline bool operator!=(const VisibleSelection& a, const VisibleSelection& b)
{
return !(a == b);
}
@@ -139,8 +140,8 @@
#ifndef NDEBUG
// Outside the WebCore namespace for ease of invocation from gdb.
-void showTree(const WebCore::Selection&);
-void showTree(const WebCore::Selection*);
+void showTree(const WebCore::VisibleSelection&);
+void showTree(const WebCore::VisibleSelection*);
#endif
-#endif // Selection_h
+#endif // VisibleSelection_h
diff --git a/WebCore/editing/htmlediting.cpp b/WebCore/editing/htmlediting.cpp
index e0c03a4..4e39e9e 100644
--- a/WebCore/editing/htmlediting.cpp
+++ b/WebCore/editing/htmlediting.cpp
@@ -40,7 +40,7 @@
#include "PositionIterator.h"
#include "RenderObject.h"
#include "Range.h"
-#include "Selection.h"
+#include "VisibleSelection.h"
#include "Text.h"
#include "TextIterator.h"
#include "VisiblePosition.h"
@@ -915,9 +915,9 @@
// Modifies selections that have an end point at the edge of a table
// that contains the other endpoint so that they don't confuse
// code that iterates over selected paragraphs.
-Selection selectionForParagraphIteration(const Selection& original)
+VisibleSelection selectionForParagraphIteration(const VisibleSelection& original)
{
- Selection newSelection(original);
+ VisibleSelection newSelection(original);
VisiblePosition startOfSelection(newSelection.visibleStart());
VisiblePosition endOfSelection(newSelection.visibleEnd());
@@ -927,7 +927,7 @@
// (a table is itself a paragraph).
if (Node* table = isFirstPositionAfterTable(endOfSelection))
if (startOfSelection.deepEquivalent().node()->isDescendantOf(table))
- newSelection = Selection(startOfSelection, endOfSelection.previous(true));
+ newSelection = VisibleSelection(startOfSelection, endOfSelection.previous(true));
// If the start of the selection to modify is just before a table,
// and if the end of the selection is inside that table, then the first paragraph
@@ -935,7 +935,7 @@
// containing the table itself.
if (Node* table = isLastPositionBeforeTable(startOfSelection))
if (endOfSelection.deepEquivalent().node()->isDescendantOf(table))
- newSelection = Selection(startOfSelection.next(true), endOfSelection);
+ newSelection = VisibleSelection(startOfSelection.next(true), endOfSelection);
return newSelection;
}
@@ -981,12 +981,12 @@
return Range::create(document, startContainer, startOffset, endContainer, endOffset);
}
-Selection avoidIntersectionWithNode(const Selection& selection, Node* node)
+VisibleSelection avoidIntersectionWithNode(const VisibleSelection& selection, Node* node)
{
if (selection.isNone())
- return Selection(selection);
+ return VisibleSelection(selection);
- Selection updatedSelection(selection);
+ VisibleSelection updatedSelection(selection);
Node* base = selection.base().node();
Node* extent = selection.extent().node();
ASSERT(base);
diff --git a/WebCore/editing/htmlediting.h b/WebCore/editing/htmlediting.h
index a8bc0b4..3a7523e 100644
--- a/WebCore/editing/htmlediting.h
+++ b/WebCore/editing/htmlediting.h
@@ -37,7 +37,7 @@
class Node;
class Position;
class Range;
-class Selection;
+class VisibleSelection;
class String;
class VisiblePosition;
@@ -72,7 +72,7 @@
Position positionAfterNode(const Node*);
PassRefPtr<Range> avoidIntersectionWithNode(const Range*, Node*);
-Selection avoidIntersectionWithNode(const Selection&, Node*);
+VisibleSelection avoidIntersectionWithNode(const VisibleSelection&, Node*);
bool isSpecialElement(const Node*);
bool validBlockTag(const String&);
@@ -129,7 +129,7 @@
bool lineBreakExistsAtPosition(const VisiblePosition&);
-Selection selectionForParagraphIteration(const Selection&);
+VisibleSelection selectionForParagraphIteration(const VisibleSelection&);
int indexForVisiblePosition(VisiblePosition&);
diff --git a/WebCore/editing/markup.cpp b/WebCore/editing/markup.cpp
index b31dd4a..436abf9 100644
--- a/WebCore/editing/markup.cpp
+++ b/WebCore/editing/markup.cpp
@@ -52,7 +52,7 @@
#include "ProcessingInstruction.h"
#include "QualifiedName.h"
#include "Range.h"
-#include "Selection.h"
+#include "VisibleSelection.h"
#include "TextIterator.h"
#include "htmlediting.h"
#include "visible_units.h"
@@ -901,7 +901,7 @@
// FIXME: Only include markup for a fully selected root (and ancestors of lastClosed up to that root) if
// there are styles/attributes on those nodes that need to be included to preserve the appearance of the copied markup.
// FIXME: Do this for all fully selected blocks, not just the body.
- Node* fullySelectedRoot = body && *Selection::selectionFromContentsOfNode(body).toNormalizedRange() == *updatedRange ? body : 0;
+ Node* fullySelectedRoot = body && *VisibleSelection::selectionFromContentsOfNode(body).toNormalizedRange() == *updatedRange ? body : 0;
if (annotate && fullySelectedRoot)
specialCommonAncestor = fullySelectedRoot;
diff --git a/WebCore/html/HTMLInputElement.cpp b/WebCore/html/HTMLInputElement.cpp
index 6e1a7f3..815898e 100644
--- a/WebCore/html/HTMLInputElement.cpp
+++ b/WebCore/html/HTMLInputElement.cpp
@@ -1505,10 +1505,10 @@
dispatchEventForType(eventNames().searchEvent, true, false);
}
-Selection HTMLInputElement::selection() const
+VisibleSelection HTMLInputElement::selection() const
{
if (!renderer() || !isTextField() || m_data.cachedSelectionStart() == -1 || m_data.cachedSelectionEnd() == -1)
- return Selection();
+ return VisibleSelection();
return static_cast<RenderTextControl*>(renderer())->selection(m_data.cachedSelectionStart(), m_data.cachedSelectionEnd());
}
diff --git a/WebCore/html/HTMLInputElement.h b/WebCore/html/HTMLInputElement.h
index 95409e2..b8db4e2 100644
--- a/WebCore/html/HTMLInputElement.h
+++ b/WebCore/html/HTMLInputElement.h
@@ -33,7 +33,7 @@
class FileList;
class HTMLImageLoader;
class KURL;
-class Selection;
+class VisibleSelection;
class HTMLInputElement : public HTMLFormControlElementWithState, public InputElement {
public:
@@ -200,7 +200,7 @@
void addSearchResult();
void onSearch();
- Selection selection() const;
+ VisibleSelection selection() const;
virtual String constrainValue(const String& proposedValue) const;
diff --git a/WebCore/html/HTMLTextAreaElement.cpp b/WebCore/html/HTMLTextAreaElement.cpp
index 0dd6abe..0be15bc 100644
--- a/WebCore/html/HTMLTextAreaElement.cpp
+++ b/WebCore/html/HTMLTextAreaElement.cpp
@@ -37,7 +37,7 @@
#include "Page.h"
#include "RenderStyle.h"
#include "RenderTextControlMultiLine.h"
-#include "Selection.h"
+#include "VisibleSelection.h"
#include "Text.h"
#include <wtf/StdLibExtras.h>
@@ -381,10 +381,10 @@
setAttribute(rowsAttr, String::number(rows));
}
-Selection HTMLTextAreaElement::selection() const
+VisibleSelection HTMLTextAreaElement::selection() const
{
if (!renderer() || m_cachedSelectionStart < 0 || m_cachedSelectionEnd < 0)
- return Selection();
+ return VisibleSelection();
return static_cast<RenderTextControl*>(renderer())->selection(m_cachedSelectionStart, m_cachedSelectionEnd);
}
diff --git a/WebCore/html/HTMLTextAreaElement.h b/WebCore/html/HTMLTextAreaElement.h
index f02ad65..f78386c 100644
--- a/WebCore/html/HTMLTextAreaElement.h
+++ b/WebCore/html/HTMLTextAreaElement.h
@@ -28,7 +28,7 @@
namespace WebCore {
-class Selection;
+class VisibleSelection;
class HTMLTextAreaElement : public HTMLFormControlElementWithState {
public:
@@ -87,7 +87,7 @@
void setRows(int);
void cacheSelection(int s, int e) { m_cachedSelectionStart = s; m_cachedSelectionEnd = e; };
- Selection selection() const;
+ VisibleSelection selection() const;
virtual bool shouldUseInputMethod() const;
diff --git a/WebCore/page/AccessibilityObject.cpp b/WebCore/page/AccessibilityObject.cpp
index 6d441d0..61a7d40 100644
--- a/WebCore/page/AccessibilityObject.cpp
+++ b/WebCore/page/AccessibilityObject.cpp
@@ -231,9 +231,9 @@
return nullAtom;
}
-Selection AccessibilityObject::selection() const
+VisibleSelection AccessibilityObject::selection() const
{
- return Selection();
+ return VisibleSelection();
}
PlainTextRange AccessibilityObject::selectedTextRange() const
@@ -357,7 +357,7 @@
// use selection order to see if the positions are in order
else
- alreadyInOrder = Selection(visiblePos1, visiblePos2).isBaseFirst();
+ alreadyInOrder = VisibleSelection(visiblePos1, visiblePos2).isBaseFirst();
if (alreadyInOrder) {
startPos = visiblePos1;
diff --git a/WebCore/page/AccessibilityObject.h b/WebCore/page/AccessibilityObject.h
index a751003..87ea9d5 100644
--- a/WebCore/page/AccessibilityObject.h
+++ b/WebCore/page/AccessibilityObject.h
@@ -83,7 +83,7 @@
class IntSize;
class Node;
class RenderObject;
-class Selection;
+class VisibleSelection;
class String;
class Widget;
@@ -285,7 +285,7 @@
virtual KURL url() const;
virtual PlainTextRange selectedTextRange() const;
- virtual Selection selection() const;
+ virtual VisibleSelection selection() const;
unsigned selectionStart() const;
unsigned selectionEnd() const;
virtual String stringValue() const;
diff --git a/WebCore/page/AccessibilityRenderObject.cpp b/WebCore/page/AccessibilityRenderObject.cpp
index ff7a87f..78e4bce 100644
--- a/WebCore/page/AccessibilityRenderObject.cpp
+++ b/WebCore/page/AccessibilityRenderObject.cpp
@@ -1328,7 +1328,7 @@
return static_cast<Element*>(node)->getAttribute(accesskeyAttr);
}
-Selection AccessibilityRenderObject::selection() const
+VisibleSelection AccessibilityRenderObject::selection() const
{
return m_renderer->document()->frame()->selection()->selection();
}
@@ -1370,7 +1370,7 @@
if (!frame)
return;
Node* node = m_renderer->element();
- frame->selection()->setSelection(Selection(Position(node, range.start),
+ frame->selection()->setSelection(VisibleSelection(Position(node, range.start),
Position(node, range.start + range.length), DOWNSTREAM));
}
@@ -1620,7 +1620,7 @@
// starting at an empty line. The resulting selection in that case
// will be a caret at visiblePos.
SelectionController selection;
- selection.setSelection(Selection(visiblePos));
+ selection.setSelection(VisibleSelection(visiblePos));
selection.modify(SelectionController::EXTEND, SelectionController::RIGHT, LineBoundary);
return VisiblePositionRange(selection.selection().visibleStart(), selection.selection().visibleEnd());
@@ -1727,7 +1727,7 @@
m_renderer->document()->frame()->selection()->moveTo(range.start, true);
}
else {
- Selection newSelection = Selection(range.start, range.end);
+ VisibleSelection newSelection = VisibleSelection(range.start, range.end);
m_renderer->document()->frame()->selection()->setSelection(newSelection);
}
}
@@ -1836,7 +1836,7 @@
// starting at an empty line. The resulting selection in that case
// will be a caret at visiblePos.
SelectionController selection;
- selection.setSelection(Selection(visiblePos));
+ selection.setSelection(VisibleSelection(visiblePos));
selection.modify(SelectionController::EXTEND, SelectionController::LEFT, LineBoundary);
selection.modify(SelectionController::EXTEND, SelectionController::RIGHT, LineBoundary);
diff --git a/WebCore/page/AccessibilityRenderObject.h b/WebCore/page/AccessibilityRenderObject.h
index 03ba1db..0b8e11f 100644
--- a/WebCore/page/AccessibilityRenderObject.h
+++ b/WebCore/page/AccessibilityRenderObject.h
@@ -51,7 +51,7 @@
class RenderListBox;
class RenderTextControl;
class RenderView;
-class Selection;
+class VisibleSelection;
class String;
class Widget;
@@ -156,7 +156,7 @@
virtual KURL url() const;
virtual PlainTextRange selectedTextRange() const;
- virtual Selection selection() const;
+ virtual VisibleSelection selection() const;
virtual String stringValue() const;
virtual String ariaAccessiblityName(const String&) const;
virtual String ariaLabeledByAttribute() const;
diff --git a/WebCore/page/DOMSelection.cpp b/WebCore/page/DOMSelection.cpp
index 6f284e6..2397619 100644
--- a/WebCore/page/DOMSelection.cpp
+++ b/WebCore/page/DOMSelection.cpp
@@ -61,7 +61,7 @@
if (!m_frame)
return 0;
- const Selection& selection = m_frame->selection()->selection();
+ const VisibleSelection& selection = m_frame->selection()->selection();
Position anchor = selection.isBaseFirst() ? selection.start() : selection.end();
anchor = rangeCompliantEquivalent(anchor);
return anchor.node();
@@ -79,7 +79,7 @@
if (!m_frame)
return 0;
- const Selection& selection = m_frame->selection()->selection();
+ const VisibleSelection& selection = m_frame->selection()->selection();
Position anchor = selection.isBaseFirst() ? selection.start() : selection.end();
anchor = rangeCompliantEquivalent(anchor);
return anchor.offset();
@@ -97,7 +97,7 @@
if (!m_frame)
return 0;
- const Selection& selection = m_frame->selection()->selection();
+ const VisibleSelection& selection = m_frame->selection()->selection();
Position focus = selection.isBaseFirst() ? selection.end() : selection.start();
focus = rangeCompliantEquivalent(focus);
return focus.node();
@@ -115,7 +115,7 @@
if (!m_frame)
return 0;
- const Selection& selection = m_frame->selection()->selection();
+ const VisibleSelection& selection = m_frame->selection()->selection();
Position focus = selection.isBaseFirst() ? selection.end() : selection.start();
focus = rangeCompliantEquivalent(focus);
return focus.offset();
@@ -173,7 +173,7 @@
if (!m_frame)
return;
- const Selection& selection = m_frame->selection()->selection();
+ const VisibleSelection& selection = m_frame->selection()->selection();
m_frame->selection()->moveTo(VisiblePosition(selection.end(), DOWNSTREAM));
}
@@ -182,7 +182,7 @@
if (!m_frame)
return;
- const Selection& selection = m_frame->selection()->selection();
+ const VisibleSelection& selection = m_frame->selection()->selection();
m_frame->selection()->moveTo(VisiblePosition(selection.start(), DOWNSTREAM));
}
@@ -301,7 +301,7 @@
// If you're hitting this, you've added broken multi-range selection support
ASSERT(rangeCount() == 1);
- const Selection& selection = m_frame->selection()->selection();
+ const VisibleSelection& selection = m_frame->selection()->selection();
return selection.firstRange();
}
@@ -322,7 +322,7 @@
SelectionController* selection = m_frame->selection();
if (selection->isNone()) {
- selection->setSelection(Selection(r));
+ selection->setSelection(VisibleSelection(r));
return;
}
@@ -333,20 +333,20 @@
if (r->compareBoundaryPoints(Range::START_TO_END, range.get(), ec) > -1) {
if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), ec) == -1)
// The original range and r intersect.
- selection->setSelection(Selection(r->startPosition(), range->endPosition(), DOWNSTREAM));
+ selection->setSelection(VisibleSelection(r->startPosition(), range->endPosition(), DOWNSTREAM));
else
// r contains the original range.
- selection->setSelection(Selection(r));
+ selection->setSelection(VisibleSelection(r));
}
} else {
// We don't support discontiguous selection. We don't do anything if r and range don't intersect.
if (r->compareBoundaryPoints(Range::END_TO_START, range.get(), ec) < 1) {
if (r->compareBoundaryPoints(Range::END_TO_END, range.get(), ec) == -1)
// The original range contains r.
- selection->setSelection(Selection(range.get()));
+ selection->setSelection(VisibleSelection(range.get()));
else
// The original range and r intersect.
- selection->setSelection(Selection(range->startPosition(), r->endPosition(), DOWNSTREAM));
+ selection->setSelection(VisibleSelection(range->startPosition(), r->endPosition(), DOWNSTREAM));
}
}
}
diff --git a/WebCore/page/DOMSelection.h b/WebCore/page/DOMSelection.h
index fd8d1fc..efabd63 100644
--- a/WebCore/page/DOMSelection.h
+++ b/WebCore/page/DOMSelection.h
@@ -50,7 +50,7 @@
Frame* frame() const;
void disconnectFrame();
- // Safari Selection Object API
+ // Safari VisibleSelection Object API
// These methods return the valid equivalents of internal editing positions.
Node* baseNode() const;
Node* extentNode() const;
@@ -61,7 +61,7 @@
void setPosition(Node*, int offset, ExceptionCode&);
void modify(const String& alter, const String& direction, const String& granularity);
- // Mozilla Selection Object API
+ // Mozilla VisibleSelection Object API
// In Firefox, anchor/focus are the equal to the start/end of the selection,
// but reflect the direction in which the selection was made by the user. That does
// not mean that they are base/extent, since the base/extent don't reflect
@@ -86,7 +86,7 @@
String toString();
- // Microsoft Selection Object API
+ // Microsoft VisibleSelection Object API
void empty();
//void clear();
//TextRange *createRange();
diff --git a/WebCore/page/DragController.cpp b/WebCore/page/DragController.cpp
index 4877934..d014594 100644
--- a/WebCore/page/DragController.cpp
+++ b/WebCore/page/DragController.cpp
@@ -280,7 +280,7 @@
Frame* innerFrame = element->document()->frame();
ASSERT(innerFrame);
if (!asFileInput(element)) {
- Selection dragCaret;
+ VisibleSelection dragCaret;
if (Frame* frame = m_document->frame())
dragCaret = frame->visiblePositionForPoint(point);
m_page->dragCaretController()->setSelection(dragCaret);
@@ -309,7 +309,7 @@
return dragOperation(dragData);
}
-static bool setSelectionToDragCaret(Frame* frame, Selection& dragCaret, RefPtr<Range>& range, const IntPoint& point)
+static bool setSelectionToDragCaret(Frame* frame, VisibleSelection& dragCaret, RefPtr<Range>& range, const IntPoint& point)
{
frame->selection()->setSelection(dragCaret);
if (frame->selection()->isNone()) {
@@ -381,7 +381,7 @@
return true;
}
- Selection dragCaret(m_page->dragCaretController()->selection());
+ VisibleSelection dragCaret(m_page->dragCaretController()->selection());
m_page->dragCaretController()->clear();
RefPtr<Range> range = dragCaret.toNormalizedRange();
@@ -554,7 +554,7 @@
ExceptionCode ec = 0;
range->selectNode(node, ec);
ASSERT(ec == 0);
- src->selection()->setSelection(Selection(range.get(), DOWNSTREAM));
+ src->selection()->setSelection(VisibleSelection(range.get(), DOWNSTREAM));
clipboard->declareAndWriteDragImage(node, !linkURL.isEmpty() ? linkURL : imageURL, label, src);
}
@@ -661,7 +661,7 @@
Position pos = src->selection()->base();
Node* node = enclosingAnchorElement(pos);
if (node)
- src->selection()->setSelection(Selection::selectionFromContentsOfNode(node));
+ src->selection()->setSelection(VisibleSelection::selectionFromContentsOfNode(node));
}
m_client->willPerformDragSourceAction(DragSourceActionLink, dragOrigin, clipboard);
@@ -771,7 +771,7 @@
if (!frameView)
return;
IntPoint framePoint = frameView->windowToContents(windowPoint);
- Selection dragCaret(frame->visiblePositionForPoint(framePoint));
+ VisibleSelection dragCaret(frame->visiblePositionForPoint(framePoint));
m_page->dragCaretController()->setSelection(dragCaret);
}
diff --git a/WebCore/page/EditorClient.h b/WebCore/page/EditorClient.h
index 56d0435..c4bbed4 100644
--- a/WebCore/page/EditorClient.h
+++ b/WebCore/page/EditorClient.h
@@ -50,7 +50,7 @@
class KeyboardEvent;
class Node;
class Range;
-class Selection;
+class VisibleSelection;
class String;
class VisiblePosition;
diff --git a/WebCore/page/EventHandler.cpp b/WebCore/page/EventHandler.cpp
index bc8f9a4..892f85e 100644
--- a/WebCore/page/EventHandler.cpp
+++ b/WebCore/page/EventHandler.cpp
@@ -184,12 +184,12 @@
void EventHandler::selectClosestWordFromMouseEvent(const MouseEventWithHitTestResults& result)
{
Node* innerNode = result.targetNode();
- Selection newSelection;
+ VisibleSelection newSelection;
if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) {
VisiblePosition pos(innerNode->renderer()->positionForPoint(result.localPoint()));
if (pos.isNotNull()) {
- newSelection = Selection(pos);
+ newSelection = VisibleSelection(pos);
newSelection.expandUsingGranularity(WordGranularity);
}
@@ -213,11 +213,11 @@
Node* innerNode = result.targetNode();
if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) {
- Selection newSelection;
+ VisibleSelection newSelection;
Element* URLElement = result.hitTestResult().URLElement();
VisiblePosition pos(innerNode->renderer()->positionForPoint(result.localPoint()));
if (pos.isNotNull() && pos.deepEquivalent().node()->isDescendantOf(URLElement))
- newSelection = Selection::selectionFromContentsOfNode(URLElement);
+ newSelection = VisibleSelection::selectionFromContentsOfNode(URLElement);
if (newSelection.isRange()) {
m_frame->setSelectionGranularity(WordGranularity);
@@ -256,10 +256,10 @@
if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
return false;
- Selection newSelection;
+ VisibleSelection newSelection;
VisiblePosition pos(innerNode->renderer()->positionForPoint(event.localPoint()));
if (pos.isNotNull()) {
- newSelection = Selection(pos);
+ newSelection = VisibleSelection(pos);
newSelection.expandUsingGranularity(ParagraphGranularity);
}
if (newSelection.isRange()) {
@@ -298,7 +298,7 @@
visiblePos = VisiblePosition(innerNode, 0, DOWNSTREAM);
Position pos = visiblePos.deepEquivalent();
- Selection newSelection = m_frame->selection()->selection();
+ VisibleSelection newSelection = m_frame->selection()->selection();
if (extendSelection && newSelection.isCaretOrRange()) {
m_frame->selection()->setLastChangeWasHorizontalExtension(false);
@@ -308,15 +308,15 @@
Position end = newSelection.end();
short before = Range::compareBoundaryPoints(pos.node(), pos.offset(), start.node(), start.offset());
if (before <= 0)
- newSelection = Selection(pos, end);
+ newSelection = VisibleSelection(pos, end);
else
- newSelection = Selection(start, pos);
+ newSelection = VisibleSelection(start, pos);
if (m_frame->selectionGranularity() != CharacterGranularity)
newSelection.expandUsingGranularity(m_frame->selectionGranularity());
m_beganSelectingText = true;
} else {
- newSelection = Selection(visiblePos);
+ newSelection = VisibleSelection(visiblePos);
m_frame->setSelectionGranularity(CharacterGranularity);
}
@@ -493,7 +493,7 @@
// Restart the selection if this is the first mouse move. This work is usually
// done in handleMousePressEvent, but not if the mouse press was on an existing selection.
- Selection newSelection = m_frame->selection()->selection();
+ VisibleSelection newSelection = m_frame->selection()->selection();
#if ENABLE(SVG)
// Special case to limit selection to the containing block for SVG text.
@@ -507,7 +507,7 @@
if (!m_beganSelectingText) {
m_beganSelectingText = true;
- newSelection = Selection(targetPosition);
+ newSelection = VisibleSelection(targetPosition);
}
newSelection.setExtent(targetPosition);
@@ -558,11 +558,11 @@
if (m_mouseDownWasSingleClickInSelection && !m_beganSelectingText
&& m_dragStartPos == event.event().pos()
&& m_frame->selection()->isRange()) {
- Selection newSelection;
+ VisibleSelection newSelection;
Node *node = event.targetNode();
if (node && node->isContentEditable() && node->renderer()) {
VisiblePosition pos = node->renderer()->positionForPoint(event.localPoint());
- newSelection = Selection(pos);
+ newSelection = VisibleSelection(pos);
}
if (m_frame->shouldChangeSelection(newSelection))
m_frame->selection()->setSelection(newSelection);
diff --git a/WebCore/page/Frame.cpp b/WebCore/page/Frame.cpp
index fd69378..a4f2948 100644
--- a/WebCore/page/Frame.cpp
+++ b/WebCore/page/Frame.cpp
@@ -500,12 +500,12 @@
return String();
}
-const Selection& Frame::mark() const
+const VisibleSelection& Frame::mark() const
{
return m_mark;
}
-void Frame::setMark(const Selection& s)
+void Frame::setMark(const VisibleSelection& s)
{
ASSERT(!s.base().node() || s.base().node()->document() == document());
ASSERT(!s.extent().node() || s.extent().node()->document() == document());
@@ -624,7 +624,7 @@
if (!view)
return;
- Selection selection = this->selection()->selection();
+ VisibleSelection selection = this->selection()->selection();
if (!selection.isRange())
view->clearSelection();
@@ -827,18 +827,18 @@
m_doc->updateStyleSelector();
}
-bool Frame::shouldChangeSelection(const Selection& newSelection) const
+bool Frame::shouldChangeSelection(const VisibleSelection& newSelection) const
{
return shouldChangeSelection(selection()->selection(), newSelection, newSelection.affinity(), false);
}
-bool Frame::shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity affinity, bool stillSelecting) const
+bool Frame::shouldChangeSelection(const VisibleSelection& oldSelection, const VisibleSelection& newSelection, EAffinity affinity, bool stillSelecting) const
{
return editor()->client()->shouldChangeSelectedRange(oldSelection.toNormalizedRange().get(), newSelection.toNormalizedRange().get(),
affinity, stillSelecting);
}
-bool Frame::shouldDeleteSelection(const Selection& selection) const
+bool Frame::shouldDeleteSelection(const VisibleSelection& selection) const
{
return editor()->client()->shouldDeleteRange(selection.toNormalizedRange().get());
}
@@ -1255,12 +1255,12 @@
IntRect rect;
switch (selection()->selectionType()) {
- case Selection::NoSelection:
+ case VisibleSelection::NoSelection:
return;
- case Selection::CaretSelection:
+ case VisibleSelection::CaretSelection:
rect = selection()->absoluteCaretBounds();
break;
- case Selection::RangeSelection:
+ case VisibleSelection::RangeSelection:
rect = enclosingIntRect(selectionBounds(false));
break;
}
@@ -1371,7 +1371,7 @@
while (node && !node->hasTagName(bodyTag))
node = node->traverseNextNode();
if (node)
- selection()->setSelection(Selection(Position(node, 0), DOWNSTREAM));
+ selection()->setSelection(VisibleSelection(Position(node, 0), DOWNSTREAM));
}
bool Frame::inViewSourceMode() const
@@ -1396,7 +1396,7 @@
// Start from an edge of the selection, if there's a selection that's not in shadow content. Which edge
// is used depends on whether we're searching forward or backward, and whether startInSelection is set.
RefPtr<Range> searchRange(rangeOfContents(document()));
- Selection selection = this->selection()->selection();
+ VisibleSelection selection = this->selection()->selection();
if (forward)
setStart(searchRange.get(), startInSelection ? selection.visibleStart() : selection.visibleEnd());
@@ -1416,7 +1416,7 @@
// If we started in the selection and the found range exactly matches the existing selection, find again.
// Build a selection with the found range to remove collapsed whitespace.
// Compare ranges instead of selection objects to ignore the way that the current selection was made.
- if (startInSelection && *Selection(resultRange.get()).toNormalizedRange() == *selection.toNormalizedRange()) {
+ if (startInSelection && *VisibleSelection(resultRange.get()).toNormalizedRange() == *selection.toNormalizedRange()) {
searchRange = rangeOfContents(document());
if (forward)
setStart(searchRange.get(), selection.visibleEnd());
@@ -1466,7 +1466,7 @@
if (resultRange->collapsed(exception))
return false;
- this->selection()->setSelection(Selection(resultRange.get(), DOWNSTREAM));
+ this->selection()->setSelection(VisibleSelection(resultRange.get(), DOWNSTREAM));
revealSelection();
return true;
}
@@ -1682,19 +1682,19 @@
chrome->closeWindowSoon();
}
-void Frame::respondToChangedSelection(const Selection& oldSelection, bool closeTyping)
+void Frame::respondToChangedSelection(const VisibleSelection& oldSelection, bool closeTyping)
{
if (document()) {
bool isContinuousSpellCheckingEnabled = editor()->isContinuousSpellCheckingEnabled();
bool isContinuousGrammarCheckingEnabled = isContinuousSpellCheckingEnabled && editor()->isGrammarCheckingEnabled();
if (isContinuousSpellCheckingEnabled) {
- Selection newAdjacentWords;
- Selection newSelectedSentence;
+ VisibleSelection newAdjacentWords;
+ VisibleSelection newSelectedSentence;
if (selection()->selection().isContentEditable()) {
VisiblePosition newStart(selection()->selection().visibleStart());
- newAdjacentWords = Selection(startOfWord(newStart, LeftWordIfOnBoundary), endOfWord(newStart, RightWordIfOnBoundary));
+ newAdjacentWords = VisibleSelection(startOfWord(newStart, LeftWordIfOnBoundary), endOfWord(newStart, RightWordIfOnBoundary));
if (isContinuousGrammarCheckingEnabled)
- newSelectedSentence = Selection(startOfSentence(newStart), endOfSentence(newStart));
+ newSelectedSentence = VisibleSelection(startOfSentence(newStart), endOfSentence(newStart));
}
// When typing we check spelling elsewhere, so don't redo it here.
@@ -1702,11 +1702,11 @@
// oldSelection may no longer be in the document.
if (closeTyping && oldSelection.isContentEditable() && oldSelection.start().node() && oldSelection.start().node()->inDocument()) {
VisiblePosition oldStart(oldSelection.visibleStart());
- Selection oldAdjacentWords = Selection(startOfWord(oldStart, LeftWordIfOnBoundary), endOfWord(oldStart, RightWordIfOnBoundary));
+ VisibleSelection oldAdjacentWords = VisibleSelection(startOfWord(oldStart, LeftWordIfOnBoundary), endOfWord(oldStart, RightWordIfOnBoundary));
if (oldAdjacentWords != newAdjacentWords) {
editor()->markMisspellings(oldAdjacentWords);
if (isContinuousGrammarCheckingEnabled) {
- Selection oldSelectedSentence = Selection(startOfSentence(oldStart), endOfSentence(oldStart));
+ VisibleSelection oldSelectedSentence = VisibleSelection(startOfSentence(oldStart), endOfSentence(oldStart));
if (oldSelectedSentence != newSelectedSentence)
editor()->markBadGrammar(oldSelectedSentence);
}
diff --git a/WebCore/page/Frame.h b/WebCore/page/Frame.h
index 80d77ad..858e236 100644
--- a/WebCore/page/Frame.h
+++ b/WebCore/page/Frame.h
@@ -71,7 +71,7 @@
class ScriptController;
class RegularExpression;
class RenderPart;
-class Selection;
+class VisibleSelection;
class SelectionController;
class Widget;
@@ -203,8 +203,8 @@
String selectedText() const;
bool findString(const String&, bool forward, bool caseFlag, bool wrapFlag, bool startInSelection);
- const Selection& mark() const; // Mark, to be used as emacs uses it.
- void setMark(const Selection&);
+ const VisibleSelection& mark() const; // Mark, to be used as emacs uses it.
+ void setMark(const VisibleSelection&);
void computeAndSetTypingStyle(CSSStyleDeclaration* , EditAction = EditActionUnspecified);
String selectionStartStylePropertyValue(int stylePropertyID) const;
@@ -215,8 +215,8 @@
IntRect firstRectForRange(Range*) const;
- void respondToChangedSelection(const Selection& oldSelection, bool closeTyping);
- bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection, EAffinity, bool stillSelecting) const;
+ void respondToChangedSelection(const VisibleSelection& oldSelection, bool closeTyping);
+ bool shouldChangeSelection(const VisibleSelection& oldSelection, const VisibleSelection& newSelection, EAffinity, bool stillSelecting) const;
RenderStyle* styleForSelectionStart(Node*& nodeToRemove) const;
@@ -241,8 +241,8 @@
TextGranularity selectionGranularity() const;
void setSelectionGranularity(TextGranularity);
- bool shouldChangeSelection(const Selection&) const;
- bool shouldDeleteSelection(const Selection&) const;
+ bool shouldChangeSelection(const VisibleSelection&) const;
+ bool shouldDeleteSelection(const VisibleSelection&) const;
void clearCaretRectIfNeeded();
void setFocusedNodeIfNeeded();
void selectionLayoutChanged();
@@ -344,7 +344,7 @@
TextGranularity m_selectionGranularity;
mutable SelectionController m_selectionController;
- mutable Selection m_mark;
+ mutable VisibleSelection m_mark;
Timer<Frame> m_caretBlinkTimer;
mutable Editor m_editor;
mutable EventHandler m_eventHandler;
diff --git a/WebCore/page/Page.cpp b/WebCore/page/Page.cpp
index 9a071fb..f1e7ba5 100644
--- a/WebCore/page/Page.cpp
+++ b/WebCore/page/Page.cpp
@@ -364,7 +364,7 @@
} while (frame);
}
-const Selection& Page::selection() const
+const VisibleSelection& Page::selection() const
{
return focusController()->focusedOrMainFrame()->selection()->selection();
}
diff --git a/WebCore/page/Page.h b/WebCore/page/Page.h
index 57b191a..cf716a0 100644
--- a/WebCore/page/Page.h
+++ b/WebCore/page/Page.h
@@ -60,7 +60,7 @@
class PageGroup;
class PluginData;
class ProgressTracker;
- class Selection;
+ class VisibleSelection;
class SelectionController;
#if ENABLE(DOM_STORAGE)
class SessionStorage;
@@ -137,7 +137,7 @@
OwnPtr<SchedulePairHashSet> m_scheduledRunLoopPairs;
#endif
- const Selection& selection() const;
+ const VisibleSelection& selection() const;
void setDefersLoading(bool);
bool defersLoading() const { return m_defersLoading; }
diff --git a/WebCore/page/mac/AccessibilityObjectWrapper.mm b/WebCore/page/mac/AccessibilityObjectWrapper.mm
index f0b05f8..516f96c 100644
--- a/WebCore/page/mac/AccessibilityObjectWrapper.mm
+++ b/WebCore/page/mac/AccessibilityObjectWrapper.mm
@@ -902,7 +902,7 @@
- (WebCoreTextMarkerRange*)textMarkerRangeForSelection
{
- Selection selection = m_object->selection();
+ VisibleSelection selection = m_object->selection();
if (selection.isNone())
return nil;
return textMarkerRangeFromVisiblePositions(selection.visibleStart(), selection.visibleEnd());
diff --git a/WebCore/rendering/RenderBlock.cpp b/WebCore/rendering/RenderBlock.cpp
index 3ff1ae1..f981638 100644
--- a/WebCore/rendering/RenderBlock.cpp
+++ b/WebCore/rendering/RenderBlock.cpp
@@ -2096,7 +2096,7 @@
}
if (containsStart && !lastSelectedLine)
- // Selection must start just after our last line.
+ // VisibleSelection must start just after our last line.
lastSelectedLine = lastRootBox();
if (lastSelectedLine && selectionState() != SelectionEnd && selectionState() != SelectionBoth) {
diff --git a/WebCore/rendering/RenderTextControl.cpp b/WebCore/rendering/RenderTextControl.cpp
index 1aa07e5..0795a8e 100644
--- a/WebCore/rendering/RenderTextControl.cpp
+++ b/WebCore/rendering/RenderTextControl.cpp
@@ -249,7 +249,7 @@
ASSERT(startPosition.isNotNull() && endPosition.isNotNull());
ASSERT(startPosition.deepEquivalent().node()->shadowAncestorNode() == node() && endPosition.deepEquivalent().node()->shadowAncestorNode() == node());
- Selection newSelection = Selection(startPosition, endPosition);
+ VisibleSelection newSelection = VisibleSelection(startPosition, endPosition);
if (Frame* frame = document()->frame())
frame->selection()->setSelection(newSelection);
@@ -260,9 +260,9 @@
frame->setSelectionGranularity(CharacterGranularity);
}
-Selection RenderTextControl::selection(int start, int end) const
+VisibleSelection RenderTextControl::selection(int start, int end) const
{
- return Selection(VisiblePosition(m_innerText.get(), start, VP_DEFAULT_AFFINITY),
+ return VisibleSelection(VisiblePosition(m_innerText.get(), start, VP_DEFAULT_AFFINITY),
VisiblePosition(m_innerText.get(), end, VP_DEFAULT_AFFINITY));
}
diff --git a/WebCore/rendering/RenderTextControl.h b/WebCore/rendering/RenderTextControl.h
index 05bda5a..1549bb0 100644
--- a/WebCore/rendering/RenderTextControl.h
+++ b/WebCore/rendering/RenderTextControl.h
@@ -27,7 +27,7 @@
namespace WebCore {
class FormControlElement;
-class Selection;
+class VisibleSelection;
class TextControlInnerElement;
class TextControlInnerTextElement;
@@ -57,7 +57,7 @@
void setSelectionEnd(int);
void select();
void setSelectionRange(int start, int end);
- Selection selection(int start, int end) const;
+ VisibleSelection selection(int start, int end) const;
virtual void subtreeHasChanged();
String text();
diff --git a/WebCore/rendering/RenderTreeAsText.cpp b/WebCore/rendering/RenderTreeAsText.cpp
index 2cc0ae7..35028cb 100644
--- a/WebCore/rendering/RenderTreeAsText.cpp
+++ b/WebCore/rendering/RenderTreeAsText.cpp
@@ -516,7 +516,7 @@
if (!frame)
return;
- Selection selection = frame->selection()->selection();
+ VisibleSelection selection = frame->selection()->selection();
if (selection.isCaret()) {
ts << "caret: position " << selection.start().offset() << " of " << nodePosition(selection.start().node());
if (selection.affinity() == UPSTREAM)
diff --git a/WebCore/rendering/RootInlineBox.cpp b/WebCore/rendering/RootInlineBox.cpp
index cad50f6..d1bdc14 100644
--- a/WebCore/rendering/RootInlineBox.cpp
+++ b/WebCore/rendering/RootInlineBox.cpp
@@ -258,7 +258,7 @@
bool isPreviousBoxSelected = firstBox->selectionState() != RenderObject::SelectionNone;
for (InlineBox* box = firstBox->nextLeafChild(); box; box = box->nextLeafChild()) {
if (box->selectionState() != RenderObject::SelectionNone) {
- if (isPreviousBoxSelected) // Selection may be non-contiguous, see comment above.
+ if (isPreviousBoxSelected) // VisibleSelection may be non-contiguous, see comment above.
result.uniteCenter(block()->fillHorizontalSelectionGap(box->parent()->object(),
lastX + tx, selTop + ty,
box->xPos() - lastX, selHeight, paintInfo));
diff --git a/WebCore/svg/SVGTextContentElement.cpp b/WebCore/svg/SVGTextContentElement.cpp
index 6057da8..d8c119c 100644
--- a/WebCore/svg/SVGTextContentElement.cpp
+++ b/WebCore/svg/SVGTextContentElement.cpp
@@ -480,7 +480,7 @@
for (long i = 0; i < nchars; ++i)
end = end.next();
- controller->setSelection(Selection(start, end));
+ controller->setSelection(VisibleSelection(start, end));
}
void SVGTextContentElement::parseMappedAttribute(MappedAttribute* attr)
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index 49e96c3..68fe087 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,17 @@
+2009-02-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Dave Hyatt.
+
+ Rename Selection to VisibleSelection to allow us to separate
+ the selections the user works with from the ones used by
+ the JS editing APIs.
+ https://bugs.webkit.org/show_bug.cgi?id=23852
+
+ * WebView/WebFrame.mm:
+ (-[WebFrame _selectNSRange:]):
+ * WebView/WebView.mm:
+ (-[WebView textIteratorForRect:]):
+
2009-02-06 Anders Carlsson <andersca@apple.com>
Reviewed by Kevin Decker.
diff --git a/WebKit/mac/WebView/WebFrame.mm b/WebKit/mac/WebView/WebFrame.mm
index e32d947..c30b3ce 100644
--- a/WebKit/mac/WebView/WebFrame.mm
+++ b/WebKit/mac/WebView/WebFrame.mm
@@ -1117,7 +1117,7 @@
{
RefPtr<Range> domRange = [self _convertToDOMRange:range];
if (domRange)
- _private->coreFrame->selection()->setSelection(Selection(domRange.get(), SEL_DEFAULT_AFFINITY));
+ _private->coreFrame->selection()->setSelection(VisibleSelection(domRange.get(), SEL_DEFAULT_AFFINITY));
}
- (BOOL)_isDisplayingStandaloneImage
diff --git a/WebKit/mac/WebView/WebView.mm b/WebKit/mac/WebView/WebView.mm
index ce17e1c..09bf33e 100644
--- a/WebKit/mac/WebView/WebView.mm
+++ b/WebKit/mac/WebView/WebView.mm
@@ -2021,7 +2021,7 @@
if (!coreFrame)
return nil;
- Selection selectionInsideRect(coreFrame->visiblePositionForPoint(rectStart), coreFrame->visiblePositionForPoint(rectEnd));
+ VisibleSelection selectionInsideRect(coreFrame->visiblePositionForPoint(rectStart), coreFrame->visiblePositionForPoint(rectEnd));
return [[[WebTextIterator alloc] initWithRange:[DOMRange _wrapRange:selectionInsideRect.toNormalizedRange().get()]] autorelease];
}