OLD | NEW |
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 "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/ui/browser_finder.h" | 7 #include "chrome/browser/ui/browser_finder.h" |
8 #include "chrome/browser/ui/find_bar/find_bar.h" | 8 #include "chrome/browser/ui/find_bar/find_bar.h" |
9 #include "chrome/browser/ui/find_bar/find_bar_controller.h" | 9 #include "chrome/browser/ui/find_bar/find_bar_controller.h" |
10 #include "chrome/browser/ui/search/search_model.h" | 10 #include "chrome/browser/ui/search/search_model.h" |
| 11 #include "chrome/browser/ui/search/search_ui.h" |
11 #include "chrome/browser/ui/view_ids.h" | 12 #include "chrome/browser/ui/view_ids.h" |
12 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" | 13 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" |
13 #include "chrome/browser/ui/views/download/download_shelf_view.h" | 14 #include "chrome/browser/ui/views/download/download_shelf_view.h" |
14 #include "chrome/browser/ui/views/frame/browser_frame.h" | 15 #include "chrome/browser/ui/views/frame/browser_frame.h" |
15 #include "chrome/browser/ui/views/frame/browser_view.h" | 16 #include "chrome/browser/ui/views/frame/browser_view.h" |
16 #include "chrome/browser/ui/views/frame/contents_container.h" | 17 #include "chrome/browser/ui/views/frame/contents_container.h" |
17 #include "chrome/browser/ui/views/infobars/infobar_container_view.h" | 18 #include "chrome/browser/ui/views/infobars/infobar_container_view.h" |
18 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 19 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
19 #include "chrome/browser/ui/views/toolbar_view.h" | 20 #include "chrome/browser/ui/views/toolbar_view.h" |
20 #include "ui/base/hit_test.h" | 21 #include "ui/base/hit_test.h" |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 active_bookmark_bar_->GetToolbarOverlap(false); | 416 active_bookmark_bar_->GetToolbarOverlap(false); |
416 active_bookmark_bar_->SetVisible(true); | 417 active_bookmark_bar_->SetVisible(true); |
417 active_bookmark_bar_->SetBounds(vertical_layout_rect_.x(), y, | 418 active_bookmark_bar_->SetBounds(vertical_layout_rect_.x(), y, |
418 vertical_layout_rect_.width(), | 419 vertical_layout_rect_.width(), |
419 bookmark_bar_height); | 420 bookmark_bar_height); |
420 return y + bookmark_bar_height; | 421 return y + bookmark_bar_height; |
421 } | 422 } |
422 | 423 |
423 void BrowserViewLayout::LayoutBookmarkBarAtBottom() { | 424 void BrowserViewLayout::LayoutBookmarkBarAtBottom() { |
424 DCHECK(active_bookmark_bar_); | 425 DCHECK(active_bookmark_bar_); |
| 426 // Layout bookmark bar at bottom of content view in the y-direction. |
| 427 // Bookmark bar is child of |BrowserView| while content view is child of |
| 428 // ContentsContainer, so convert its bottom coordinate relative to |
| 429 // |BrowserView|. |
425 gfx::Point content_bottom( | 430 gfx::Point content_bottom( |
426 0, browser_view_->contents_container_->bounds().bottom()); | 431 0, browser_view_->contents_container_->bounds().bottom()); |
427 views::View::ConvertPointToTarget( | 432 views::View::ConvertPointToTarget( |
428 browser_view_->contents_container_->parent(), browser_view_, | 433 browser_view_->contents_container_->parent(), browser_view_, |
429 &content_bottom); | 434 &content_bottom); |
430 if (!browser_view_->IsBookmarkBarVisible()) { | 435 // Only show bookmark bar if height of content view is >= |
| 436 // chrome::search::kMinContentHeightForBottomBookmarkBar. |
| 437 if (browser_view_->contents_container_->height() < |
| 438 chrome::search::kMinContentHeightForBottomBookmarkBar || |
| 439 !browser_view_->IsBookmarkBarVisible()) { |
431 active_bookmark_bar_->SetVisible(false); | 440 active_bookmark_bar_->SetVisible(false); |
432 active_bookmark_bar_->SetBounds(0, content_bottom.y(), | 441 active_bookmark_bar_->SetBounds(0, content_bottom.y(), |
433 browser_view_->width(), 0); | 442 browser_view_->width(), 0); |
| 443 return; |
434 } | 444 } |
435 | 445 |
436 // BookmarkBarView uses infobar visibility to determine toolbar overlap, which | 446 // BookmarkBarView uses infobar visibility to determine toolbar overlap, which |
437 // is 0 if bookmark bar is detached and infobar is visible. Since the | 447 // is 0 if bookmark bar is detached and infobar is visible. Since the |
438 // bookmark bar on the NTP is detached at bottom of content view, toolbar | 448 // bookmark bar on the NTP is detached at bottom of content view, toolbar |
439 // overlap is irrelevant. So set infobar visible to force no toolbar overlap. | 449 // overlap is irrelevant. So set infobar visible to force no toolbar overlap. |
440 active_bookmark_bar_->set_infobar_visible(true); | 450 active_bookmark_bar_->set_infobar_visible(true); |
| 451 active_bookmark_bar_->SetVisible(true); |
441 int bookmark_bar_height = active_bookmark_bar_->GetPreferredSize().height(); | 452 int bookmark_bar_height = active_bookmark_bar_->GetPreferredSize().height(); |
442 active_bookmark_bar_->SetVisible(true); | |
443 active_bookmark_bar_->SetBounds(vertical_layout_rect_.x(), | 453 active_bookmark_bar_->SetBounds(vertical_layout_rect_.x(), |
444 content_bottom.y() - bookmark_bar_height, | 454 content_bottom.y() - bookmark_bar_height, |
445 vertical_layout_rect_.width(), | 455 vertical_layout_rect_.width(), |
446 bookmark_bar_height); | 456 bookmark_bar_height); |
447 } | 457 } |
448 | 458 |
449 int BrowserViewLayout::LayoutInfoBar(int top) { | 459 int BrowserViewLayout::LayoutInfoBar(int top) { |
450 // Raise the |infobar_container_| by its vertical overlap. | 460 // Raise the |infobar_container_| by its vertical overlap. |
451 infobar_container_->SetVisible(InfobarVisible()); | 461 infobar_container_->SetVisible(InfobarVisible()); |
452 int height; | 462 int height; |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 bottom -= height; | 543 bottom -= height; |
534 } | 544 } |
535 return bottom; | 545 return bottom; |
536 } | 546 } |
537 | 547 |
538 bool BrowserViewLayout::InfobarVisible() const { | 548 bool BrowserViewLayout::InfobarVisible() const { |
539 // NOTE: Can't check if the size IsEmpty() since it's always 0-width. | 549 // NOTE: Can't check if the size IsEmpty() since it's always 0-width. |
540 return browser()->SupportsWindowFeature(Browser::FEATURE_INFOBAR) && | 550 return browser()->SupportsWindowFeature(Browser::FEATURE_INFOBAR) && |
541 (infobar_container_->GetPreferredSize().height() != 0); | 551 (infobar_container_->GetPreferredSize().height() != 0); |
542 } | 552 } |
OLD | NEW |