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

Side by Side Diff: ash/shelf/shelf_layout_manager.cc

Issue 14740012: Enable shelf gestures in immersive mode (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Significant rewrite of CL to address reviewer's comments Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/shelf/shelf_layout_manager.h" 5 #include "ash/shelf/shelf_layout_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "ash/ash_switches.h" 10 #include "ash/ash_switches.h"
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 if (Shell::GetInstance()->session_state_delegate()->IsScreenLocked()) { 289 if (Shell::GetInstance()->session_state_delegate()->IsScreenLocked()) {
290 SetState(SHELF_VISIBLE); 290 SetState(SHELF_VISIBLE);
291 } else if (gesture_drag_status_ == GESTURE_DRAG_COMPLETE_IN_PROGRESS) { 291 } else if (gesture_drag_status_ == GESTURE_DRAG_COMPLETE_IN_PROGRESS) {
292 // TODO(zelidrag): Verify shelf drag animation still shows on the device 292 // TODO(zelidrag): Verify shelf drag animation still shows on the device
293 // when we are in SHELF_AUTO_HIDE_ALWAYS_HIDDEN. 293 // when we are in SHELF_AUTO_HIDE_ALWAYS_HIDDEN.
294 SetState(CalculateShelfVisibilityWhileDragging()); 294 SetState(CalculateShelfVisibilityWhileDragging());
295 } else { 295 } else {
296 WorkspaceWindowState window_state(workspace_controller_->GetWindowState()); 296 WorkspaceWindowState window_state(workspace_controller_->GetWindowState());
297 switch (window_state) { 297 switch (window_state) {
298 case WORKSPACE_WINDOW_STATE_FULL_SCREEN: 298 case WORKSPACE_WINDOW_STATE_FULL_SCREEN:
299 { 299 if (IsInImmersiveMode()) {
300 aura::Window* fullscreen_window =
301 GetRootWindowController(root_window_)->GetFullscreenWindow();
302 if (fullscreen_window->GetProperty(kFullscreenUsesMinimalChromeKey)) {
303 DCHECK_NE(auto_hide_behavior_, SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
304 SetState(SHELF_AUTO_HIDE); 300 SetState(SHELF_AUTO_HIDE);
305 } else { 301 } else {
306 SetState(SHELF_HIDDEN); 302 SetState(SHELF_HIDDEN);
307 } 303 }
308 break; 304 break;
309 }
310 case WORKSPACE_WINDOW_STATE_MAXIMIZED: 305 case WORKSPACE_WINDOW_STATE_MAXIMIZED:
311 SetState(CalculateShelfVisibility()); 306 SetState(CalculateShelfVisibility());
312 break; 307 break;
313
314 case WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF: 308 case WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF:
315 case WORKSPACE_WINDOW_STATE_DEFAULT: 309 case WORKSPACE_WINDOW_STATE_DEFAULT:
316 SetState(CalculateShelfVisibility()); 310 SetState(CalculateShelfVisibility());
317 SetWindowOverlapsShelf(window_state == 311 SetWindowOverlapsShelf(window_state ==
318 WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF); 312 WORKSPACE_WINDOW_STATE_WINDOW_OVERLAPS_SHELF);
319 break; 313 break;
320 } 314 }
321 } 315 }
322 } 316 }
323 317
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 CancelGestureDrag(); 434 CancelGestureDrag();
441 return; 435 return;
442 } 436 }
443 437
444 gesture_drag_auto_hide_state_ = 438 gesture_drag_auto_hide_state_ =
445 gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN ? 439 gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN ?
446 SHELF_AUTO_HIDE_HIDDEN : SHELF_AUTO_HIDE_SHOWN; 440 SHELF_AUTO_HIDE_HIDDEN : SHELF_AUTO_HIDE_SHOWN;
447 if (shelf_) 441 if (shelf_)
448 shelf_->Deactivate(); 442 shelf_->Deactivate();
449 shelf_->status_area_widget()->Deactivate(); 443 shelf_->status_area_widget()->Deactivate();
444
pkotwicz 2013/05/16 19:11:49 Nit: remove blank line
rharrison 2013/05/16 20:28:31 Done.
450 if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_HIDDEN && 445 if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_HIDDEN &&
451 auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) { 446 auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
452 gesture_drag_status_ = GESTURE_DRAG_NONE; 447 gesture_drag_status_ = GESTURE_DRAG_NONE;
453 SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); 448 if (!IsInImmersiveMode()) {
449 SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
450 } else {
451 UpdateVisibilityState();
452 }
454 } else if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN && 453 } else if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN &&
455 auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_NEVER) { 454 auto_hide_behavior_ != SHELF_AUTO_HIDE_BEHAVIOR_NEVER) {
456 gesture_drag_status_ = GESTURE_DRAG_NONE; 455 gesture_drag_status_ = GESTURE_DRAG_NONE;
457 SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); 456 SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
458 } else { 457 } else {
459 gesture_drag_status_ = GESTURE_DRAG_COMPLETE_IN_PROGRESS; 458 gesture_drag_status_ = GESTURE_DRAG_COMPLETE_IN_PROGRESS;
460 UpdateVisibilityState(); 459 UpdateVisibilityState();
461 gesture_drag_status_ = GESTURE_DRAG_NONE; 460 gesture_drag_status_ = GESTURE_DRAG_NONE;
462 } 461 }
463 LayoutShelf(); 462 LayoutShelf();
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 return gfx::Insets(0, 0, 0, distance); 952 return gfx::Insets(0, 0, 0, distance);
954 case SHELF_ALIGNMENT_RIGHT: 953 case SHELF_ALIGNMENT_RIGHT:
955 return gfx::Insets(0, distance, 0, 0); 954 return gfx::Insets(0, distance, 0, 0);
956 case SHELF_ALIGNMENT_TOP: 955 case SHELF_ALIGNMENT_TOP:
957 return gfx::Insets(0, 0, distance, 0); 956 return gfx::Insets(0, 0, distance, 0);
958 } 957 }
959 NOTREACHED(); 958 NOTREACHED();
960 return gfx::Insets(); 959 return gfx::Insets();
961 } 960 }
962 961
962 bool ShelfLayoutManager::IsInImmersiveMode() const {
963 RootWindowController* controller = GetRootWindowController(root_window_);
964 if (!controller)
965 return false;
966 aura::Window* window = controller->GetFullscreenWindow();
967 if (!window)
968 return false;
969 if (!window->GetProperty(kFullscreenUsesMinimalChromeKey))
970 return false;
971 return true;
972 }
973
974
963 } // namespace internal 975 } // namespace internal
964 } // namespace ash 976 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698