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

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

Issue 5606012: Streamline the layout of the BrowserView's children TabContents views.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years 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) 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 1334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1345 void BrowserView::ToggleTabStripMode() { 1345 void BrowserView::ToggleTabStripMode() {
1346 InitTabStrip(browser_->tabstrip_model()); 1346 InitTabStrip(browser_->tabstrip_model());
1347 frame_->TabStripDisplayModeChanged(); 1347 frame_->TabStripDisplayModeChanged();
1348 } 1348 }
1349 1349
1350 void BrowserView::PrepareForInstant() { 1350 void BrowserView::PrepareForInstant() {
1351 contents_->FadeActiveContents(); 1351 contents_->FadeActiveContents();
1352 } 1352 }
1353 1353
1354 void BrowserView::ShowInstant(TabContents* preview_contents) { 1354 void BrowserView::ShowInstant(TabContents* preview_contents) {
1355 if (!preview_container_) { 1355 if (!preview_container_)
1356 preview_container_ = new TabContentsContainer(); 1356 preview_container_ = new TabContentsContainer();
1357 preview_container_->set_reserved_area_delegate(this);
1358 }
1359 contents_->SetPreview(preview_container_, preview_contents); 1357 contents_->SetPreview(preview_container_, preview_contents);
1360 preview_container_->ChangeTabContents(preview_contents); 1358 preview_container_->ChangeTabContents(preview_contents);
1361 1359
1362 #if defined(OS_WIN) 1360 #if defined(OS_WIN)
1363 // Removing the fade is instant (on windows). We need to force the preview to 1361 // Removing the fade is instant (on windows). We need to force the preview to
1364 // draw, otherwise the current page flickers before the new page appears. 1362 // draw, otherwise the current page flickers before the new page appears.
1365 RedrawWindow(preview_contents->view()->GetContentNativeView(), NULL, NULL, 1363 RedrawWindow(preview_contents->view()->GetContentNativeView(), NULL, NULL,
1366 RDW_INVALIDATE | RDW_UPDATENOW | RDW_NOCHILDREN); 1364 RDW_INVALIDATE | RDW_UPDATENOW | RDW_NOCHILDREN);
1367 #endif 1365 #endif
1368 1366
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
1810 } 1808 }
1811 1809
1812 AccessibilityTypes::Role BrowserView::GetAccessibleRole() { 1810 AccessibilityTypes::Role BrowserView::GetAccessibleRole() {
1813 return AccessibilityTypes::ROLE_CLIENT; 1811 return AccessibilityTypes::ROLE_CLIENT;
1814 } 1812 }
1815 1813
1816 void BrowserView::InfoBarSizeChanged(bool is_animating) { 1814 void BrowserView::InfoBarSizeChanged(bool is_animating) {
1817 SelectedTabToolbarSizeChanged(is_animating); 1815 SelectedTabToolbarSizeChanged(is_animating);
1818 } 1816 }
1819 1817
1820 void BrowserView::UpdateReservedContentsRect( 1818 void BrowserView::SplitHandleMoved(views::SingleSplitView* view) {
1821 const TabContentsContainer* source) { 1819 Layout();
sky 2011/01/06 17:55:02 You should mark the children of the splitter as ne
Aleksey Shlyapnikov 2011/01/07 19:07:23 Even if we know this view uses custom layout manag
sky 2011/01/07 21:35:40 This code invokes Layout rather high in the hierar
1822 RenderWidgetHostView* render_widget_host_view =
1823 source->tab_contents() ? source->tab_contents()->GetRenderWidgetHostView()
1824 : NULL;
1825 if (!render_widget_host_view)
1826 return;
1827
1828 gfx::Rect reserved_rect;
1829
1830 if (!frame_->GetWindow()->IsMaximized() &&
1831 !frame_->GetWindow()->IsFullscreen()) {
1832 gfx::Size resize_corner_size = ResizeCorner::GetSize();
1833 if (!resize_corner_size.IsEmpty()) {
1834 gfx::Point resize_corner_origin;
1835 gfx::Rect bounds = GetLocalBounds(false);
1836 resize_corner_origin.set_x(bounds.right() - resize_corner_size.width());
1837 resize_corner_origin.set_y(bounds.bottom() - resize_corner_size.height());
1838
1839 View::ConvertPointToView(this, source, &resize_corner_origin);
1840
1841 gfx::Size container_size = source->size();
1842
1843 if (resize_corner_origin.x() < container_size.width() &&
1844 resize_corner_origin.y() < container_size.height()) {
1845 reserved_rect = gfx::Rect(resize_corner_origin, resize_corner_size);
1846 }
1847 }
1848 }
1849
1850 // TODO(alekseys): for source == contents_container_, consult SidebarTabView
1851 // for the current size to reserve. Something like this:
1852 // reserved_rect = reserved_rect.Union(SidebarTabView::GetCurrentBounds());
1853
1854 render_widget_host_view->set_reserved_contents_rect(reserved_rect);
1855 } 1820 }
1856 1821
1857 views::LayoutManager* BrowserView::CreateLayoutManager() const { 1822 views::LayoutManager* BrowserView::CreateLayoutManager() const {
1858 return new BrowserViewLayout; 1823 return new BrowserViewLayout;
1859 } 1824 }
1860 1825
1861 void BrowserView::InitTabStrip(TabStripModel* model) { 1826 void BrowserView::InitTabStrip(TabStripModel* model) {
1862 // Throw away the existing tabstrip if we're switching display modes. 1827 // Throw away the existing tabstrip if we're switching display modes.
1863 if (tabstrip_) { 1828 if (tabstrip_) {
1864 tabstrip_->GetParent()->RemoveChildView(tabstrip_); 1829 tabstrip_->GetParent()->RemoveChildView(tabstrip_);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1905 1870
1906 toolbar_ = new ToolbarView(browser_.get()); 1871 toolbar_ = new ToolbarView(browser_.get());
1907 AddChildView(toolbar_); 1872 AddChildView(toolbar_);
1908 toolbar_->Init(browser_->profile()); 1873 toolbar_->Init(browser_->profile());
1909 toolbar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_TOOLBAR)); 1874 toolbar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_TOOLBAR));
1910 1875
1911 infobar_container_ = new InfoBarContainer(this); 1876 infobar_container_ = new InfoBarContainer(this);
1912 AddChildView(infobar_container_); 1877 AddChildView(infobar_container_);
1913 1878
1914 contents_container_ = new TabContentsContainer; 1879 contents_container_ = new TabContentsContainer;
1915 contents_container_->set_reserved_area_delegate(this);
1916 contents_ = new ContentsContainer(contents_container_); 1880 contents_ = new ContentsContainer(contents_container_);
1917 1881
1918 SkColor bg_color = GetWidget()->GetThemeProvider()-> 1882 SkColor bg_color = GetWidget()->GetThemeProvider()->
1919 GetColor(BrowserThemeProvider::COLOR_TOOLBAR); 1883 GetColor(BrowserThemeProvider::COLOR_TOOLBAR);
1920 1884
1921 bool sidebar_allowed = SidebarManager::IsSidebarAllowed(); 1885 bool sidebar_allowed = SidebarManager::IsSidebarAllowed();
1922 if (sidebar_allowed) { 1886 if (sidebar_allowed) {
1923 sidebar_container_ = new TabContentsContainer; 1887 sidebar_container_ = new TabContentsContainer;
1924 sidebar_container_->set_reserved_area_delegate(this);
1925 sidebar_container_->SetID(VIEW_ID_SIDE_BAR_CONTAINER); 1888 sidebar_container_->SetID(VIEW_ID_SIDE_BAR_CONTAINER);
1926 sidebar_container_->SetVisible(false); 1889 sidebar_container_->SetVisible(false);
1927 1890
1928 sidebar_split_ = new views::SingleSplitView( 1891 sidebar_split_ = new views::SingleSplitView(
1929 contents_, 1892 contents_,
1930 sidebar_container_, 1893 sidebar_container_,
1931 views::SingleSplitView::HORIZONTAL_SPLIT); 1894 views::SingleSplitView::HORIZONTAL_SPLIT,
1895 this);
1932 sidebar_split_->SetID(VIEW_ID_SIDE_BAR_SPLIT); 1896 sidebar_split_->SetID(VIEW_ID_SIDE_BAR_SPLIT);
1933 sidebar_split_-> 1897 sidebar_split_->
1934 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_SIDE_BAR)); 1898 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_SIDE_BAR));
1935 sidebar_split_->set_background( 1899 sidebar_split_->set_background(
1936 views::Background::CreateSolidBackground(bg_color)); 1900 views::Background::CreateSolidBackground(bg_color));
1937 } 1901 }
1938 1902
1939 devtools_container_ = new TabContentsContainer; 1903 devtools_container_ = new TabContentsContainer;
1940 devtools_container_->set_reserved_area_delegate(this);
1941 devtools_container_->SetID(VIEW_ID_DEV_TOOLS_DOCKED); 1904 devtools_container_->SetID(VIEW_ID_DEV_TOOLS_DOCKED);
1942 devtools_container_->SetVisible(false); 1905 devtools_container_->SetVisible(false);
1943 1906
1944 views::View* contents_view = contents_; 1907 views::View* contents_view = contents_;
1945 if (sidebar_allowed) 1908 if (sidebar_allowed)
1946 contents_view = sidebar_split_; 1909 contents_view = sidebar_split_;
1947 1910
1948 contents_split_ = new views::SingleSplitView( 1911 contents_split_ = new views::SingleSplitView(
1949 contents_view, 1912 contents_view,
1950 devtools_container_, 1913 devtools_container_,
1951 views::SingleSplitView::VERTICAL_SPLIT); 1914 views::SingleSplitView::VERTICAL_SPLIT,
1915 this);
1952 contents_split_->SetID(VIEW_ID_CONTENTS_SPLIT); 1916 contents_split_->SetID(VIEW_ID_CONTENTS_SPLIT);
1953 contents_split_-> 1917 contents_split_->
1954 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_WEB_CONTENTS)); 1918 SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_WEB_CONTENTS));
1955 contents_split_->set_background( 1919 contents_split_->set_background(
1956 views::Background::CreateSolidBackground(bg_color)); 1920 views::Background::CreateSolidBackground(bg_color));
1957 AddChildView(contents_split_); 1921 AddChildView(contents_split_);
1958 set_contents_view(contents_split_); 1922 set_contents_view(contents_split_);
1959 1923
1960 status_bubble_.reset(new StatusBubbleViews(contents_)); 1924 status_bubble_.reset(new StatusBubbleViews(contents_));
1961 1925
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
2489 // handlers when we are eventually shown. 2453 // handlers when we are eventually shown.
2490 new_contents->view()->RestoreFocus(); 2454 new_contents->view()->RestoreFocus();
2491 } 2455 }
2492 2456
2493 // Update all the UI bits. 2457 // Update all the UI bits.
2494 UpdateTitleBar(); 2458 UpdateTitleBar();
2495 UpdateToolbar(new_contents, true); 2459 UpdateToolbar(new_contents, true);
2496 UpdateUIForContents(new_contents); 2460 UpdateUIForContents(new_contents);
2497 } 2461 }
2498 2462
2463 gfx::Size BrowserView::GetResizeCornerSize() const {
2464 return ResizeCorner::GetSize();
2465 }
2466
2499 #if !defined(OS_CHROMEOS) 2467 #if !defined(OS_CHROMEOS)
2500 // static 2468 // static
2501 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) { 2469 BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) {
2502 // Create the view and the frame. The frame will attach itself via the view 2470 // Create the view and the frame. The frame will attach itself via the view
2503 // so we don't need to do anything with the pointer. 2471 // so we don't need to do anything with the pointer.
2504 BrowserView* view = new BrowserView(browser); 2472 BrowserView* view = new BrowserView(browser);
2505 BrowserFrame::Create(view, browser->profile()); 2473 BrowserFrame::Create(view, browser->profile());
2506 2474
2507 view->GetWindow()->GetNonClientView()-> 2475 view->GetWindow()->GetNonClientView()->
2508 SetAccessibleName(l10n_util::GetString(IDS_PRODUCT_NAME)); 2476 SetAccessibleName(l10n_util::GetString(IDS_PRODUCT_NAME));
2509 2477
2510 return view; 2478 return view;
2511 } 2479 }
2512 #endif 2480 #endif
2513 2481
2514 // static 2482 // static
2515 FindBar* BrowserWindow::CreateFindBar(Browser* browser) { 2483 FindBar* BrowserWindow::CreateFindBar(Browser* browser) {
2516 return browser::CreateFindBar(static_cast<BrowserView*>(browser->window())); 2484 return browser::CreateFindBar(static_cast<BrowserView*>(browser->window()));
2517 } 2485 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698