Index: chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
index 0d8db6ee1bb3fb99c6bf2adc4cd78ba014345592..173d466d4f235c969beccd9eb9aeddf6e0980a16 100644 |
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc |
@@ -192,6 +192,11 @@ class OmniboxViewViews::AutocompleteTextfield : public views::Textfield { |
omnibox_view_->HandleMouseReleaseEvent(event); |
} |
+ virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE { |
+ views::Textfield::OnGestureEvent(event); |
+ omnibox_view_->HandleGestureEvent(*event); |
+ } |
+ |
private: |
OmniboxViewViews* omnibox_view_; |
LocationBarView* location_bar_view_; |
@@ -216,7 +221,8 @@ OmniboxViewViews::OmniboxViewViews(OmniboxEditController* controller, |
delete_at_end_pressed_(false), |
location_bar_view_(location_bar), |
ime_candidate_window_open_(false), |
- select_all_on_mouse_release_(false) { |
+ select_all_on_mouse_release_(false), |
+ select_all_on_gesture_tap_(false) { |
} |
OmniboxViewViews::~OmniboxViewViews() { |
@@ -383,6 +389,16 @@ void OmniboxViewViews::HandleMouseReleaseEvent(const ui::MouseEvent& event) { |
select_all_on_mouse_release_ = false; |
} |
+void OmniboxViewViews::HandleGestureEvent(const ui::GestureEvent& event) { |
+ if (!textfield_->HasFocus() && event.type() == ui::ET_GESTURE_TAP_DOWN) { |
+ select_all_on_gesture_tap_ = true; |
+ return; |
+ } |
+ if (select_all_on_gesture_tap_ && event.type() == ui::ET_GESTURE_TAP) |
+ SelectAll(false); |
+ select_all_on_gesture_tap_ = false; |
+} |
+ |
void OmniboxViewViews::HandleFocusIn() { |
// TODO(oshima): Get control key state. |
model()->OnSetFocus(false); |