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

Unified Diff: chrome/browser/ui/views/frame/browser_view.cc

Issue 6121007: Revert 71230 to see if it is related to hang on linux interactive_ui_tests.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.h ('k') | chrome/browser/ui/views/frame/browser_view_layout.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/frame/browser_view.cc
===================================================================
--- chrome/browser/ui/views/frame/browser_view.cc (revision 71251)
+++ chrome/browser/ui/views/frame/browser_view.cc (working copy)
@@ -1348,8 +1348,10 @@
}
void BrowserView::ShowInstant(TabContents* preview_contents) {
- if (!preview_container_)
+ if (!preview_container_) {
preview_container_ = new TabContentsContainer();
+ preview_container_->set_reserved_area_delegate(this);
+ }
contents_->SetPreview(preview_container_, preview_contents);
preview_container_->ChangeTabContents(preview_contents);
@@ -1823,12 +1825,41 @@
SelectedTabToolbarSizeChanged(is_animating);
}
-bool BrowserView::SplitHandleMoved(views::SingleSplitView* view) {
- for (int i = 0; i < view->GetChildViewCount(); ++i)
- view->GetChildViewAt(i)->InvalidateLayout();
- SchedulePaint();
- Layout();
- return false;
+void BrowserView::UpdateReservedContentsRect(
+ const TabContentsContainer* source) {
+ RenderWidgetHostView* render_widget_host_view =
+ source->tab_contents() ? source->tab_contents()->GetRenderWidgetHostView()
+ : NULL;
+ if (!render_widget_host_view)
+ return;
+
+ gfx::Rect reserved_rect;
+
+ if (!frame_->GetWindow()->IsMaximized() &&
+ !frame_->GetWindow()->IsFullscreen()) {
+ gfx::Size resize_corner_size = ResizeCorner::GetSize();
+ if (!resize_corner_size.IsEmpty()) {
+ gfx::Point resize_corner_origin;
+ gfx::Rect bounds = GetLocalBounds(false);
+ resize_corner_origin.set_x(bounds.right() - resize_corner_size.width());
+ resize_corner_origin.set_y(bounds.bottom() - resize_corner_size.height());
+
+ View::ConvertPointToView(this, source, &resize_corner_origin);
+
+ gfx::Size container_size = source->size();
+
+ if (resize_corner_origin.x() < container_size.width() &&
+ resize_corner_origin.y() < container_size.height()) {
+ reserved_rect = gfx::Rect(resize_corner_origin, resize_corner_size);
+ }
+ }
+ }
+
+ // TODO(alekseys): for source == contents_container_, consult SidebarTabView
+ // for the current size to reserve. Something like this:
+ // reserved_rect = reserved_rect.Union(SidebarTabView::GetCurrentBounds());
+
+ render_widget_host_view->set_reserved_contents_rect(reserved_rect);
}
views::LayoutManager* BrowserView::CreateLayoutManager() const {
@@ -1891,6 +1922,7 @@
AddChildView(infobar_container_);
contents_container_ = new TabContentsContainer;
+ contents_container_->set_reserved_area_delegate(this);
contents_ = new ContentsContainer(contents_container_);
SkColor bg_color = GetWidget()->GetThemeProvider()->
@@ -1899,14 +1931,14 @@
bool sidebar_allowed = SidebarManager::IsSidebarAllowed();
if (sidebar_allowed) {
sidebar_container_ = new TabContentsContainer;
+ sidebar_container_->set_reserved_area_delegate(this);
sidebar_container_->SetID(VIEW_ID_SIDE_BAR_CONTAINER);
sidebar_container_->SetVisible(false);
sidebar_split_ = new views::SingleSplitView(
contents_,
sidebar_container_,
- views::SingleSplitView::HORIZONTAL_SPLIT,
- this);
+ views::SingleSplitView::HORIZONTAL_SPLIT);
sidebar_split_->SetID(VIEW_ID_SIDE_BAR_SPLIT);
sidebar_split_->SetAccessibleName(
UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_SIDE_BAR)));
@@ -1915,6 +1947,7 @@
}
devtools_container_ = new TabContentsContainer;
+ devtools_container_->set_reserved_area_delegate(this);
devtools_container_->SetID(VIEW_ID_DEV_TOOLS_DOCKED);
devtools_container_->SetVisible(false);
@@ -1925,8 +1958,7 @@
contents_split_ = new views::SingleSplitView(
contents_view,
devtools_container_,
- views::SingleSplitView::VERTICAL_SPLIT,
- this);
+ views::SingleSplitView::VERTICAL_SPLIT);
contents_split_->SetID(VIEW_ID_CONTENTS_SPLIT);
contents_split_->SetAccessibleName(
UTF16ToWide(l10n_util::GetStringUTF16(IDS_ACCNAME_WEB_CONTENTS)));
@@ -2070,8 +2102,7 @@
sidebar_split_->width() - sidebar_width);
sidebar_container_->SetVisible(true);
- sidebar_split_->InvalidateLayout();
- Layout();
+ sidebar_split_->Layout();
} else if (should_hide) {
// Store split offset when hiding sidebar only.
g_browser_process->local_state()->SetInteger(
@@ -2079,8 +2110,7 @@
sidebar_split_->width() - sidebar_split_->divider_offset());
sidebar_container_->SetVisible(false);
- sidebar_split_->InvalidateLayout();
- Layout();
+ sidebar_split_->Layout();
}
}
@@ -2117,8 +2147,7 @@
contents_split_->set_divider_offset(split_offset);
devtools_container_->SetVisible(true);
- contents_split_->InvalidateLayout();
- Layout();
+ contents_split_->Layout();
} else if (should_hide) {
// Store split offset when hiding devtools window only.
g_browser_process->local_state()->SetInteger(
@@ -2128,8 +2157,7 @@
devtools_focus_tracker_->FocusLastFocusedExternalView();
devtools_container_->SetVisible(false);
- contents_split_->InvalidateLayout();
- Layout();
+ contents_split_->Layout();
}
}
@@ -2539,10 +2567,6 @@
UpdateUIForContents(new_contents);
}
-gfx::Size BrowserView::GetResizeCornerSize() const {
- return ResizeCorner::GetSize();
-}
-
#if !defined(OS_CHROMEOS)
// static
BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) {
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.h ('k') | chrome/browser/ui/views/frame/browser_view_layout.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698