summaryrefslogtreecommitdiffstats
path: root/ash/wm/overview/window_selector.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ash/wm/overview/window_selector.cc')
-rw-r--r--ash/wm/overview/window_selector.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/ash/wm/overview/window_selector.cc b/ash/wm/overview/window_selector.cc
index ebbebec..4dfdc82 100644
--- a/ash/wm/overview/window_selector.cc
+++ b/ash/wm/overview/window_selector.cc
@@ -6,6 +6,7 @@
#include <algorithm>
+#include "ash/root_window_controller.h"
#include "ash/shell.h"
#include "ash/wm/mru_window_tracker.h"
#include "ash/wm/overview/window_overview.h"
@@ -93,6 +94,17 @@ void WindowSelectorEventFilter::OnKeyEvent(ui::KeyEvent* event) {
}
}
+// Triggers a shelf visibility update on all root window controllers.
+void UpdateShelfVisibility() {
+ Shell::RootWindowControllerList root_window_controllers =
+ Shell::GetInstance()->GetAllRootWindowControllers();
+ for (Shell::RootWindowControllerList::iterator iter =
+ root_window_controllers.begin();
+ iter != root_window_controllers.end(); ++iter) {
+ (*iter)->UpdateShelfVisibility();
+ }
+}
+
} // namespace
WindowSelector::WindowSelector(const WindowList& windows,
@@ -170,6 +182,10 @@ WindowSelector::~WindowSelector() {
kSwitchableWindowContainerIds[i])->RemoveObserver(this);
}
}
+ window_overview_.reset();
+ // Clearing the window list resets the ignored_by_shelf flag on the windows.
+ windows_.clear();
+ UpdateShelfVisibility();
}
void WindowSelector::Step(WindowSelector::Direction direction) {
@@ -294,6 +310,7 @@ void WindowSelector::StartOverview() {
mode_ == CYCLE ? windows_[selected_window_]->GetRootWindow() : NULL));
if (mode_ == CYCLE)
window_overview_->SetSelection(selected_window_);
+ UpdateShelfVisibility();
}
void WindowSelector::RemoveFocusAndSetRestoreWindow() {