15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/fill_layout.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FillLayout::FillLayout() {} 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FillLayout::~FillLayout() {} 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FillLayout::Layout(View* host) { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!host->has_children()) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) View* frame_view = host->child_at(0); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) frame_view->SetBoundsRect(host->GetContentsBounds()); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)gfx::Size FillLayout::GetPreferredSize(const View* host) const { 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!host->has_children()) 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return gfx::Size(); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(1, host->child_count()); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Rect rect(host->child_at(0)->GetPreferredSize()); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) rect.Inset(-host->GetInsets()); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return rect.size(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)int FillLayout::GetPreferredHeightForWidth(const View* host, int width) const { 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!host->has_children()) 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return 0; 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK_EQ(1, host->child_count()); 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const gfx::Insets insets = host->GetInsets(); 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return host->child_at(0)->GetHeightForWidth(width - insets.width()) + 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) insets.height(); 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace views 42