Commit 92ad7830 authored by yosin@chromium.org's avatar yosin@chromium.org

Move lineDirectionPointForBlockDirectionNavigationOf() to FrameSelection.cpp

This patch moves |lineDirectionPointForBlockDirectionNavigationOf()| to
"FrameSelection.cpp" as static function for improving code health since
it used only in "FrameSelection.cpp".

This patch is a preparation of making selection to handle granularity for web
component, http://crrev.com/1277863002

Review URL: https://codereview.chromium.org/1301423005

git-svn-id: svn://svn.chromium.org/blink/trunk@201523 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent a9a8276b
......@@ -1180,6 +1180,28 @@ bool FrameSelection::modify(EAlteration alter, unsigned verticalDistance, Vertic
return true;
}
// Abs x/y position of the caret ignoring transforms.
// TODO(yosin) navigation with transforms should be smarter.
static int lineDirectionPointForBlockDirectionNavigationOf(const VisiblePosition& visiblePosition)
{
if (visiblePosition.isNull())
return 0;
LayoutObject* layoutObject;
LayoutRect localRect = localCaretRectOfPosition(visiblePosition.toPositionWithAffinity(), layoutObject);
if (localRect.isEmpty() || !layoutObject)
return 0;
// This ignores transforms on purpose, for now. Vertical navigation is done
// without consulting transforms, so that 'up' in transformed text is 'up'
// relative to the text, not absolute 'up'.
FloatPoint caretPoint = layoutObject->localToAbsolute(FloatPoint(localRect.location()));
LayoutObject* containingBlock = layoutObject->containingBlock();
if (!containingBlock)
containingBlock = layoutObject; // Just use ourselves to determine the writing mode if we have no containing block.
return containingBlock->isHorizontalWritingMode() ? caretPoint.x() : caretPoint.y();
}
LayoutUnit FrameSelection::lineDirectionPointForBlockDirectionNavigation(EPositionType type)
{
LayoutUnit x = 0;
......
......@@ -600,29 +600,6 @@ IntRect absoluteCaretBoundsOf(const VisiblePosition& visiblePosition)
return layoutObject->localToAbsoluteQuad(FloatRect(localRect)).enclosingBoundingBox();
}
// TODO(yosin) We should move a global function
// |lineDirectionPointForBlockDirectionNavigationOf()| to "FrameSelection.h"
// as static function.
int lineDirectionPointForBlockDirectionNavigationOf(const VisiblePosition& visiblePosition)
{
if (visiblePosition.isNull())
return 0;
LayoutObject* layoutObject;
LayoutRect localRect = localCaretRectOfPosition(visiblePosition.toPositionWithAffinity(), layoutObject);
if (localRect.isEmpty() || !layoutObject)
return 0;
// This ignores transforms on purpose, for now. Vertical navigation is done
// without consulting transforms, so that 'up' in transformed text is 'up'
// relative to the text, not absolute 'up'.
FloatPoint caretPoint = layoutObject->localToAbsolute(FloatPoint(localRect.location()));
LayoutObject* containingBlock = layoutObject->containingBlock();
if (!containingBlock)
containingBlock = layoutObject; // Just use ourselves to determine the writing mode if we have no containing block.
return containingBlock->isHorizontalWritingMode() ? caretPoint.x() : caretPoint.y();
}
#ifndef NDEBUG
void VisiblePosition::debugPosition(const char* msg) const
......
......@@ -116,13 +116,6 @@ private:
// Bounds of (possibly transformed) caret in absolute coords
CORE_EXPORT IntRect absoluteCaretBoundsOf(const VisiblePosition&);
// Abs x/y position of the caret ignoring transforms.
// TODO(yosin) navigation with transforms should be smarter.
// TODO(yosin) We should move a glboal funciton
// |lineDirectionPointForBlockDirectionNavigationOf()| to "FrameSelection.h"
// as static function.
int lineDirectionPointForBlockDirectionNavigationOf(const VisiblePosition&);
// TODO(yosin) We should move |leftPositionOf()| and |rightPositionOf()| to
// "VisibleUnits.cpp".
VisiblePosition leftPositionOf(const VisiblePosition&);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment