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

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

Issue 14477010: Partial fix for keyboard occlusion. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: gyp fix 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
« no previous file with comments | « ash/shelf/shelf_layout_manager.h ('k') | ash/wm/panels/panel_layout_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 bounds->Inset(SelectValueForShelfAlignment( 633 bounds->Inset(SelectValueForShelfAlignment(
634 gfx::Insets(0, 0, inset, 0), 634 gfx::Insets(0, 0, inset, 0),
635 gfx::Insets(0, inset, 0, 0), 635 gfx::Insets(0, inset, 0, 0),
636 gfx::Insets(0, 0, 0, inset), 636 gfx::Insets(0, 0, 0, inset),
637 gfx::Insets(inset, 0, 0, 0))); 637 gfx::Insets(inset, 0, 0, 0)));
638 } 638 }
639 639
640 void ShelfLayoutManager::CalculateTargetBounds( 640 void ShelfLayoutManager::CalculateTargetBounds(
641 const State& state, 641 const State& state,
642 TargetBounds* target_bounds) { 642 TargetBounds* target_bounds) {
643 const gfx::Rect& available_bounds(root_window_->bounds()); 643 const gfx::Rect available_bounds(GetAvailableBounds());
644 gfx::Rect status_size( 644 gfx::Rect status_size(
645 shelf_->status_area_widget()->GetWindowBoundsInScreen().size()); 645 shelf_->status_area_widget()->GetWindowBoundsInScreen().size());
646 int shelf_width = 0, shelf_height = 0; 646 int shelf_width = 0, shelf_height = 0;
647 GetShelfSize(&shelf_width, &shelf_height); 647 GetShelfSize(&shelf_width, &shelf_height);
648 if (IsHorizontalAlignment()) 648 if (IsHorizontalAlignment())
649 shelf_width = available_bounds.width(); 649 shelf_width = available_bounds.width();
650 else 650 else
651 shelf_height = available_bounds.height(); 651 shelf_height = available_bounds.height();
652 652
653 if (state.visibility_state == SHELF_AUTO_HIDE && 653 if (state.visibility_state == SHELF_AUTO_HIDE &&
654 state.auto_hide_state == SHELF_AUTO_HIDE_HIDDEN) { 654 state.auto_hide_state == SHELF_AUTO_HIDE_HIDDEN) {
655 // Auto-hidden shelf always starts with the default size. If a gesture-drag 655 // Auto-hidden shelf always starts with the default size. If a gesture-drag
656 // is in progress, then the call to UpdateTargetBoundsForGesture() below 656 // is in progress, then the call to UpdateTargetBoundsForGesture() below
657 // takes care of setting the height properly. 657 // takes care of setting the height properly.
658 if (IsHorizontalAlignment()) 658 if (IsHorizontalAlignment())
659 shelf_height = kAutoHideSize; 659 shelf_height = kAutoHideSize;
660 else 660 else
661 shelf_width = kAutoHideSize; 661 shelf_width = kAutoHideSize;
662 } else if (state.visibility_state == SHELF_HIDDEN) { 662 } else if (state.visibility_state == SHELF_HIDDEN ||
663 !keyboard_bounds_.IsEmpty()) {
663 if (IsHorizontalAlignment()) 664 if (IsHorizontalAlignment())
664 shelf_height = 0; 665 shelf_height = 0;
665 else 666 else
666 shelf_width = 0; 667 shelf_width = 0;
667 } 668 }
668 669
669 target_bounds->shelf_bounds_in_root = SelectValueForShelfAlignment( 670 target_bounds->shelf_bounds_in_root = SelectValueForShelfAlignment(
670 gfx::Rect(available_bounds.x(), available_bounds.bottom() - shelf_height, 671 gfx::Rect(available_bounds.x(), available_bounds.bottom() - shelf_height,
671 available_bounds.width(), shelf_height), 672 available_bounds.width(), shelf_height),
672 gfx::Rect(available_bounds.x(), available_bounds.y(), 673 gfx::Rect(available_bounds.x(), available_bounds.y(),
(...skipping 17 matching lines...) Expand all
690 gfx::Rect(base::i18n::IsRTL() ? 0 : shelf_width - status_size.width(), 691 gfx::Rect(base::i18n::IsRTL() ? 0 : shelf_width - status_size.width(),
691 shelf_height - (status_size.height() + status_inset), 692 shelf_height - (status_size.height() + status_inset),
692 status_size.width(), status_size.height())); 693 status_size.width(), status_size.height()));
693 694
694 target_bounds->work_area_insets = SelectValueForShelfAlignment( 695 target_bounds->work_area_insets = SelectValueForShelfAlignment(
695 gfx::Insets(0, 0, GetWorkAreaSize(state, shelf_height), 0), 696 gfx::Insets(0, 0, GetWorkAreaSize(state, shelf_height), 0),
696 gfx::Insets(0, GetWorkAreaSize(state, shelf_width), 0, 0), 697 gfx::Insets(0, GetWorkAreaSize(state, shelf_width), 0, 0),
697 gfx::Insets(0, 0, 0, GetWorkAreaSize(state, shelf_width)), 698 gfx::Insets(0, 0, 0, GetWorkAreaSize(state, shelf_width)),
698 gfx::Insets(GetWorkAreaSize(state, shelf_height), 0, 0, 0)); 699 gfx::Insets(GetWorkAreaSize(state, shelf_height), 0, 0, 0));
699 700
701 // Also push in the work area inset for the keyboard if it is visible.
702 if (!keyboard_bounds_.IsEmpty()) {
703 target_bounds->work_area_insets.Set(
704 target_bounds->work_area_insets.top(),
705 target_bounds->work_area_insets.left(),
706 target_bounds->work_area_insets.bottom() + keyboard_bounds_.height(),
707 target_bounds->work_area_insets.right());
708 }
709
700 target_bounds->opacity = 710 target_bounds->opacity =
701 (gesture_drag_status_ != GESTURE_DRAG_NONE || 711 (gesture_drag_status_ != GESTURE_DRAG_NONE ||
702 state.visibility_state == SHELF_VISIBLE || 712 state.visibility_state == SHELF_VISIBLE ||
703 state.visibility_state == SHELF_AUTO_HIDE) ? 1.0f : 0.0f; 713 state.visibility_state == SHELF_AUTO_HIDE) ? 1.0f : 0.0f;
704 714
705 if (gesture_drag_status_ == GESTURE_DRAG_IN_PROGRESS) 715 if (gesture_drag_status_ == GESTURE_DRAG_IN_PROGRESS)
706 UpdateTargetBoundsForGesture(target_bounds); 716 UpdateTargetBoundsForGesture(target_bounds);
707 717
708 // This needs to happen after calling UpdateTargetBoundsForGesture(), because 718 // This needs to happen after calling UpdateTargetBoundsForGesture(), because
709 // that can change the size of the shelf. 719 // that can change the size of the shelf.
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 } 916 }
907 917
908 int ShelfLayoutManager::GetWorkAreaSize(const State& state, int size) const { 918 int ShelfLayoutManager::GetWorkAreaSize(const State& state, int size) const {
909 if (state.visibility_state == SHELF_VISIBLE) 919 if (state.visibility_state == SHELF_VISIBLE)
910 return size; 920 return size;
911 if (state.visibility_state == SHELF_AUTO_HIDE) 921 if (state.visibility_state == SHELF_AUTO_HIDE)
912 return kAutoHideSize; 922 return kAutoHideSize;
913 return 0; 923 return 0;
914 } 924 }
915 925
926 gfx::Rect ShelfLayoutManager::GetAvailableBounds() const {
927 gfx::Rect bounds(root_window_->bounds());
928 bounds.set_height(bounds.height() - keyboard_bounds_.height());
929 return bounds;
930 }
931
932 void ShelfLayoutManager::OnKeyboardBoundsChanging(
933 const gfx::Rect& keyboard_bounds) {
934 keyboard_bounds_ = keyboard_bounds;
935 OnWindowResized();
936 }
937
916 } // namespace internal 938 } // namespace internal
917 } // namespace ash 939 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_layout_manager.h ('k') | ash/wm/panels/panel_layout_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698