Index: ash/shelf/shelf.cc |
diff --git a/ash/shelf/shelf.cc b/ash/shelf/shelf.cc |
index 358badd6739f5d43e4b8d9321b7ae54e85d3975d..f3c1b36a950e2d2fc8917cbd5ea23d0d0ca677ff 100644 |
--- a/ash/shelf/shelf.cc |
+++ b/ash/shelf/shelf.cc |
@@ -36,6 +36,10 @@ |
#include "ui/views/widget/widget_delegate.h" |
#include "ui/wm/public/activation_client.h" |
+#if defined(OS_CHROMEOS) |
+#include "ash/system/chromeos/ime_menu/ime_menu_tray.h" |
+#endif // defined(OS_CHROMEOS) |
+ |
namespace ash { |
const char Shelf::kNativeViewName[] = "ShelfView"; |
@@ -115,12 +119,24 @@ ShelfVisibilityState Shelf::GetVisibilityState() const { |
gfx::Rect Shelf::GetScreenBoundsOfItemIconForWindow( |
const aura::Window* window) { |
ShelfID id = GetShelfIDForWindow(window); |
- gfx::Rect bounds(shelf_view_->GetIdealBoundsOfItemIcon(id)); |
- gfx::Point screen_origin; |
- views::View::ConvertPointToScreen(shelf_view_, &screen_origin); |
- return gfx::Rect(screen_origin.x() + bounds.x(), |
- screen_origin.y() + bounds.y(), bounds.width(), |
- bounds.height()); |
+ gfx::Rect bounds; |
+ gfx::Vector2d offset; |
+#if defined(OS_CHROMEOS) |
+ if (window->GetProperty(kShelfItemOnTrayForImeMenu)) { |
+ // For opt-in IME menu, the item icon lays on the status tray. |
+ bounds = shelf_widget_->status_area_widget()->ime_menu_tray()->bounds(); |
+ gfx::Rect status_area_bounds = |
+ shelf_widget_->status_area_widget()->GetWindowBoundsInScreen(); |
+ offset = status_area_bounds.OffsetFromOrigin(); |
+ } |
+#endif // defined(OS_CHROMEOS) |
+ if (!window->GetProperty(kShelfItemOnTrayForImeMenu)) { |
+ bounds = (shelf_view_->GetIdealBoundsOfItemIcon(id)); |
+ gfx::Point screen_origin; |
+ views::View::ConvertPointToScreen(shelf_view_, &screen_origin); |
+ offset = screen_origin.OffsetFromOrigin(); |
+ } |
+ return bounds + offset; |
} |
void Shelf::UpdateIconPositionForWindow(aura::Window* window) { |