Index: ash/launcher/launcher.cc |
diff --git a/ash/launcher/launcher.cc b/ash/launcher/launcher.cc |
index f5c9cc7e0c7f1e39bec6e37844291306c243bcf5..516c0360dde18cecc1c24a022fac5242c6db7af7 100644 |
--- a/ash/launcher/launcher.cc |
+++ b/ash/launcher/launcher.cc |
@@ -96,7 +96,8 @@ void Launcher::DelegateView::Layout() { |
Launcher::Launcher(aura::Window* window_container) |
: widget_(NULL), |
window_container_(window_container), |
- delegate_view_(NULL) { |
+ delegate_view_(NULL), |
+ launcher_view_(NULL) { |
model_.reset(new LauncherModel); |
if (Shell::GetInstance()->delegate()) { |
delegate_.reset( |
@@ -111,15 +112,15 @@ Launcher::Launcher(aura::Window* window_container) |
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
params.parent = Shell::GetInstance()->GetContainer( |
ash::internal::kShellWindowId_LauncherContainer); |
- internal::LauncherView* launcher_view = |
- new internal::LauncherView(model_.get(), delegate_.get()); |
- launcher_view->Init(); |
+ launcher_view_ = new internal::LauncherView(model_.get(), delegate_.get()); |
+ launcher_view_->Init(); |
delegate_view_ = new DelegateView; |
- delegate_view_->AddChildView(launcher_view); |
+ delegate_view_->AddChildView(launcher_view_); |
params.delegate = delegate_view_; |
widget_->Init(params); |
widget_->GetNativeWindow()->SetName("LauncherWindow"); |
- gfx::Size pref = static_cast<views::View*>(launcher_view)->GetPreferredSize(); |
+ gfx::Size pref = |
+ static_cast<views::View*>(launcher_view_)->GetPreferredSize(); |
widget_->SetBounds(gfx::Rect(0, 0, pref.width(), pref.height())); |
// The launcher should not take focus when it is initially shown. |
widget_->set_focus_on_creation(false); |
@@ -139,4 +140,21 @@ int Launcher::GetStatusWidth() { |
return delegate_view_->status_width(); |
} |
+gfx::Rect Launcher::GetScreenBoundsOfItemIconForWindow(aura::Window* window) { |
+ if (!delegate_.get()) |
+ return gfx::Rect(); |
+ |
+ LauncherID id = delegate_->GetIDByWindow(window); |
+ gfx::Rect bounds(launcher_view_->GetIdealBoundsOfItemIcon(id)); |
+ if (bounds.IsEmpty()) |
+ return bounds; |
+ |
+ gfx::Point screen_origin; |
+ views::View::ConvertPointToScreen(launcher_view_, &screen_origin); |
+ return gfx::Rect(screen_origin.x() + bounds.x(), |
+ screen_origin.y() + bounds.y(), |
+ bounds.width(), |
+ bounds.height()); |
+} |
+ |
} // namespace ash |