| Index: chrome/browser/ui/views/frame/browser_view.cc
|
| ===================================================================
|
| --- chrome/browser/ui/views/frame/browser_view.cc (revision 66034)
|
| +++ chrome/browser/ui/views/frame/browser_view.cc (working copy)
|
| @@ -32,6 +32,7 @@
|
| #include "chrome/browser/page_info_window.h"
|
| #include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/browser/profile.h"
|
| +#include "chrome/browser/renderer_host/render_widget_host_view.h"
|
| #include "chrome/browser/sessions/tab_restore_service.h"
|
| #include "chrome/browser/sidebar/sidebar_container.h"
|
| #include "chrome/browser/sidebar/sidebar_manager.h"
|
| @@ -261,6 +262,7 @@
|
| gfx::Size ps = GetPreferredSize();
|
| // No need to handle Right to left text direction here,
|
| // our parent must take care of it for us...
|
| + // TODO(alekseys): fix it.
|
| SetBounds(parent_view->width() - ps.width(),
|
| parent_view->height() - ps.height(), ps.width(), ps.height());
|
| }
|
| @@ -1007,28 +1009,6 @@
|
| browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR);
|
| }
|
|
|
| -gfx::Rect BrowserView::GetRootWindowResizerRect() const {
|
| - if (frame_->GetWindow()->IsMaximized() || frame_->GetWindow()->IsFullscreen())
|
| - return gfx::Rect();
|
| -
|
| - // We don't specify a resize corner size if we have a bottom shelf either.
|
| - // This is because we take care of drawing the resize corner on top of that
|
| - // shelf, so we don't want others to do it for us in this case.
|
| - // Currently, the only visible bottom shelf is the download shelf.
|
| - // Other tests should be added here if we add more bottom shelves.
|
| - if (download_shelf_.get() && download_shelf_->IsShowing()) {
|
| - return gfx::Rect();
|
| - }
|
| -
|
| - gfx::Rect client_rect = contents_split_->bounds();
|
| - gfx::Size resize_corner_size = ResizeCorner::GetSize();
|
| - int x = client_rect.width() - resize_corner_size.width();
|
| - if (base::i18n::IsRTL())
|
| - x = 0;
|
| - return gfx::Rect(x, client_rect.height() - resize_corner_size.height(),
|
| - resize_corner_size.width(), resize_corner_size.height());
|
| -}
|
| -
|
| void BrowserView::DisableInactiveFrame() {
|
| #if defined(OS_WIN)
|
| frame_->GetWindow()->DisableInactiveRendering();
|
| @@ -1363,8 +1343,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);
|
| }
|
| @@ -1808,6 +1790,43 @@
|
| SelectedTabToolbarSizeChanged(is_animating);
|
| }
|
|
|
| +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 {
|
| return new BrowserViewLayout;
|
| }
|
| @@ -1871,6 +1890,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()->
|
| @@ -1879,6 +1899,7 @@
|
| 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);
|
|
|
| @@ -1894,6 +1915,7 @@
|
| }
|
|
|
| devtools_container_ = new TabContentsContainer;
|
| + devtools_container_->set_reserved_area_delegate(this);
|
| devtools_container_->SetID(VIEW_ID_DEV_TOOLS_DOCKED);
|
| devtools_container_->SetVisible(false);
|
|
|
|
|