OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/views/frame/browser_view.h" | 5 #include "chrome/browser/views/frame/browser_view.h" |
6 | 6 |
7 #if defined(OS_LINUX) | 7 #if defined(OS_LINUX) |
8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
9 #endif | 9 #endif |
10 | 10 |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 SkRect rect; | 260 SkRect rect; |
261 double roundness = 0; | 261 double roundness = 0; |
262 DetachableToolbarView::CalculateContentArea(current_state, h_padding, | 262 DetachableToolbarView::CalculateContentArea(current_state, h_padding, |
263 v_padding, &rect, &roundness, host_view_); | 263 v_padding, &rect, &roundness, host_view_); |
264 DetachableToolbarView::PaintContentAreaBackground(canvas, tp, rect, | 264 DetachableToolbarView::PaintContentAreaBackground(canvas, tp, rect, |
265 roundness); | 265 roundness); |
266 DetachableToolbarView::PaintContentAreaBorder(canvas, tp, rect, roundness); | 266 DetachableToolbarView::PaintContentAreaBorder(canvas, tp, rect, roundness); |
267 if (!toolbar_overlap) | 267 if (!toolbar_overlap) |
268 DetachableToolbarView::PaintHorizontalBorder(canvas, host_view_); | 268 DetachableToolbarView::PaintHorizontalBorder(canvas, host_view_); |
269 } else { | 269 } else { |
270 DetachableToolbarView::PaintBackgroundAttachedMode(canvas, host_view_); | 270 DetachableToolbarView::PaintBackgroundAttachedMode(canvas, host_view_, |
| 271 browser_view_->OffsetPointForToolbarBackgroundImage( |
| 272 gfx::Point(host_view_->MirroredX(), host_view_->y()))); |
271 if (host_view_->height() >= toolbar_overlap) | 273 if (host_view_->height() >= toolbar_overlap) |
272 DetachableToolbarView::PaintHorizontalBorder(canvas, host_view_); | 274 DetachableToolbarView::PaintHorizontalBorder(canvas, host_view_); |
273 } | 275 } |
274 } | 276 } |
275 | 277 |
276 /////////////////////////////////////////////////////////////////////////////// | 278 /////////////////////////////////////////////////////////////////////////////// |
277 // ResizeCorner, private: | 279 // ResizeCorner, private: |
278 | 280 |
279 class ResizeCorner : public views::View { | 281 class ResizeCorner : public views::View { |
280 public: | 282 public: |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
576 toolbar_->location_bar()->location_entry()->ClosePopup(); | 578 toolbar_->location_bar()->location_entry()->ClosePopup(); |
577 } | 579 } |
578 | 580 |
579 void BrowserView::WindowMoveOrResizeStarted() { | 581 void BrowserView::WindowMoveOrResizeStarted() { |
580 TabContents* tab_contents = GetSelectedTabContents(); | 582 TabContents* tab_contents = GetSelectedTabContents(); |
581 if (tab_contents) | 583 if (tab_contents) |
582 tab_contents->WindowMoveOrResizeStarted(); | 584 tab_contents->WindowMoveOrResizeStarted(); |
583 } | 585 } |
584 | 586 |
585 gfx::Rect BrowserView::GetToolbarBounds() const { | 587 gfx::Rect BrowserView::GetToolbarBounds() const { |
586 return toolbar_->bounds(); | 588 gfx::Rect toolbar_bounds(toolbar_->bounds()); |
| 589 if (toolbar_bounds.IsEmpty()) |
| 590 return toolbar_bounds; |
| 591 // When using vertical tabs, the toolbar appears to extend behind the tab |
| 592 // column. |
| 593 if (UseVerticalTabs()) |
| 594 toolbar_bounds.Inset(tabstrip_->x() - toolbar_bounds.x(), 0, 0, 0); |
| 595 // The apparent toolbar edges are outside the "real" toolbar edges. |
| 596 toolbar_bounds.Inset(-views::NonClientFrameView::kClientEdgeThickness, 0); |
| 597 return toolbar_bounds; |
587 } | 598 } |
588 | 599 |
589 gfx::Rect BrowserView::GetClientAreaBounds() const { | 600 gfx::Rect BrowserView::GetClientAreaBounds() const { |
590 gfx::Rect container_bounds = contents_->bounds(); | 601 gfx::Rect container_bounds = contents_->bounds(); |
591 gfx::Point container_origin = container_bounds.origin(); | 602 gfx::Point container_origin = container_bounds.origin(); |
592 ConvertPointToView(this, GetParent(), &container_origin); | 603 ConvertPointToView(this, GetParent(), &container_origin); |
593 container_bounds.set_origin(container_origin); | 604 container_bounds.set_origin(container_origin); |
594 return container_bounds; | 605 return container_bounds; |
595 } | 606 } |
596 | 607 |
597 bool BrowserView::ShouldFindBarBlendWithBookmarksBar() const { | 608 bool BrowserView::ShouldFindBarBlendWithBookmarksBar() const { |
598 if (bookmark_bar_view_.get()) | 609 if (bookmark_bar_view_.get()) |
599 return bookmark_bar_view_->IsAlwaysShown(); | 610 return bookmark_bar_view_->IsAlwaysShown(); |
600 return false; | 611 return false; |
601 } | 612 } |
602 | 613 |
603 gfx::Rect BrowserView::GetFindBarBoundingBox() const { | 614 gfx::Rect BrowserView::GetFindBarBoundingBox() const { |
604 return GetBrowserViewLayout()->GetFindBarBoundingBox(); | 615 return GetBrowserViewLayout()->GetFindBarBoundingBox(); |
605 } | 616 } |
606 | 617 |
607 int BrowserView::GetTabStripHeight() const { | 618 int BrowserView::GetTabStripHeight() const { |
608 // We want to return tabstrip_->height(), but we might be called in the midst | 619 // We want to return tabstrip_->height(), but we might be called in the midst |
609 // of layout, when that hasn't yet been updated to reflect the current state. | 620 // of layout, when that hasn't yet been updated to reflect the current state. |
610 // So return what the tabstrip height _ought_ to be right now. | 621 // So return what the tabstrip height _ought_ to be right now. |
611 return IsTabStripVisible() ? tabstrip_->GetPreferredSize().height() : 0; | 622 return IsTabStripVisible() ? tabstrip_->GetPreferredSize().height() : 0; |
612 } | 623 } |
613 | 624 |
614 gfx::Rect BrowserView::GetTabStripBounds() const { | 625 gfx::Point BrowserView::OffsetPointForToolbarBackgroundImage( |
615 return frame_->GetBoundsForTabStrip(tabstrip_); | 626 const gfx::Point& point) const { |
| 627 // The background image starts tiling horizontally at the window left edge and |
| 628 // vertically at the top edge of the horizontal tab strip (or where it would |
| 629 // be). We expect our parent's origin to be the window origin. |
| 630 gfx::Point window_point(point.Add(gfx::Point(MirroredX(), y()))); |
| 631 window_point.Offset(0, -frame_->GetHorizontalTabStripVerticalOffset(false)); |
| 632 return window_point; |
616 } | 633 } |
617 | 634 |
618 bool BrowserView::IsTabStripVisible() const { | 635 bool BrowserView::IsTabStripVisible() const { |
619 return browser_->SupportsWindowFeature(Browser::FEATURE_TABSTRIP); | 636 return browser_->SupportsWindowFeature(Browser::FEATURE_TABSTRIP); |
620 } | 637 } |
621 | 638 |
622 bool BrowserView::UseVerticalTabs() const { | 639 bool BrowserView::UseVerticalTabs() const { |
623 return browser_->tabstrip_model()->delegate()->UseVerticalTabs(); | 640 return browser_->tabstrip_model()->delegate()->UseVerticalTabs(); |
624 } | 641 } |
625 | 642 |
(...skipping 1112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1738 void BrowserView::Layout() { | 1755 void BrowserView::Layout() { |
1739 if (ignore_layout_) | 1756 if (ignore_layout_) |
1740 return; | 1757 return; |
1741 if (GetLayoutManager()) { | 1758 if (GetLayoutManager()) { |
1742 GetLayoutManager()->Layout(this); | 1759 GetLayoutManager()->Layout(this); |
1743 SchedulePaint(); | 1760 SchedulePaint(); |
1744 #if defined(OS_WIN) | 1761 #if defined(OS_WIN) |
1745 // Send the margins of the "user-perceived content area" of this | 1762 // Send the margins of the "user-perceived content area" of this |
1746 // browser window so AeroPeekManager can render a background-tab image in | 1763 // browser window so AeroPeekManager can render a background-tab image in |
1747 // the area. | 1764 // the area. |
| 1765 // TODO(pkasting) correct content inset?? |
1748 if (aeropeek_manager_.get()) { | 1766 if (aeropeek_manager_.get()) { |
1749 gfx::Insets insets(GetFindBarBoundingBox().y() + 1, | 1767 gfx::Insets insets(GetFindBarBoundingBox().y() + 1, |
1750 GetTabStripBounds().x(), | 1768 0, |
1751 GetTabStripBounds().x(), | 1769 0, |
1752 GetTabStripBounds().x()); | 1770 0); |
1753 aeropeek_manager_->SetContentInsets(insets); | 1771 aeropeek_manager_->SetContentInsets(insets); |
1754 } | 1772 } |
1755 #endif | 1773 #endif |
1756 } | 1774 } |
1757 } | 1775 } |
1758 | 1776 |
1759 void BrowserView::ViewHierarchyChanged(bool is_add, | 1777 void BrowserView::ViewHierarchyChanged(bool is_add, |
1760 views::View* parent, | 1778 views::View* parent, |
1761 views::View* child) { | 1779 views::View* child) { |
1762 if (is_add && child == this && GetWidget() && !initialized_) { | 1780 if (is_add && child == this && GetWidget() && !initialized_) { |
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2376 SetAccessibleName(l10n_util::GetString(IDS_PRODUCT_NAME)); | 2394 SetAccessibleName(l10n_util::GetString(IDS_PRODUCT_NAME)); |
2377 | 2395 |
2378 return view; | 2396 return view; |
2379 } | 2397 } |
2380 #endif | 2398 #endif |
2381 | 2399 |
2382 // static | 2400 // static |
2383 FindBar* BrowserWindow::CreateFindBar(Browser* browser) { | 2401 FindBar* BrowserWindow::CreateFindBar(Browser* browser) { |
2384 return browser::CreateFindBar(static_cast<BrowserView*>(browser->window())); | 2402 return browser::CreateFindBar(static_cast<BrowserView*>(browser->window())); |
2385 } | 2403 } |
OLD | NEW |