Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Unified Diff: third_party/WebKit/Source/core/editing/FrameSelection.cpp

Issue 2201853002: Blink handle selection handle visibility (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/editing/FrameSelection.cpp
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp
index 78531bc8f80f3948c0b7bd0d6986fe61fb913ea2..04ef09edca22d6104990098622f0334fbef02d87 100644
--- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp
@@ -164,7 +164,8 @@ void FrameSelection::moveCaretSelection(const IntPoint& point) {
builder.setIsDirectional(selection().isDirectional());
if (position.isNotNull())
builder.collapse(position.toPositionWithAffinity());
- setSelection(builder.build(), CloseTyping | ClearTypingStyle | UserTriggered);
+ setSelection(builder.build(),
+ CloseTyping | ClearTypingStyle | UserTriggered | HandleVisible);
}
template <typename Strategy>
@@ -181,6 +182,9 @@ void FrameSelection::setSelectionAlgorithm(
m_granularityStrategy->Clear();
bool closeTyping = options & CloseTyping;
bool shouldClearTypingStyle = options & ClearTypingStyle;
+ const HandleVisibility handleVisibility = options & HandleVisible
+ ? HandleVisibility::Visible
+ : HandleVisibility::NotVisible;
EUserTriggered userTriggered = selectionOptionsToUserTriggered(options);
// TODO(editing-dev): We should rename variable |s| to another name to avoid
@@ -199,7 +203,8 @@ void FrameSelection::setSelectionAlgorithm(
if (shouldClearTypingStyle)
clearTypingStyle();
- if (m_selectionEditor->visibleSelection<Strategy>() == s) {
+ if (m_selectionEditor->visibleSelection<Strategy>() == s &&
+ m_handleVisibility == handleVisibility) {
// Even if selection was not changed, selection offsets may have been
// changed.
m_frame->inputMethodController().cancelCompositionIfSelectionIsInvalid();
@@ -211,6 +216,7 @@ void FrameSelection::setSelectionAlgorithm(
visibleSelection<Strategy>();
const Position& oldSelectionStart = selection().start();
+ m_handleVisibility = handleVisibility;
m_selectionEditor->setVisibleSelection(s, options);
m_frameCaret->setCaretRectNeedsUpdate();
@@ -1337,7 +1343,8 @@ void FrameSelection::moveRangeSelectionExtent(const IntPoint& contentsPoint) {
granularityStrategy()->updateExtent(contentsPoint, m_frame);
setSelection(newSelection,
FrameSelection::CloseTyping | FrameSelection::ClearTypingStyle |
- FrameSelection::DoNotClearStrategy | UserTriggered,
+ FrameSelection::DoNotClearStrategy | UserTriggered |
+ FrameSelection::HandleVisible,
CursorAlignOnScroll::IfNeeded, CharacterGranularity);
}
@@ -1358,8 +1365,11 @@ void FrameSelection::moveRangeSelection(const VisiblePosition& basePosition,
if (newSelection.isNone())
return;
- setSelection(newSelection, CloseTyping | ClearTypingStyle,
- CursorAlignOnScroll::IfNeeded, granularity);
+ SetSelectionOptions options = CloseTyping | ClearTypingStyle;
+ if (isHandleVisible())
+ options |= HandleVisible;
+ setSelection(newSelection, options, CursorAlignOnScroll::IfNeeded,
+ granularity);
}
void FrameSelection::updateIfNeeded() {

Powered by Google App Engine
This is Rietveld 408576698