Chromium Code Reviews| Index: ui/views/bubble/tooltip_icon.cc |
| diff --git a/chrome/browser/ui/views/autofill/tooltip_icon.cc b/ui/views/bubble/tooltip_icon.cc |
| similarity index 58% |
| rename from chrome/browser/ui/views/autofill/tooltip_icon.cc |
| rename to ui/views/bubble/tooltip_icon.cc |
| index b2a2678f3c87c36595729ac2a62d71e66daaddaa..319bb77713762b00932f771db1cef6ce11bd023c 100644 |
| --- a/chrome/browser/ui/views/autofill/tooltip_icon.cc |
| +++ b/ui/views/bubble/tooltip_icon.cc |
| @@ -2,59 +2,26 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "chrome/browser/ui/views/autofill/tooltip_icon.h" |
| +#include "ui/views/bubble/tooltip_icon.h" |
| #include "base/macros.h" |
|
msw
2017/02/15 21:06:39
nit: remove
vasilii
2017/02/16 14:28:07
Done.
|
| #include "base/timer/timer.h" |
| -#include "chrome/browser/ui/views/autofill/info_bubble.h" |
| #include "ui/accessibility/ax_node_data.h" |
| #include "ui/gfx/paint_vector_icon.h" |
| #include "ui/gfx/vector_icons_public.h" |
| #include "ui/views/bubble/bubble_frame_view.h" |
| +#include "ui/views/bubble/info_bubble.h" |
| #include "ui/views/mouse_watcher_view_host.h" |
| #include "ui/views/painter.h" |
|
msw
2017/02/15 21:06:39
nit: remove?
vasilii
2017/02/16 14:28:06
Done.
|
| -namespace autofill { |
| - |
| -namespace { |
| - |
| -gfx::Insets GetPreferredInsets(const views::View* view) { |
| - gfx::Size pref_size = view->GetPreferredSize(); |
| - gfx::Rect local_bounds = view->GetLocalBounds(); |
| - gfx::Point origin = local_bounds.CenterPoint(); |
| - origin.Offset(-pref_size.width() / 2, -pref_size.height() / 2); |
| - return gfx::Insets(origin.y(), |
| - origin.x(), |
| - local_bounds.bottom() - (origin.y() + pref_size.height()), |
| - local_bounds.right() - (origin.x() + pref_size.width())); |
| -} |
| - |
| -// An info bubble with some extra positioning magic for tooltip icons. |
| -class TooltipBubble : public InfoBubble { |
| - public: |
| - TooltipBubble(views::View* anchor, const base::string16& message) |
| - : InfoBubble(anchor, message) {} |
| - ~TooltipBubble() override {} |
| - |
| - protected: |
| - // InfoBubble: |
| - gfx::Rect GetAnchorRect() const override { |
| - gfx::Rect bounds = views::BubbleDialogDelegateView::GetAnchorRect(); |
| - bounds.Inset(GetPreferredInsets(anchor())); |
| - return bounds; |
| - } |
| - |
| - private: |
| - DISALLOW_COPY_AND_ASSIGN(TooltipBubble); |
| -}; |
| - |
| -} // namespace |
| +namespace views { |
| TooltipIcon::TooltipIcon(const base::string16& tooltip) |
| : tooltip_(tooltip), |
| mouse_inside_(false), |
| bubble_(NULL), |
| - bubble_arrow_(views::BubbleBorder::TOP_RIGHT), |
| + preferred_width_(0), |
| + bubble_arrow_(BubbleBorder::TOP_RIGHT), |
| observer_(this) { |
| SetDrawAsHovered(false); |
| } |
| @@ -102,7 +69,7 @@ void TooltipIcon::MouseMovedOutOfHost() { |
| } |
| void TooltipIcon::SetDrawAsHovered(bool hovered) { |
| - SetImage(gfx::CreateVectorIcon(gfx::VectorIconId::HELP_OUTLINE, 18, |
| + SetImage(gfx::CreateVectorIcon(gfx::VectorIconId::INFO_OUTLINE, 18, |
| hovered |
| ? SkColorSetARGB(0xBD, 0, 0, 0) |
| : SkColorSetARGB(0xBD, 0x44, 0x44, 0x44))); |
| @@ -114,7 +81,8 @@ void TooltipIcon::ShowBubble() { |
| SetDrawAsHovered(true); |
| - bubble_ = new TooltipBubble(this, tooltip_); |
| + bubble_ = new InfoBubble(this, tooltip_); |
| + bubble_->set_preferred_width(preferred_width_); |
| bubble_->set_arrow(bubble_arrow_); |
| // When shown due to a gesture event, close on deactivate (i.e. don't use |
| // "focusless"). |
| @@ -124,10 +92,10 @@ void TooltipIcon::ShowBubble() { |
| observer_.Add(bubble_->GetWidget()); |
| if (mouse_inside_) { |
| - views::View* frame = bubble_->GetWidget()->non_client_view()->frame_view(); |
| - std::unique_ptr<views::MouseWatcherHost> host( |
| - new views::MouseWatcherViewHost(frame, gfx::Insets())); |
| - mouse_watcher_.reset(new views::MouseWatcher(host.release(), this)); |
| + View* frame = bubble_->GetWidget()->non_client_view()->frame_view(); |
| + std::unique_ptr<MouseWatcherHost> host( |
| + new MouseWatcherViewHost(frame, gfx::Insets())); |
|
msw
2017/02/15 21:06:39
nit: base::MakeUnique here and below
vasilii
2017/02/16 14:28:07
Done.
|
| + mouse_watcher_.reset(new MouseWatcher(host.release(), this)); |
| mouse_watcher_->Start(); |
| } |
| } |
| @@ -137,7 +105,7 @@ void TooltipIcon::HideBubble() { |
| bubble_->Hide(); |
| } |
| -void TooltipIcon::OnWidgetDestroyed(views::Widget* widget) { |
| +void TooltipIcon::OnWidgetDestroyed(Widget* widget) { |
| observer_.Remove(widget); |
| SetDrawAsHovered(false); |
| @@ -145,4 +113,9 @@ void TooltipIcon::OnWidgetDestroyed(views::Widget* widget) { |
| bubble_ = NULL; |
|
msw
2017/02/15 21:06:39
nit: nullptr here and elsewhere
vasilii
2017/02/16 14:28:07
Done.
|
| } |
| -} // namespace autofill |
| +bool TooltipIcon::OnMousePressed(const ui::MouseEvent& event) { |
| + // Swallow the click so that the parent doesn't process it. |
| + return true; |
| +} |
| + |
| +} // namespace views |