1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/views/layout/fill_layout.h" 6 7#include "base/logging.h" 8 9namespace views { 10 11FillLayout::FillLayout() {} 12 13FillLayout::~FillLayout() {} 14 15void FillLayout::Layout(View* host) { 16 if (!host->has_children()) 17 return; 18 19 View* frame_view = host->child_at(0); 20 frame_view->SetBoundsRect(host->GetContentsBounds()); 21} 22 23gfx::Size FillLayout::GetPreferredSize(const View* host) const { 24 if (!host->has_children()) 25 return gfx::Size(); 26 DCHECK_EQ(1, host->child_count()); 27 gfx::Rect rect(host->child_at(0)->GetPreferredSize()); 28 rect.Inset(-host->GetInsets()); 29 return rect.size(); 30} 31 32int FillLayout::GetPreferredHeightForWidth(const View* host, int width) const { 33 if (!host->has_children()) 34 return 0; 35 DCHECK_EQ(1, host->child_count()); 36 const gfx::Insets insets = host->GetInsets(); 37 return host->child_at(0)->GetHeightForWidth(width - insets.width()) + 38 insets.height(); 39} 40 41} // namespace views 42