Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ash / system / overview / overview_button_tray.cc
index 4ca4166..7c8a920 100644 (file)
@@ -6,7 +6,9 @@
 
 #include "ash/shelf/shelf_types.h"
 #include "ash/shell.h"
+#include "ash/system/tray/system_tray_delegate.h"
 #include "ash/system/tray/tray_utils.h"
+#include "ash/wm/maximize_mode/maximize_mode_controller.h"
 #include "ash/wm/overview/window_selector_controller.h"
 #include "grit/ash_resources.h"
 #include "grit/ash_strings.h"
@@ -28,10 +30,8 @@ const int kVerticalShelfVerticalPadding = 5;
 
 namespace ash {
 
-OverviewButtonTray::OverviewButtonTray(
-    internal::StatusAreaWidget* status_area_widget)
-    : TrayBackgroundView(status_area_widget),
-      icon_(NULL) {
+OverviewButtonTray::OverviewButtonTray(StatusAreaWidget* status_area_widget)
+    : TrayBackgroundView(status_area_widget), icon_(NULL) {
   SetContentsBackground();
 
   ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
@@ -41,8 +41,6 @@ OverviewButtonTray::OverviewButtonTray(
   SetIconBorderForShelfAlignment();
   tray_container()->AddChildView(icon_);
 
-  SetVisible(Shell::GetInstance()->IsMaximizeModeWindowManagerEnabled());
-
   Shell::GetInstance()->AddShellObserver(this);
 }
 
@@ -50,17 +48,29 @@ OverviewButtonTray::~OverviewButtonTray() {
   Shell::GetInstance()->RemoveShellObserver(this);
 }
 
+void OverviewButtonTray::UpdateAfterLoginStatusChange(
+    user::LoginStatus status) {
+  UpdateIconVisibility();
+}
+
 bool OverviewButtonTray::PerformAction(const ui::Event& event) {
-  Shell::GetInstance()->window_selector_controller()->ToggleOverview();
+  WindowSelectorController* controller =
+      Shell::GetInstance()->window_selector_controller();
+  controller->ToggleOverview();
+  SetDrawBackgroundAsActive(controller->IsSelecting());
   return true;
 }
 
 void OverviewButtonTray::OnMaximizeModeStarted() {
-  SetVisible(true);
+  UpdateIconVisibility();
 }
 
 void OverviewButtonTray::OnMaximizeModeEnded() {
-  SetVisible(false);
+  UpdateIconVisibility();
+}
+
+void OverviewButtonTray::OnOverviewModeEnding() {
+  SetDrawBackgroundAsActive(false);
 }
 
 bool OverviewButtonTray::ClickedOutsideBubble() {
@@ -103,4 +113,10 @@ void OverviewButtonTray::SetIconBorderForShelfAlignment() {
   }
 }
 
+void OverviewButtonTray::UpdateIconVisibility() {
+  SetVisible(Shell::GetInstance()->maximize_mode_controller()->
+                 IsMaximizeModeWindowManagerEnabled() &&
+             Shell::GetInstance()->window_selector_controller()->CanSelect());
+}
+
 }  // namespace ash