Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" | 5 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" |
| 6 | 6 |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" | 8 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" |
| 9 #include "chrome/browser/ui/views/website_settings/website_settings_popup_view.h " | |
| 9 #include "chrome/grit/generated_resources.h" | 10 #include "chrome/grit/generated_resources.h" |
| 10 #include "ui/base/l10n/l10n_util.h" | 11 #include "ui/base/l10n/l10n_util.h" |
| 11 | 12 |
| 12 LocationIconView::LocationIconView(LocationBarView* location_bar) | 13 LocationIconView::LocationIconView(LocationBarView* location_bar) |
| 13 : page_info_helper_(this, location_bar) { | 14 : suppress_mouse_released_action_(false), |
| 15 page_info_helper_(this, location_bar) { | |
| 14 SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_LOCATION_ICON)); | 16 SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_LOCATION_ICON)); |
| 15 } | 17 } |
| 16 | 18 |
| 17 LocationIconView::~LocationIconView() { | 19 LocationIconView::~LocationIconView() { |
| 18 } | 20 } |
| 19 | 21 |
| 20 bool LocationIconView::OnMousePressed(const ui::MouseEvent& event) { | 22 bool LocationIconView::OnMousePressed(const ui::MouseEvent& event) { |
| 21 if (event.IsOnlyMiddleMouseButton() && | 23 if (event.IsOnlyMiddleMouseButton() && |
| 22 ui::Clipboard::IsSupportedClipboardType(ui::CLIPBOARD_TYPE_SELECTION)) { | 24 ui::Clipboard::IsSupportedClipboardType(ui::CLIPBOARD_TYPE_SELECTION)) { |
| 23 base::string16 text; | 25 base::string16 text; |
| 24 ui::Clipboard::GetForCurrentThread()->ReadText( | 26 ui::Clipboard::GetForCurrentThread()->ReadText( |
| 25 ui::CLIPBOARD_TYPE_SELECTION, &text); | 27 ui::CLIPBOARD_TYPE_SELECTION, &text); |
| 26 text = OmniboxView::SanitizeTextForPaste(text); | 28 text = OmniboxView::SanitizeTextForPaste(text); |
| 27 OmniboxEditModel* model = | 29 OmniboxEditModel* model = |
| 28 page_info_helper_.location_bar()->GetOmniboxView()->model(); | 30 page_info_helper_.location_bar()->GetOmniboxView()->model(); |
| 29 if (model->CanPasteAndGo(text)) | 31 if (model->CanPasteAndGo(text)) |
| 30 model->PasteAndGo(text); | 32 model->PasteAndGo(text); |
| 31 } | 33 } |
| 32 | 34 |
| 35 // If the bubble is showing then don't reshow it when the mouse is released. | |
| 36 suppress_mouse_released_action_ = WebsiteSettingsPopupView::IsPopupShowing(); | |
| 33 // Showing the bubble on mouse release is standard button behavior. | 37 // Showing the bubble on mouse release is standard button behavior. |
| 34 return true; | 38 return true; |
|
Peter Kasting
2014/09/17 20:51:42
Nit: I'd just eliminate both comments here. I don
Gaja
2014/09/18 02:51:39
Done.
| |
| 35 } | 39 } |
| 36 | 40 |
| 37 void LocationIconView::OnMouseReleased(const ui::MouseEvent& event) { | 41 void LocationIconView::OnMouseReleased(const ui::MouseEvent& event) { |
| 38 if (event.IsOnlyMiddleMouseButton()) | 42 if (event.IsOnlyMiddleMouseButton()) |
| 39 return; | 43 return; |
| 44 // If this is the second click on this view then the bubble was showing on | |
|
Peter Kasting
2014/09/17 20:51:42
Nit: Blank line above this
Gaja
2014/09/18 02:51:39
Done.
| |
| 45 // the mouse pressed event and is hidden now. Prevent the bubble from | |
| 46 // reshowing by doing nothing here. | |
| 47 if (suppress_mouse_released_action_) { | |
| 48 suppress_mouse_released_action_ = false; | |
| 49 return; | |
| 50 } | |
| 51 | |
| 40 OnClickOrTap(event); | 52 OnClickOrTap(event); |
| 41 } | 53 } |
| 42 | 54 |
| 43 bool LocationIconView::OnMouseDragged(const ui::MouseEvent& event) { | 55 bool LocationIconView::OnMouseDragged(const ui::MouseEvent& event) { |
| 44 page_info_helper_.location_bar()->GetOmniboxView()->CloseOmniboxPopup(); | 56 page_info_helper_.location_bar()->GetOmniboxView()->CloseOmniboxPopup(); |
| 45 return false; | 57 return false; |
| 46 } | 58 } |
| 47 | 59 |
| 48 void LocationIconView::OnGestureEvent(ui::GestureEvent* event) { | 60 void LocationIconView::OnGestureEvent(ui::GestureEvent* event) { |
| 49 if (event->type() != ui::ET_GESTURE_TAP) | 61 if (event->type() != ui::ET_GESTURE_TAP) |
| 50 return; | 62 return; |
| 51 OnClickOrTap(*event); | 63 OnClickOrTap(*event); |
| 52 event->SetHandled(); | 64 event->SetHandled(); |
| 53 } | 65 } |
| 54 | 66 |
| 55 void LocationIconView::OnClickOrTap(const ui::LocatedEvent& event) { | 67 void LocationIconView::OnClickOrTap(const ui::LocatedEvent& event) { |
| 56 // Do not show page info if the user has been editing the location bar or the | 68 // Do not show page info if the user has been editing the location bar or the |
| 57 // location bar is at the NTP. | 69 // location bar is at the NTP. |
| 58 if (page_info_helper_.location_bar()->GetOmniboxView()->IsEditingOrEmpty()) | 70 if (page_info_helper_.location_bar()->GetOmniboxView()->IsEditingOrEmpty()) |
| 59 return; | 71 return; |
| 60 | 72 |
| 61 page_info_helper_.ProcessEvent(event); | 73 page_info_helper_.ProcessEvent(event); |
| 62 } | 74 } |
| 63 | 75 |
| 64 void LocationIconView::ShowTooltip(bool show) { | 76 void LocationIconView::ShowTooltip(bool show) { |
| 65 SetTooltipText(show ? | 77 SetTooltipText(show ? |
| 66 l10n_util::GetStringUTF16(IDS_TOOLTIP_LOCATION_ICON) : base::string16()); | 78 l10n_util::GetStringUTF16(IDS_TOOLTIP_LOCATION_ICON) : base::string16()); |
| 67 } | 79 } |
| OLD | NEW |