This source file includes following definitions.
- active_top_margin_
- SetContentsResizingStrategy
- SetActiveTopMargin
- GetPreferredSize
- Installed
- Uninstalled
#include "chrome/browser/ui/views/frame/contents_layout_manager.h"
#include "ui/views/view.h"
ContentsLayoutManager::ContentsLayoutManager(
views::View* devtools_view,
views::View* contents_view)
: devtools_view_(devtools_view),
contents_view_(contents_view),
host_(NULL),
active_top_margin_(0) {
}
ContentsLayoutManager::~ContentsLayoutManager() {
}
void ContentsLayoutManager::SetContentsResizingStrategy(
const DevToolsContentsResizingStrategy& strategy) {
if (strategy_.Equals(strategy))
return;
strategy_.CopyFrom(strategy);
if (host_)
host_->InvalidateLayout();
}
void ContentsLayoutManager::SetActiveTopMargin(int margin) {
if (active_top_margin_ == margin)
return;
active_top_margin_ = margin;
if (host_)
host_->InvalidateLayout();
}
void ContentsLayoutManager::Layout(views::View* contents_container) {
DCHECK(host_ == contents_container);
int top = active_top_margin_;
int height = std::max(0, contents_container->height() - top);
int width = contents_container->width();
gfx::Size container_size(width, height);
gfx::Rect old_devtools_bounds(devtools_view_->bounds());
gfx::Rect old_contents_bounds(contents_view_->bounds());
gfx::Rect new_devtools_bounds;
gfx::Rect new_contents_bounds;
old_devtools_bounds.Offset(0, -top);
old_contents_bounds.Offset(0, -top);
ApplyDevToolsContentsResizingStrategy(strategy_, container_size,
old_devtools_bounds, old_contents_bounds,
&new_devtools_bounds, &new_contents_bounds);
new_devtools_bounds.Offset(0, top);
new_contents_bounds.Offset(0, top);
devtools_view_->SetBoundsRect(new_devtools_bounds);
contents_view_->SetBoundsRect(new_contents_bounds);
}
gfx::Size ContentsLayoutManager::GetPreferredSize(views::View* host) {
return gfx::Size();
}
void ContentsLayoutManager::Installed(views::View* host) {
DCHECK(!host_);
host_ = host;
}
void ContentsLayoutManager::Uninstalled(views::View* host) {
DCHECK(host_ == host);
host_ = NULL;
}