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

Side by Side Diff: chrome/browser/ui/views/frame/browser_view_layout.cc

Issue 160093006: Fix find bar positioning for hosted app windows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 | « no previous file | chrome/browser/ui/views/frame/browser_view_unittest.cc » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "chrome/browser/ui/views/frame/browser_view_layout.h" 5 #include "chrome/browser/ui/views/frame/browser_view_layout.h"
6 6
7 #include "base/observer_list.h" 7 #include "base/observer_list.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_finder.h" 10 #include "chrome/browser/ui/browser_finder.h"
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 // |contents_container_| contains web page contents and devtools. 516 // |contents_container_| contains web page contents and devtools.
517 // See browser_view.h for details. 517 // See browser_view.h for details.
518 gfx::Rect contents_container_bounds(vertical_layout_rect_.x(), 518 gfx::Rect contents_container_bounds(vertical_layout_rect_.x(),
519 top, 519 top,
520 vertical_layout_rect_.width(), 520 vertical_layout_rect_.width(),
521 std::max(0, bottom - top)); 521 std::max(0, bottom - top));
522 contents_container_->SetBoundsRect(contents_container_bounds); 522 contents_container_->SetBoundsRect(contents_container_bounds);
523 } 523 }
524 524
525 void BrowserViewLayout::UpdateTopContainerBounds() { 525 void BrowserViewLayout::UpdateTopContainerBounds() {
526 gfx::Rect top_container_bounds(top_container_->GetPreferredSize()); 526 // Set the bounds of the top container view such that it is tall enough to
527 // fully show all of its children. In particular, the bottom of the bookmark
528 // bar can be above the bottom of the toolbar while the bookmark bar is
529 // animating. The top container view is positioned relative to the top of the
530 // client view instead of relative to GetTopInsetInBrowserView() because the
531 // top container view paints parts of the frame (title, window controls)
532 // during an immersive fullscreen reveal.
533 int height = 0;
534 for (int i = 0; i < top_container_->child_count(); ++i) {
535 views::View* child = top_container_->child_at(i);
536 if (!child->visible())
537 continue;
538 int child_bottom = child->bounds().bottom();
539 if (child_bottom > height)
540 height = child_bottom;
541 }
542
543 // Ensure that the top container view reaches the topmost view in the
544 // ClientView because the bounds of the top container view are used in
545 // layout and we assume that this is the case.
546 height = std::max(height, delegate_->GetTopInsetInBrowserView());
pkotwicz 2014/02/12 01:43:36 I moved the computation of the preferred width and
547
548 gfx::Rect top_container_bounds(browser_view_->width(), height);
527 549
528 // If the immersive mode controller is animating the top container, it may be 550 // If the immersive mode controller is animating the top container, it may be
529 // partly offscreen. The top container is positioned relative to the top of 551 // partly offscreen.
530 // the client view instead of relative to GetTopInsetInBrowserView() because
531 // the top container paints parts of the frame (title, window controls) during
532 // an immersive reveal.
533 top_container_bounds.set_y( 552 top_container_bounds.set_y(
534 immersive_mode_controller_->GetTopContainerVerticalOffset( 553 immersive_mode_controller_->GetTopContainerVerticalOffset(
535 top_container_bounds.size())); 554 top_container_bounds.size()));
536 top_container_->SetBoundsRect(top_container_bounds); 555 top_container_->SetBoundsRect(top_container_bounds);
537 } 556 }
538 557
539 int BrowserViewLayout::GetContentsOffsetForBookmarkBar() { 558 int BrowserViewLayout::GetContentsOffsetForBookmarkBar() {
540 // If the bookmark bar is hidden or attached to the omnibox the web contents 559 // If the bookmark bar is hidden or attached to the omnibox the web contents
541 // will appear directly underneath it and does not need an offset. 560 // will appear directly underneath it and does not need an offset.
542 if (!bookmark_bar_ || 561 if (!bookmark_bar_ ||
(...skipping 22 matching lines...) Expand all
565 return bottom; 584 return bottom;
566 } 585 }
567 586
568 bool BrowserViewLayout::InfobarVisible() const { 587 bool BrowserViewLayout::InfobarVisible() const {
569 // Cast to a views::View to access GetPreferredSize(). 588 // Cast to a views::View to access GetPreferredSize().
570 views::View* infobar_container = infobar_container_; 589 views::View* infobar_container = infobar_container_;
571 // NOTE: Can't check if the size IsEmpty() since it's always 0-width. 590 // NOTE: Can't check if the size IsEmpty() since it's always 0-width.
572 return browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR) && 591 return browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR) &&
573 (infobar_container->GetPreferredSize().height() != 0); 592 (infobar_container->GetPreferredSize().height() != 0);
574 } 593 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/views/frame/browser_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698