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 9 namespace views { 10 11 FillLayout::FillLayout() {} 12 13 FillLayout::~FillLayout() {} 14 15 void 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 23 gfx::Size FillLayout::GetPreferredSize(View* host) { 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 32 int FillLayout::GetPreferredHeightForWidth(View* host, int width) { 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