Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(598)

Unified Diff: chrome/browser/ui/views/immersive_mode_controller.cc

Issue 11969006: cros: Trigger immersive mode with F4 maximize key (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/immersive_mode_controller.cc
diff --git a/chrome/browser/ui/views/immersive_mode_controller.cc b/chrome/browser/ui/views/immersive_mode_controller.cc
index 99f505e073a9a8a027bb0186a10237d64d441219..a532c5529ceaa108287f2055ad36225646540d4c 100644
--- a/chrome/browser/ui/views/immersive_mode_controller.cc
+++ b/chrome/browser/ui/views/immersive_mode_controller.cc
@@ -244,11 +244,20 @@ class ImmersiveModeController::WindowObserver : public aura::WindowObserver {
const void* key,
intptr_t old) OVERRIDE {
using aura::client::kShowStateKey;
- if (key != kShowStateKey)
- return;
- // Disable immersive mode when leaving the maximized state.
- if (window->GetProperty(kShowStateKey) != ui::SHOW_STATE_MAXIMIZED)
- controller_->SetEnabled(false);
+ if (key == kShowStateKey) {
+ // Disable immersive mode when leaving the maximized state.
+ if (window->GetProperty(kShowStateKey) != ui::SHOW_STATE_MAXIMIZED)
+ controller_->SetEnabled(false);
+ return;
+ }
+#if defined(USE_ASH)
+ using ash::internal::kImmersiveModeKey;
+ if (key == kImmersiveModeKey) {
+ // Another component has toggled immersive mode.
+ controller_->SetEnabled(window->GetProperty(kImmersiveModeKey));
+ return;
+ }
+#endif
}
private:
@@ -280,6 +289,7 @@ void ImmersiveModeController::Init() {
// window pointer so |this| can stop observing during destruction.
native_window_ = browser_view_->GetNativeWindow();
DCHECK(native_window_);
+ EnableWindowObservers(true);
#if defined(USE_ASH)
// Optionally allow the tab indicators to be hidden.
@@ -302,6 +312,7 @@ void ImmersiveModeController::SetEnabled(bool enabled) {
}
#if defined(USE_ASH)
+ // This causes a no-op call to SetEnabled() since enabled_ is already set.
native_window_->SetProperty(ash::internal::kImmersiveModeKey, enabled_);
// Ash on Windows may not have a shell.
if (ash::Shell::HasInstance()) {
@@ -317,8 +328,6 @@ void ImmersiveModeController::SetEnabled(bool enabled) {
// Always ensure tab strip is in correct state.
browser_view_->tabstrip()->SetImmersiveStyle(enabled_);
browser_view_->Layout();
-
- EnableWindowObservers(enabled_);
}
views::View* ImmersiveModeController::reveal_view() {
@@ -347,7 +356,7 @@ void ImmersiveModeController::CancelReveal() {
// ui::EventHandler overrides:
void ImmersiveModeController::OnMouseEvent(ui::MouseEvent* event) {
- if (event->type() != ui::ET_MOUSE_MOVED)
+ if (!enabled_ || event->type() != ui::ET_MOUSE_MOVED)
return;
if (event->location().y() == 0) {
// Start a reveal if the mouse touches the top of the screen and then stops

Powered by Google App Engine
This is Rietveld 408576698