#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"
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();
SetIconBorderForShelfAlignment();
tray_container()->AddChildView(icon_);
- SetVisible(Shell::GetInstance()->IsMaximizeModeWindowManagerEnabled());
-
Shell::GetInstance()->AddShellObserver(this);
}
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() {
}
}
+void OverviewButtonTray::UpdateIconVisibility() {
+ SetVisible(Shell::GetInstance()->maximize_mode_controller()->
+ IsMaximizeModeWindowManagerEnabled() &&
+ Shell::GetInstance()->window_selector_controller()->CanSelect());
+}
+
} // namespace ash