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

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

Issue 9006027: Rip Out the Sidebar API (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/sidebar/sidebar_manager.h"
8 #include "chrome/browser/ui/find_bar/find_bar.h" 7 #include "chrome/browser/ui/find_bar/find_bar.h"
9 #include "chrome/browser/ui/find_bar/find_bar_controller.h" 8 #include "chrome/browser/ui/find_bar/find_bar_controller.h"
10 #include "chrome/browser/ui/view_ids.h" 9 #include "chrome/browser/ui/view_ids.h"
11 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" 10 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h"
12 #include "chrome/browser/ui/views/frame/browser_frame.h" 11 #include "chrome/browser/ui/views/frame/browser_frame.h"
13 #include "chrome/browser/ui/views/frame/browser_view.h" 12 #include "chrome/browser/ui/views/frame/browser_view.h"
14 #include "chrome/browser/ui/views/frame/contents_container.h" 13 #include "chrome/browser/ui/views/frame/contents_container.h"
15 #include "chrome/browser/ui/views/infobars/infobar_container_view.h" 14 #include "chrome/browser/ui/views/infobars/infobar_container_view.h"
16 #include "chrome/browser/ui/views/tab_contents/tab_contents_container.h" 15 #include "chrome/browser/ui/views/tab_contents/tab_contents_container.h"
17 #include "chrome/browser/ui/views/tabs/abstract_tab_strip_view.h" 16 #include "chrome/browser/ui/views/tabs/abstract_tab_strip_view.h"
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 // so convert it into |source|'s coordinates manually. 406 // so convert it into |source|'s coordinates manually.
408 reserved_rect.Offset(-future_source_bounds.x(), -future_source_bounds.y()); 407 reserved_rect.Offset(-future_source_bounds.x(), -future_source_bounds.y());
409 } else { 408 } else {
410 reserved_rect = gfx::Rect(); 409 reserved_rect = gfx::Rect();
411 } 410 }
412 411
413 source->SetReservedContentsRect(reserved_rect); 412 source->SetReservedContentsRect(reserved_rect);
414 } 413 }
415 414
416 void BrowserViewLayout::LayoutTabContents(int top, int bottom) { 415 void BrowserViewLayout::LayoutTabContents(int top, int bottom) {
417 // The ultimate idea is to calcualte bounds and reserved areas for all 416 // The ultimate idea is to calculate bounds and reserved areas for all
418 // contents views first and then resize them all, so every view 417 // contents views first and then resize them all, so every view
419 // (and its contents) is resized and laid out only once. 418 // (and its contents) is resized and laid out only once.
420 419
421 // The views hierarcy (see browser_view.h for more details): 420 // The views hierarcy (see browser_view.h for more details):
422 // 1) Sidebar is not allowed: 421 // contents_split_ -> [contents_container_ | devtools]
423 // contents_split_ -> [contents_container_ | devtools]
424 // 2) Sidebar is allowed:
425 // contents_split_ ->
426 // [sidebar_split -> [contents_container_ | sidebar]] | devtools
427 422
428 gfx::Rect sidebar_split_bounds;
429 gfx::Rect contents_bounds; 423 gfx::Rect contents_bounds;
430 gfx::Rect sidebar_bounds;
431 gfx::Rect devtools_bounds; 424 gfx::Rect devtools_bounds;
432 425
433 gfx::Rect contents_split_bounds(vertical_layout_rect_.x(), top, 426 gfx::Rect contents_split_bounds(vertical_layout_rect_.x(), top,
434 vertical_layout_rect_.width(), 427 vertical_layout_rect_.width(),
435 std::max(0, bottom - top)); 428 std::max(0, bottom - top));
436 contents_split_->CalculateChildrenBounds(
437 contents_split_bounds, &sidebar_split_bounds, &devtools_bounds);
438 gfx::Point contents_split_offset( 429 gfx::Point contents_split_offset(
439 contents_split_bounds.x() - contents_split_->bounds().x(), 430 contents_split_bounds.x() - contents_split_->bounds().x(),
440 contents_split_bounds.y() - contents_split_->bounds().y()); 431 contents_split_bounds.y() - contents_split_->bounds().y());
441 gfx::Point sidebar_split_offset(contents_split_offset);
442 sidebar_split_offset.Offset(sidebar_split_bounds.x(),
443 sidebar_split_bounds.y());
444 432
445 views::SingleSplitView* sidebar_split = browser_view_->sidebar_split_; 433 // Layout resize corner and calculate reserved contents rects here as all
446 if (sidebar_split) { 434 // contents view bounds are already determined, but not yet set at this point,
447 DCHECK(sidebar_split == contents_split_->child_at(0)); 435 // so contents will be laid out once at most.
448 sidebar_split->CalculateChildrenBounds(
449 sidebar_split_bounds, &contents_bounds, &sidebar_bounds);
450 } else {
451 contents_bounds = sidebar_split_bounds;
452 }
453
454 // Layout resize corner, sidebar mini tabs and calculate reserved contents
455 // rects here as all contents view bounds are already determined, but not yet
456 // set at this point, so contents will be laid out once at most.
457 // TODO(alekseys): layout sidebar minitabs and adjust reserved rect
458 // accordingly.
459 gfx::Rect browser_reserved_rect; 436 gfx::Rect browser_reserved_rect;
460 if (!browser_view_->frame_->IsMaximized() && 437 if (!browser_view_->frame_->IsMaximized() &&
461 !browser_view_->frame_->IsFullscreen()) { 438 !browser_view_->frame_->IsFullscreen()) {
462 gfx::Size resize_corner_size = browser_view_->GetResizeCornerSize(); 439 gfx::Size resize_corner_size = browser_view_->GetResizeCornerSize();
463 if (!resize_corner_size.IsEmpty()) { 440 if (!resize_corner_size.IsEmpty()) {
464 gfx::Rect bounds = browser_view_->GetContentsBounds(); 441 gfx::Rect bounds = browser_view_->GetContentsBounds();
465 gfx::Point resize_corner_origin( 442 gfx::Point resize_corner_origin(
466 bounds.right() - resize_corner_size.width(), 443 bounds.right() - resize_corner_size.width(),
467 bounds.bottom() - resize_corner_size.height()); 444 bounds.bottom() - resize_corner_size.height());
468 browser_reserved_rect = 445 browser_reserved_rect =
469 gfx::Rect(resize_corner_origin, resize_corner_size); 446 gfx::Rect(resize_corner_origin, resize_corner_size);
470 } 447 }
471 } 448 }
472 449
473 UpdateReservedContentsRect(browser_reserved_rect, 450 UpdateReservedContentsRect(browser_reserved_rect,
474 browser_view_->contents_container_, 451 browser_view_->contents_container_,
475 contents_bounds, 452 contents_bounds,
476 sidebar_split_offset); 453 contents_split_offset);
477 if (sidebar_split) {
478 UpdateReservedContentsRect(browser_reserved_rect,
479 browser_view_->sidebar_container_,
480 sidebar_bounds,
481 sidebar_split_offset);
482 }
483 UpdateReservedContentsRect(browser_reserved_rect, 454 UpdateReservedContentsRect(browser_reserved_rect,
484 browser_view_->devtools_container_, 455 browser_view_->devtools_container_,
485 devtools_bounds, 456 devtools_bounds,
486 contents_split_offset); 457 contents_split_offset);
487 458
488 // Now it's safe to actually resize all contents views in the hierarchy. 459 // Now it's safe to actually resize all contents views in the hierarchy.
489 contents_split_->SetBoundsRect(contents_split_bounds); 460 contents_split_->SetBoundsRect(contents_split_bounds);
490 if (sidebar_split)
491 sidebar_split->SetBoundsRect(sidebar_split_bounds);
492 } 461 }
493 462
494 int BrowserViewLayout::GetTopMarginForActiveContent() { 463 int BrowserViewLayout::GetTopMarginForActiveContent() {
495 if (!active_bookmark_bar_ || !browser_view_->IsBookmarkBarVisible() || 464 if (!active_bookmark_bar_ || !browser_view_->IsBookmarkBarVisible() ||
496 !active_bookmark_bar_->IsDetached()) { 465 !active_bookmark_bar_->IsDetached()) {
497 return 0; 466 return 0;
498 } 467 }
499 468
500 if (contents_split_->child_at(1) && contents_split_->child_at(1)->visible()) 469 if (contents_split_->child_at(1) && contents_split_->child_at(1)->visible())
501 return 0; 470 return 0;
502 471
503 if (SidebarManager::IsSidebarAllowed()) {
504 views::View* sidebar_split = contents_split_->child_at(0);
505 if (sidebar_split->child_count() >= 2 &&
506 sidebar_split->child_at(1)->visible())
507 return 0;
508 }
509
510 // Adjust for separator. 472 // Adjust for separator.
511 return active_bookmark_bar_->height() - 473 return active_bookmark_bar_->height() -
512 views::NonClientFrameView::kClientEdgeThickness; 474 views::NonClientFrameView::kClientEdgeThickness;
513 } 475 }
514 476
515 int BrowserViewLayout::LayoutDownloadShelf(int bottom) { 477 int BrowserViewLayout::LayoutDownloadShelf(int bottom) {
516 #if !defined(OS_CHROMEOS) || defined(USE_AURA) 478 #if !defined(OS_CHROMEOS) || defined(USE_AURA)
517 // Re-layout the shelf either if it is visible or if it's close animation 479 // Re-layout the shelf either if it is visible or if it's close animation
518 // is currently running. ChromiumOS uses ActiveDownloadsUI instead of 480 // is currently running. ChromiumOS uses ActiveDownloadsUI instead of
519 // DownloadShelf. 481 // DownloadShelf.
(...skipping 11 matching lines...) Expand all
531 } 493 }
532 #endif 494 #endif
533 return bottom; 495 return bottom;
534 } 496 }
535 497
536 bool BrowserViewLayout::InfobarVisible() const { 498 bool BrowserViewLayout::InfobarVisible() const {
537 // NOTE: Can't check if the size IsEmpty() since it's always 0-width. 499 // NOTE: Can't check if the size IsEmpty() since it's always 0-width.
538 return browser()->SupportsWindowFeature(Browser::FEATURE_INFOBAR) && 500 return browser()->SupportsWindowFeature(Browser::FEATURE_INFOBAR) &&
539 (infobar_container_->GetPreferredSize().height() != 0); 501 (infobar_container_->GetPreferredSize().height() != 0);
540 } 502 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.cc ('k') | chrome/browser/ui/views/tab_contents/tab_contents_container.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698