Index: components/omnibox/browser/omnibox_edit_model.cc |
diff --git a/components/omnibox/browser/omnibox_edit_model.cc b/components/omnibox/browser/omnibox_edit_model.cc |
index 4c3a2782776335c03ee4aca6c61f16876b685e55..9b5d6abf41b298317759b5a4719fa4663524e640 100644 |
--- a/components/omnibox/browser/omnibox_edit_model.cc |
+++ b/components/omnibox/browser/omnibox_edit_model.cc |
@@ -363,6 +363,7 @@ void OmniboxEditModel::SetInputInProgress(bool in_progress) { |
} |
void OmniboxEditModel::Revert() { |
+ bool user_input_was_in_progress = user_input_in_progress_; |
SetInputInProgress(false); |
input_.Clear(); |
paste_state_ = NONE; |
@@ -370,9 +371,15 @@ void OmniboxEditModel::Revert() { |
keyword_.clear(); |
is_keyword_hint_ = false; |
has_temporary_text_ = false; |
- view_->SetWindowTextAndCaretPos(permanent_text_, |
- has_focus() ? permanent_text_.length() : 0, |
- false, true); |
+ if (has_focus() && user_input_was_in_progress) { |
Peter Kasting
2017/05/15 23:51:23
Do we even need this distinction anymore? I'm won
Kevin Bailey
2017/05/16 01:01:01
I don't know all the cases that Revert() is called
Peter Kasting
2017/05/16 05:53:53
There are several, but not so many that you couldn
Kevin Bailey
2017/05/17 01:53:54
I said 'cases', not 'places'. :) I looked through
|
+ view_->SetWindowTextAndCaretPos(permanent_text_, permanent_text_.length(), |
+ false, true); |
+ } else { |
+ size_t start, end; |
+ view_->GetSelectionBounds(&start, &end); |
+ view_->SetWindowTextAndCaretPos(permanent_text_, 0, false, true); |
+ view_->SetWindowTextAndCaretPos(permanent_text_, start, false, true); |
Peter Kasting
2017/05/16 05:53:53
Even if you don't plumb full facilities for updati
Kevin Bailey
2017/05/17 01:53:54
Ya, exposing SetCursorPosition() wouldn't be too h
Peter Kasting
2017/05/17 02:44:14
Sure.
Kevin Bailey
2017/05/17 03:57:52
I was thinking we wanted to notify when the cursor
Peter Kasting
2017/05/17 03:59:21
Correctnesswise it's fine. My concern is that it
|
+ } |
client_->OnRevert(); |
} |