1// Copyright (c) 2010 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#import "chrome/browser/ui/cocoa/location_bar/omnibox_popup_view.h" 6 7#include "base/logging.h" 8 9@implementation OmniboxPopupView 10 11// If there is only one subview, it is sized to fill all available space. If 12// there are two subviews, the second subview is placed at the bottom of the 13// view, and the first subview is sized to fill all remaining space. 14- (void)resizeSubviewsWithOldSize:(NSSize)oldBoundsSize { 15 NSArray* subviews = [self subviews]; 16 if ([subviews count] == 0) 17 return; 18 19 DCHECK_LE([subviews count], 2U); 20 21 NSRect availableSpace = [self bounds]; 22 23 if ([subviews count] >= 2) { 24 NSView* instantView = [subviews objectAtIndex:1]; 25 CGFloat height = NSHeight([instantView frame]); 26 NSRect instantFrame = availableSpace; 27 instantFrame.size.height = height; 28 29 availableSpace.origin.y = height; 30 availableSpace.size.height -= height; 31 [instantView setFrame:instantFrame]; 32 } 33 34 if ([subviews count] >= 1) { 35 NSView* matrixView = [subviews objectAtIndex:0]; 36 if (NSHeight(availableSpace) < 0) 37 availableSpace.size.height = 0; 38 39 [matrixView setFrame:availableSpace]; 40 } 41} 42 43@end 44