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

Unified Diff: ash/common/shelf/shelf_tooltip_manager.cc

Issue 2176813002: mash: Migrate ShelfTooltipManager to wm common types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update comment. Created 4 years, 5 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
« no previous file with comments | « ash/common/shelf/shelf_tooltip_manager.h ('k') | ash/common/wm_window.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/shelf/shelf_tooltip_manager.cc
diff --git a/ash/shelf/shelf_tooltip_manager.cc b/ash/common/shelf/shelf_tooltip_manager.cc
similarity index 69%
rename from ash/shelf/shelf_tooltip_manager.cc
rename to ash/common/shelf/shelf_tooltip_manager.cc
index 7dd755a4436ca37a608a581db39f52997172d60e..6a6db00c4a769cd9cf7c1db4193e008412ffab9e 100644
--- a/ash/shelf/shelf_tooltip_manager.cc
+++ b/ash/common/shelf/shelf_tooltip_manager.cc
@@ -2,19 +2,19 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ash/shelf/shelf_tooltip_manager.h"
+#include "ash/common/shelf/shelf_tooltip_manager.h"
+#include "ash/common/shelf/wm_shelf.h"
#include "ash/common/shell_window_ids.h"
-#include "ash/shelf/shelf.h"
-#include "ash/shelf/shelf_layout_manager.h"
+#include "ash/common/wm_lookup.h"
+#include "ash/common/wm_root_window_controller.h"
+#include "ash/common/wm_shell.h"
+#include "ash/common/wm_window.h"
#include "ash/shelf/shelf_view.h"
-#include "ash/shell.h"
-#include "ash/wm/window_animations.h"
#include "base/bind.h"
#include "base/strings/string16.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
-#include "ui/aura/window.h"
#include "ui/events/event.h"
#include "ui/events/event_constants.h"
#include "ui/gfx/geometry/insets.h"
@@ -22,7 +22,6 @@
#include "ui/views/controls/label.h"
#include "ui/views/layout/fill_layout.h"
#include "ui/views/widget/widget.h"
-#include "ui/wm/core/window_animations.h"
namespace ash {
namespace {
@@ -73,12 +72,6 @@ class ShelfTooltipManager::ShelfTooltipBubble
set_margins(gfx::Insets(kTooltipTopBottomMargin, kTooltipLeftRightMargin));
set_shadow(views::BubbleBorder::NO_ASSETS);
SetLayoutManager(new views::FillLayout());
- // The anchor may not have the widget in tests.
- if (anchor->GetWidget() && anchor->GetWidget()->GetNativeWindow()) {
- set_parent_window(ash::Shell::GetContainer(
- anchor->GetWidget()->GetNativeWindow()->GetRootWindow(),
- ash::kShellWindowId_SettingBubbleContainer));
- }
views::Label* label = new views::Label(text);
label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
ui::NativeTheme* theme = anchor->GetWidget()->GetNativeTheme();
@@ -106,6 +99,16 @@ class ShelfTooltipManager::ShelfTooltipBubble
std::max(size.height(), kTooltipMinHeight));
}
+ void OnBeforeBubbleWidgetInit(views::Widget::InitParams* params,
+ views::Widget* bubble_widget) const override {
+ // Place the bubble in the same display as the anchor.
+ WmLookup::Get()
+ ->GetWindowForWidget(anchor_widget())
+ ->GetRootWindowController()
+ ->ConfigureWidgetInitParamsForContainer(
+ bubble_widget, kShellWindowId_SettingBubbleContainer, params);
+ }
+
int GetDialogButtons() const override { return ui::DIALOG_BUTTON_NONE; }
DISALLOW_COPY_AND_ASSIGN(ShelfTooltipBubble);
@@ -114,32 +117,26 @@ class ShelfTooltipManager::ShelfTooltipBubble
ShelfTooltipManager::ShelfTooltipManager(ShelfView* shelf_view)
: timer_delay_(kTooltipAppearanceDelay),
shelf_view_(shelf_view),
- root_window_(nullptr),
- shelf_layout_manager_(nullptr),
bubble_(nullptr),
- weak_factory_(this) {}
+ weak_factory_(this) {
+ shelf_view_->wm_shelf()->AddObserver(this);
+ WmShell::Get()->AddPointerWatcher(this);
+}
ShelfTooltipManager::~ShelfTooltipManager() {
- WillDeleteShelfLayoutManager();
-
- Shell::GetInstance()->RemovePointerWatcher(this);
-
- if (root_window_) {
- root_window_->RemoveObserver(this);
- root_window_->RemovePreTargetHandler(this);
- root_window_ = nullptr;
- }
+ WmShell::Get()->RemovePointerWatcher(this);
+ shelf_view_->wm_shelf()->RemoveObserver(this);
+ WmWindow* window = nullptr;
+ if (shelf_view_->GetWidget())
+ window = WmLookup::Get()->GetWindowForWidget(shelf_view_->GetWidget());
+ if (window)
+ window->RemoveLimitedPreTargetHandler(this);
}
void ShelfTooltipManager::Init() {
- shelf_layout_manager_ = shelf_view_->shelf()->shelf_layout_manager();
- shelf_layout_manager_->AddObserver(this);
-
- root_window_ = shelf_view_->GetWidget()->GetNativeWindow()->GetRootWindow();
- root_window_->AddPreTargetHandler(this);
- root_window_->AddObserver(this);
-
- Shell::GetInstance()->AddPointerWatcher(this);
+ WmWindow* window =
+ WmLookup::Get()->GetWindowForWidget(shelf_view_->GetWidget());
+ window->AddLimitedPreTargetHandler(this);
}
void ShelfTooltipManager::Close() {
@@ -161,26 +158,35 @@ void ShelfTooltipManager::ShowTooltip(views::View* view) {
timer_.Stop();
if (bubble_) {
// Cancel the hiding animation to hide the old bubble immediately.
- gfx::NativeView native_view = bubble_->GetWidget()->GetNativeView();
- ::wm::SetWindowVisibilityAnimationTransition(native_view,
- ::wm::ANIMATE_NONE);
+ WmLookup::Get()
+ ->GetWindowForWidget(bubble_->GetWidget())
+ ->SetVisibilityAnimationTransition(::wm::ANIMATE_NONE);
Close();
}
if (!ShouldShowTooltipForView(view))
return;
- Shelf* shelf = shelf_view_->shelf();
- views::BubbleBorder::Arrow arrow = shelf->SelectValueForShelfAlignment(
- views::BubbleBorder::BOTTOM_CENTER, views::BubbleBorder::LEFT_CENTER,
- views::BubbleBorder::RIGHT_CENTER);
+ views::BubbleBorder::Arrow arrow = views::BubbleBorder::Arrow::NONE;
+ switch (shelf_view_->wm_shelf()->GetAlignment()) {
+ case SHELF_ALIGNMENT_BOTTOM:
+ case SHELF_ALIGNMENT_BOTTOM_LOCKED:
+ arrow = views::BubbleBorder::BOTTOM_CENTER;
+ break;
+ case SHELF_ALIGNMENT_LEFT:
+ arrow = views::BubbleBorder::LEFT_CENTER;
+ break;
+ case SHELF_ALIGNMENT_RIGHT:
+ arrow = views::BubbleBorder::RIGHT_CENTER;
+ break;
+ }
base::string16 text = shelf_view_->GetTitleForView(view);
bubble_ = new ShelfTooltipBubble(view, arrow, text);
- gfx::NativeView native_view = bubble_->GetWidget()->GetNativeView();
- ::wm::SetWindowVisibilityAnimationType(
- native_view, ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_VERTICAL);
- ::wm::SetWindowVisibilityAnimationTransition(native_view, ::wm::ANIMATE_HIDE);
+ WmWindow* window = WmLookup::Get()->GetWindowForWidget(bubble_->GetWidget());
+ window->SetVisibilityAnimationType(
+ ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_VERTICAL);
+ window->SetVisibilityAnimationTransition(::wm::ANIMATE_HIDE);
bubble_->GetWidget()->Show();
}
@@ -206,24 +212,16 @@ void ShelfTooltipManager::OnTouchPressed(const ui::TouchEvent& event,
Close();
}
-void ShelfTooltipManager::OnEvent(ui::Event* event) {
- // Mouse and touch press events are handled via views::PointerWatcher.
- if (event->type() == ui::ET_MOUSE_PRESSED ||
- event->type() == ui::ET_TOUCH_PRESSED) {
+void ShelfTooltipManager::OnMouseEvent(ui::MouseEvent* event) {
+ if (event->type() == ui::ET_MOUSE_EXITED) {
+ Close();
return;
}
- if (event->type() == ui::ET_MOUSE_EXITED || !event->IsMouseEvent() ||
- event->target() != shelf_view_->GetWidget()->GetNativeWindow()) {
- if (!event->IsKeyEvent())
- Close();
+ if (event->type() != ui::ET_MOUSE_MOVED)
return;
- }
- gfx::Point point = static_cast<ui::LocatedEvent*>(event)->location();
- aura::Window::ConvertPointToTarget(
- static_cast<aura::Window*>(event->target()),
- shelf_view_->GetWidget()->GetNativeWindow(), &point);
+ gfx::Point point = event->location();
views::View::ConvertPointFromWidget(shelf_view_, &point);
views::View* view = shelf_view_->GetTooltipHandlerForPoint(point);
const bool should_show = ShouldShowTooltipForView(view);
@@ -231,27 +229,12 @@ void ShelfTooltipManager::OnEvent(ui::Event* event) {
timer_.Stop();
if (IsVisible() && should_show && bubble_->GetAnchorView() != view)
ShowTooltip(view);
- else if (!IsVisible() && should_show && event->type() == ui::ET_MOUSE_MOVED)
+ else if (!IsVisible() && should_show)
ShowTooltipWithDelay(view);
else if (IsVisible() && shelf_view_->ShouldHideTooltip(point))
Close();
}
-void ShelfTooltipManager::OnWindowDestroying(aura::Window* window) {
- if (window == root_window_) {
- root_window_->RemoveObserver(this);
- root_window_->RemovePreTargetHandler(this);
- root_window_ = nullptr;
- }
-}
-
-void ShelfTooltipManager::WillDeleteShelfLayoutManager() {
- if (shelf_layout_manager_)
- shelf_layout_manager_->RemoveObserver(this);
- shelf_layout_manager_ = nullptr;
- shelf_view_ = nullptr;
-}
-
void ShelfTooltipManager::WillChangeVisibilityState(
ShelfVisibilityState new_state) {
if (new_state == SHELF_HIDDEN)
@@ -272,7 +255,7 @@ void ShelfTooltipManager::OnAutoHideStateChanged(ShelfAutoHideState new_state) {
bool ShelfTooltipManager::ShouldShowTooltipForView(views::View* view) {
return shelf_view_ && shelf_view_->ShouldShowTooltipForView(view) &&
- shelf_layout_manager_ && shelf_layout_manager_->IsVisible();
+ shelf_view_->wm_shelf()->GetVisibilityState() == SHELF_VISIBLE;
}
} // namespace ash
« no previous file with comments | « ash/common/shelf/shelf_tooltip_manager.h ('k') | ash/common/wm_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698