本文整理汇总了C++中createVisiblePosition函数的典型用法代码示例。如果您正苦于以下问题:C++ createVisiblePosition函数的具体用法?C++ createVisiblePosition怎么用?C++ createVisiblePosition使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了createVisiblePosition函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: inlineBoxWrapper
VisiblePosition RenderReplaced::positionForPoint(const IntPoint& point)
{
InlineBox* box = inlineBoxWrapper();
if (!box)
return createVisiblePosition(0, DOWNSTREAM);
// FIXME: This code is buggy if the replaced element is relative positioned.
RootInlineBox* root = box->root();
int top = root->selectionTop();
int bottom = root->selectionBottom();
int blockDirectionPosition = box->isHorizontal() ? point.y() + y() : point.x() + x();
int lineDirectionPosition = box->isHorizontal() ? point.x() + x() : point.y() + y();
if (blockDirectionPosition < top)
return createVisiblePosition(caretMinOffset(), DOWNSTREAM); // coordinates are above
if (blockDirectionPosition >= bottom)
return createVisiblePosition(caretMaxOffset(), DOWNSTREAM); // coordinates are below
if (node()) {
if (lineDirectionPosition <= box->logicalLeft() + (box->logicalWidth() / 2))
return createVisiblePosition(0, DOWNSTREAM);
return createVisiblePosition(1, DOWNSTREAM);
}
return RenderBox::positionForPoint(point);
}
开发者ID:ACSOP,项目名称:android_external_webkit,代码行数:30,代码来源:RenderReplaced.cpp
示例2: TEST_F
TEST_F(EditingUtilitiesTest, isFirstPositionAfterTable)
{
const char* bodyContent = "<div contenteditable id=host><table id=table><tr><td>1</td></tr></table><b id=two>22</b></div>";
const char* shadowContent = "<content select=#two></content><content select=#table></content>";
setBodyContent(bodyContent);
setShadowContent(shadowContent, "host");
updateLayoutAndStyleForPainting();
Node* host = document().getElementById("host");
Node* table = document().getElementById("table");
EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(Position::afterNode(table))));
EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree::afterNode(table))));
EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(Position::lastPositionInNode(table))));
EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree::lastPositionInNode(table))));
EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(Position(host, 2))));
EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree(host, 2))));
EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(Position::afterNode(host))));
EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree::afterNode(host))));
EXPECT_EQ(nullptr, isFirstPositionAfterTable(createVisiblePosition(Position::lastPositionInNode(host))));
EXPECT_EQ(table, isFirstPositionAfterTable(createVisiblePosition(PositionInComposedTree::lastPositionInNode(host))));
}
开发者ID:howardroark2018,项目名称:chromium,代码行数:25,代码来源:EditingUtilitiesTest.cpp
示例3: if
void GranularityStrategyTest::parseText(const TextNodeVector& textNodes)
{
bool wordStarted = false;
int wordStartIndex = 0;
for (auto& text : textNodes) {
int wordStartIndexOffset = m_letterPos.size();
String str = text->wholeText();
for (size_t i = 0; i < str.length(); i++) {
m_letterPos.append(visiblePositionToContentsPoint(createVisiblePosition(Position(text, i))));
char c = str.characterAt(i);
if (isASCIIAlphanumeric(c) && !wordStarted) {
wordStartIndex = i + wordStartIndexOffset;
wordStarted = true;
} else if (!isASCIIAlphanumeric(c) && wordStarted) {
IntPoint wordMiddle((m_letterPos[wordStartIndex].x() + m_letterPos[i + wordStartIndexOffset].x()) / 2, m_letterPos[wordStartIndex].y());
m_wordMiddles.append(wordMiddle);
wordStarted = false;
}
}
}
if (wordStarted) {
const auto& lastNode = textNodes.last();
int xEnd = visiblePositionToContentsPoint(createVisiblePosition(Position(lastNode, lastNode->wholeText().length()))).x();
IntPoint wordMiddle((m_letterPos[wordStartIndex].x() + xEnd) / 2, m_letterPos[wordStartIndex].y());
m_wordMiddles.append(wordMiddle);
}
}
开发者ID:astojilj,项目名称:chromium-crosswalk,代码行数:27,代码来源:GranularityStrategyTest.cpp
示例4: createVisiblePosition
void DOMSelection::setBaseAndExtent(Node* baseNode, int baseOffset, Node* extentNode, int extentOffset, ExceptionState& exceptionState)
{
if (!m_frame)
return;
if (baseOffset < 0) {
exceptionState.throwDOMException(IndexSizeError, String::number(baseOffset) + " is not a valid base offset.");
return;
}
if (extentOffset < 0) {
exceptionState.throwDOMException(IndexSizeError, String::number(extentOffset) + " is not a valid extent offset.");
return;
}
if (!baseNode || !extentNode)
UseCounter::count(m_frame, UseCounter::SelectionSetBaseAndExtentNull);
if (!isValidForPosition(baseNode) || !isValidForPosition(extentNode))
return;
VisiblePosition visibleBase = createVisiblePosition(createPosition(baseNode, baseOffset));
VisiblePosition visibleExtent = createVisiblePosition(createPosition(extentNode, extentOffset));
m_frame->selection().moveTo(visibleBase, visibleExtent);
}
开发者ID:howardroark2018,项目名称:chromium,代码行数:26,代码来源:DOMSelection.cpp
示例5: nextPositionOf
VisibleSelectionTemplate<Strategy> PendingSelection::calcVisibleSelectionAlgorithm(const VisibleSelectionTemplate<Strategy>& originalSelection) const
{
const PositionTemplate<Strategy> start = originalSelection.start();
const PositionTemplate<Strategy> end = originalSelection.end();
SelectionType selectionType = originalSelection.selectionType();
const TextAffinity affinity = originalSelection.affinity();
bool paintBlockCursor = m_frameSelection->shouldShowBlockCursor() && selectionType == SelectionType::CaretSelection && !isLogicalEndOfLine(createVisiblePosition(end, affinity));
VisibleSelectionTemplate<Strategy> selection;
if (enclosingTextFormControl(start.computeContainerNode())) {
// TODO(yosin) We should use |PositionMoveType::Character| to avoid
// ending paint at middle of character.
PositionTemplate<Strategy> endPosition = paintBlockCursor ? nextPositionOf(originalSelection.extent(), PositionMoveType::CodePoint) : end;
selection.setWithoutValidation(start, endPosition);
return selection;
}
const VisiblePositionTemplate<Strategy> visibleStart = createVisiblePosition(start, selectionType == SelectionType::RangeSelection ? TextAffinity::Downstream : affinity);
if (paintBlockCursor) {
VisiblePositionTemplate<Strategy> visibleExtent = createVisiblePosition(end, affinity);
visibleExtent = nextPositionOf(visibleExtent, CanSkipOverEditingBoundary);
return VisibleSelectionTemplate<Strategy>(visibleStart, visibleExtent);
}
const VisiblePositionTemplate<Strategy> visibleEnd = createVisiblePosition(end, selectionType == SelectionType::RangeSelection ? TextAffinity::Upstream : affinity);
return VisibleSelectionTemplate<Strategy>(visibleStart, visibleEnd);
}
开发者ID:howardroark2018,项目名称:chromium,代码行数:26,代码来源:PendingSelection.cpp
示例6: inlineBoxWrapper
VisiblePosition RenderReplaced::positionForPoint(const IntPoint& point)
{
InlineBox* box = inlineBoxWrapper();
if (!box)
return createVisiblePosition(0, DOWNSTREAM);
// FIXME: This code is buggy if the replaced element is relative positioned.
RootInlineBox* root = box->root();
int top = root->topOverflow();
int bottom = root->nextRootBox() ? root->nextRootBox()->topOverflow() : root->bottomOverflow();
if (point.y() + y() < top)
return createVisiblePosition(caretMinOffset(), DOWNSTREAM); // coordinates are above
if (point.y() + y() >= bottom)
return createVisiblePosition(caretMaxOffset(), DOWNSTREAM); // coordinates are below
if (node()) {
if (point.x() <= width() / 2)
return createVisiblePosition(0, DOWNSTREAM);
return createVisiblePosition(1, DOWNSTREAM);
}
return RenderBox::positionForPoint(point);
}
开发者ID:tomagoyaky,项目名称:ComponentSuperAccessor,代码行数:27,代码来源:RenderReplaced.cpp
示例7: switch
VisiblePosition SelectionEditor::modifyMovingLeft(TextGranularity granularity)
{
VisiblePosition pos;
switch (granularity) {
case CharacterGranularity:
if (m_selection.isRange()) {
if (directionOfSelection() == LTR)
pos = createVisiblePosition(m_selection.start(), m_selection.affinity());
else
pos = createVisiblePosition(m_selection.end(), m_selection.affinity());
} else {
pos = leftPositionOf(createVisiblePosition(m_selection.extent(), m_selection.affinity()));
}
break;
case WordGranularity: {
bool skipsSpaceWhenMovingRight = frame() && frame()->editor().behavior().shouldSkipSpaceWhenMovingRight();
pos = leftWordPosition(createVisiblePosition(m_selection.extent(), m_selection.affinity()), skipsSpaceWhenMovingRight);
break;
}
case SentenceGranularity:
case LineGranularity:
case ParagraphGranularity:
case SentenceBoundary:
case ParagraphBoundary:
case DocumentBoundary:
// FIXME: Implement all of the above.
pos = modifyMovingBackward(granularity);
break;
case LineBoundary:
pos = leftBoundaryOfLine(startForPlatform(), directionOfEnclosingBlock());
break;
}
return pos;
}
开发者ID:dstockwell,项目名称:blink,代码行数:34,代码来源:SelectionEditor.cpp
示例8: testFunctionEquivalence
void testFunctionEquivalence(const Position& position, PositionFunction positionFunction, VisblePositionFunction visibleFunction)
{
VisiblePosition visiblePosition = createVisiblePosition(position);
VisiblePosition expected = visibleFunction(visiblePosition);
VisiblePosition actual = createVisiblePosition(positionFunction(position));
EXPECT_EQ(expected.deepEquivalent(), actual.deepEquivalent());
}
开发者ID:endlessm,项目名称:chromium-browser,代码行数:7,代码来源:HTMLTextFormControlElementTest.cpp
示例9: inlineBoxWrapper
VisiblePosition RenderReplaced::positionForPoint(const LayoutPoint& point, const RenderRegion* region)
{
// FIXME: This code is buggy if the replaced element is relative positioned.
InlineBox* box = inlineBoxWrapper();
const RootInlineBox* rootBox = box ? &box->root() : 0;
LayoutUnit top = rootBox ? rootBox->selectionTop() : logicalTop();
LayoutUnit bottom = rootBox ? rootBox->selectionBottom() : logicalBottom();
LayoutUnit blockDirectionPosition = isHorizontalWritingMode() ? point.y() + y() : point.x() + x();
LayoutUnit lineDirectionPosition = isHorizontalWritingMode() ? point.x() + x() : point.y() + y();
if (blockDirectionPosition < top)
return createVisiblePosition(caretMinOffset(), DOWNSTREAM); // coordinates are above
if (blockDirectionPosition >= bottom)
return createVisiblePosition(caretMaxOffset(), DOWNSTREAM); // coordinates are below
if (element()) {
if (lineDirectionPosition <= logicalLeft() + (logicalWidth() / 2))
return createVisiblePosition(0, DOWNSTREAM);
return createVisiblePosition(1, DOWNSTREAM);
}
return RenderBox::positionForPoint(point, region);
}
开发者ID:edcwconan,项目名称:webkit,代码行数:26,代码来源:RenderReplaced.cpp
示例10: switch
VisiblePosition SelectionModifier::modifyMovingForward(
TextGranularity granularity) {
VisiblePosition pos;
// FIXME: Stay in editable content for the less common granularities.
switch (granularity) {
case CharacterGranularity:
if (m_selection.isRange())
pos = createVisiblePosition(m_selection.end(), m_selection.affinity());
else
pos = nextPositionOf(
createVisiblePosition(m_selection.extent(), m_selection.affinity()),
CanSkipOverEditingBoundary);
break;
case WordGranularity:
pos = nextWordPositionForPlatform(
createVisiblePosition(m_selection.extent(), m_selection.affinity()));
break;
case SentenceGranularity:
pos = nextSentencePosition(
createVisiblePosition(m_selection.extent(), m_selection.affinity()));
break;
case LineGranularity: {
// down-arrowing from a range selection that ends at the start of a line
// needs to leave the selection at that line start (no need to call
// nextLinePosition!)
pos = endForPlatform();
if (!m_selection.isRange() || !isStartOfLine(pos))
pos = nextLinePosition(
pos, lineDirectionPointForBlockDirectionNavigation(START));
break;
}
case ParagraphGranularity:
pos = nextParagraphPosition(
endForPlatform(),
lineDirectionPointForBlockDirectionNavigation(START));
break;
case SentenceBoundary:
pos = endOfSentence(endForPlatform());
break;
case LineBoundary:
pos = logicalEndOfLine(endForPlatform());
break;
case ParagraphBoundary:
pos = endOfParagraph(endForPlatform());
break;
case DocumentBoundary:
pos = endForPlatform();
if (isEditablePosition(pos.deepEquivalent()))
pos = endOfEditableContent(pos);
else
pos = endOfDocument(pos);
break;
}
return pos;
}
开发者ID:mirror,项目名称:chromium,代码行数:55,代码来源:SelectionModifier.cpp
示例11: createVisiblePosition
VisiblePosition RenderSVGInlineText::positionForPoint(const LayoutPoint& point, const RenderRegion*)
{
if (!firstTextBox() || !textLength())
return createVisiblePosition(0, DOWNSTREAM);
float baseline = m_scaledFont.fontMetrics().floatAscent();
RenderBlock* containingBlock = this->containingBlock();
ASSERT(containingBlock);
// Map local point to absolute point, as the character origins stored in the text fragments use absolute coordinates.
FloatPoint absolutePoint(point);
absolutePoint.moveBy(containingBlock->location());
float closestDistance = std::numeric_limits<float>::max();
float closestDistancePosition = 0;
const SVGTextFragment* closestDistanceFragment = nullptr;
SVGInlineTextBox* closestDistanceBox = nullptr;
AffineTransform fragmentTransform;
for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) {
if (!is<SVGInlineTextBox>(*box))
continue;
auto& textBox = downcast<SVGInlineTextBox>(*box);
Vector<SVGTextFragment>& fragments = textBox.textFragments();
unsigned textFragmentsSize = fragments.size();
for (unsigned i = 0; i < textFragmentsSize; ++i) {
const SVGTextFragment& fragment = fragments.at(i);
FloatRect fragmentRect(fragment.x, fragment.y - baseline, fragment.width, fragment.height);
fragment.buildFragmentTransform(fragmentTransform);
if (!fragmentTransform.isIdentity())
fragmentRect = fragmentTransform.mapRect(fragmentRect);
float distance = powf(fragmentRect.x() - absolutePoint.x(), 2) +
powf(fragmentRect.y() + fragmentRect.height() / 2 - absolutePoint.y(), 2);
if (distance < closestDistance) {
closestDistance = distance;
closestDistanceBox = &textBox;
closestDistanceFragment = &fragment;
closestDistancePosition = fragmentRect.x();
}
}
}
if (!closestDistanceFragment)
return createVisiblePosition(0, DOWNSTREAM);
int offset = closestDistanceBox->offsetForPositionInFragment(*closestDistanceFragment, absolutePoint.x() - closestDistancePosition, true);
return createVisiblePosition(offset + closestDistanceBox->start(), offset > 0 ? VP_UPSTREAM_IF_POSSIBLE : DOWNSTREAM);
}
开发者ID:eocanha,项目名称:webkit,代码行数:53,代码来源:RenderSVGInlineText.cpp
示例12: firstRootBox
VisiblePosition RenderSVGText::positionForPoint(const LayoutPoint& pointInContents, const RenderRegion* region)
{
RootInlineBox* rootBox = firstRootBox();
if (!rootBox)
return createVisiblePosition(0, DOWNSTREAM);
ASSERT(!rootBox->nextRootBox());
ASSERT(childrenInline());
InlineBox* closestBox = downcast<SVGRootInlineBox>(*rootBox).closestLeafChildForPosition(pointInContents);
if (!closestBox)
return createVisiblePosition(0, DOWNSTREAM);
return closestBox->renderer().positionForPoint(LayoutPoint(pointInContents.x(), closestBox->y()), region);
}
开发者ID:AndriyKalashnykov,项目名称:webkit,代码行数:15,代码来源:RenderSVGText.cpp
示例13: isActive
void FrameCaret::updateAppearance() {
// Paint a block cursor instead of a caret in overtype mode unless the caret
// is at the end of a line (in this case the FrameSelection will paint a
// blinking caret as usual).
bool paintBlockCursor = m_shouldShowBlockCursor && isActive();
if (paintBlockCursor) {
// TODO(editing-dev): Use of updateStyleAndLayoutIgnorePendingStylesheets
// needs to be audited. see http://crbug.com/590369 for more details.
// In the long term, we should defer the update of the caret's appearance
// to prevent synchronous layout.
m_frame->document()->updateStyleAndLayoutIgnorePendingStylesheets();
if (isLogicalEndOfLine(createVisiblePosition(caretPosition())))
paintBlockCursor = false;
}
bool shouldBlink = !paintBlockCursor && shouldBlinkCaret();
// If the caret moved, stop the blink timer so we can restart with a
// black caret in the new location.
if (!shouldBlink || shouldStopBlinkingDueToTypingCommand(m_frame))
stopCaretBlinkTimer();
// Start blinking with a black caret. Be sure not to restart if we're
// already blinking in the right location.
if (shouldBlink)
startBlinkCaret();
}
开发者ID:mirror,项目名称:chromium,代码行数:28,代码来源:FrameCaret.cpp
示例14: TEST_F
// Test for the default CharacterGranularityStrategy
TEST_F(GranularityStrategyTest, Character)
{
dummyPageHolder().frame().settings()->setSelectionStrategy(SelectionStrategy::Character);
dummyPageHolder().frame().settings()->setDefaultFontSize(12);
// "Foo Bar Baz,"
RefPtrWillBeRawPtr<Text> text = appendTextNode("Foo Bar Baz,");
// "Foo B^a|>r Baz," (^ means base, | means extent, , < means start, and > means end).
selection().setSelection(VisibleSelection(Position(text, 5), Position(text, 6)));
EXPECT_EQ_SELECTED_TEXT("a");
// "Foo B^ar B|>az,"
selection().moveRangeSelectionExtent(visiblePositionToContentsPoint(createVisiblePosition(Position(text, 9))));
EXPECT_EQ_SELECTED_TEXT("ar B");
// "F<|oo B^ar Baz,"
selection().moveRangeSelectionExtent(visiblePositionToContentsPoint(createVisiblePosition(Position(text, 1))));
EXPECT_EQ_SELECTED_TEXT("oo B");
}
开发者ID:astojilj,项目名称:chromium-crosswalk,代码行数:17,代码来源:GranularityStrategyTest.cpp
示例15: firstRootBox
VisiblePosition RenderSVGText::positionForPoint(const LayoutPoint& pointInContents, const RenderRegion* region)
{
RootInlineBox* rootBox = firstRootBox();
if (!rootBox)
return createVisiblePosition(0, DOWNSTREAM);
ASSERT_WITH_SECURITY_IMPLICATION(rootBox->isSVGRootInlineBox());
ASSERT(!rootBox->nextRootBox());
ASSERT(childrenInline());
InlineBox* closestBox = toSVGRootInlineBox(rootBox)->closestLeafChildForPosition(pointInContents);
if (!closestBox)
return createVisiblePosition(0, DOWNSTREAM);
return closestBox->renderer().positionForPoint(LayoutPoint(pointInContents.x(), closestBox->y()), region);
}
开发者ID:ddxxyy,项目名称:webkit,代码行数:16,代码来源:RenderSVGText.cpp
示例16: firstRootBox
VisiblePosition RenderSVGText::positionForPoint(const IntPoint& pointInContents)
{
RootInlineBox* rootBox = firstRootBox();
if (!rootBox)
return createVisiblePosition(0, DOWNSTREAM);
ASSERT(rootBox->isSVGRootInlineBox());
ASSERT(!rootBox->nextRootBox());
ASSERT(childrenInline());
InlineBox* closestBox = static_cast<SVGRootInlineBox*>(rootBox)->closestLeafChildForPosition(pointInContents);
if (!closestBox)
return createVisiblePosition(0, DOWNSTREAM);
return closestBox->renderer()->positionForPoint(IntPoint(pointInContents.x(), closestBox->m_y));
}
开发者ID:dslab-epfl,项目名称:warr,代码行数:16,代码来源:RenderSVGText.cpp
示例17: adjustPositionForUserSelectAll
static void adjustPositionForUserSelectAll(VisiblePosition& pos,
bool isForward) {
if (Node* rootUserSelectAll = EditingStrategy::rootUserSelectAllForNode(
pos.deepEquivalent().anchorNode()))
pos = createVisiblePosition(
isForward
? mostForwardCaretPosition(Position::afterNode(rootUserSelectAll),
CanCrossEditingBoundary)
: mostBackwardCaretPosition(Position::beforeNode(rootUserSelectAll),
CanCrossEditingBoundary));
}
开发者ID:mirror,项目名称:chromium,代码行数:11,代码来源:SelectionModifier.cpp
示例18: DCHECK_NE
IntRect FrameCaret::absoluteCaretBounds() {
DCHECK_NE(m_frame->document()->lifecycle().state(),
DocumentLifecycle::InPaintInvalidation);
DCHECK(!m_frame->document()->needsLayoutTreeUpdate());
DocumentLifecycle::DisallowTransitionScope disallowTransition(
m_frame->document()->lifecycle());
if (!isActive()) {
clearCaretRect();
} else {
if (enclosingTextFormControl(caretPosition().position())) {
if (isVisuallyEquivalentCandidate(caretPosition().position()))
updateCaretRect(caretPosition());
else
updateCaretRect(createVisiblePosition(caretPosition()));
} else {
updateCaretRect(createVisiblePosition(caretPosition()));
}
}
return absoluteBoundsForLocalRect(caretPosition().anchorNode(),
localCaretRectWithoutUpdate());
}
开发者ID:mirror,项目名称:chromium,代码行数:22,代码来源:FrameCaret.cpp
示例19: TEST_F
TEST_F(VisiblePositionTest, ShadowV0DistributedNodes)
{
const char* bodyContent = "<p id='host'>00<b id='one'>11</b><b id='two'>22</b>33</p>";
const char* shadowContent = "<a><span id='s4'>44</span><content select=#two></content><span id='s5'>55</span><content select=#one></content><span id='s6'>66</span></a>";
setBodyContent(bodyContent);
RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent, "host");
RefPtrWillBeRawPtr<Element> body = document().body();
RefPtrWillBeRawPtr<Element> one = body->querySelector("#one", ASSERT_NO_EXCEPTION);
RefPtrWillBeRawPtr<Element> two = body->querySelector("#two", ASSERT_NO_EXCEPTION);
RefPtrWillBeRawPtr<Element> four = shadowRoot->querySelector("#s4", ASSERT_NO_EXCEPTION);
RefPtrWillBeRawPtr<Element> five = shadowRoot->querySelector("#s5", ASSERT_NO_EXCEPTION);
EXPECT_EQ(Position(one->firstChild(), 0), canonicalPositionOf(Position(one, 0)));
EXPECT_EQ(Position(one->firstChild(), 0), createVisiblePosition(Position(one, 0)).deepEquivalent());
EXPECT_EQ(Position(one->firstChild(), 2), canonicalPositionOf(Position(two.get(), 0)));
EXPECT_EQ(Position(one->firstChild(), 2), createVisiblePosition(Position(two.get(), 0)).deepEquivalent());
EXPECT_EQ(PositionInComposedTree(five->firstChild(), 2), canonicalPositionOf(PositionInComposedTree(one.get(), 0)));
EXPECT_EQ(PositionInComposedTree(five->firstChild(), 2), createVisiblePosition(PositionInComposedTree(one.get(), 0)).deepEquivalent());
EXPECT_EQ(PositionInComposedTree(four->firstChild(), 2), canonicalPositionOf(PositionInComposedTree(two.get(), 0)));
EXPECT_EQ(PositionInComposedTree(four->firstChild(), 2), createVisiblePosition(PositionInComposedTree(two.get(), 0)).deepEquivalent());
}
开发者ID:mtucker6784,项目名称:chromium,代码行数:23,代码来源:VisiblePositionTest.cpp
示例20: collapseToStart
void DOMSelection::collapseToStart(ExceptionState& exceptionState)
{
if (!m_frame)
return;
const VisibleSelection& selection = m_frame->selection().selection();
if (selection.isNone()) {
exceptionState.throwDOMException(InvalidStateError, "there is no selection.");
return;
}
m_frame->selection().moveTo(createVisiblePosition(selection.start()));
}
开发者ID:howardroark2018,项目名称:chromium,代码行数:14,代码来源:DOMSelection.cpp
注:本文中的createVisiblePosition函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论