Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(289)

Side by Side Diff: chrome/browser/autocomplete/autocomplete_popup_view_mac.mm

Issue 173439: [Mac] The autocomplete popup now gets its position from the toolbar controlle... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/autocomplete/autocomplete_popup_view_mac.h" 5 #include "chrome/browser/autocomplete/autocomplete_popup_view_mac.h"
6 6
7 #include "app/gfx/text_elider.h" 7 #include "app/gfx/text_elider.h"
8 #include "base/sys_string_conversions.h" 8 #include "base/sys_string_conversions.h"
9 #include "base/gfx/rect.h"
9 #include "chrome/browser/autocomplete/autocomplete_edit.h" 10 #include "chrome/browser/autocomplete/autocomplete_edit.h"
10 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" 11 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h"
11 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" 12 #include "chrome/browser/autocomplete/autocomplete_popup_model.h"
12 #include "chrome/browser/cocoa/event_utils.h" 13 #include "chrome/browser/cocoa/event_utils.h"
13 #include "chrome/browser/cocoa/nsimage_cache.h" 14 #include "chrome/browser/cocoa/nsimage_cache.h"
14 15
15 namespace { 16 namespace {
16 17
17 // The size delta between the font used for the edit and the result 18 // The size delta between the font used for the edit and the result
18 // rows. 19 // rows.
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 - (void)select:sender; 230 - (void)select:sender;
230 231
231 // Resize the popup when the field's window resizes. 232 // Resize the popup when the field's window resizes.
232 - (void)windowDidResize:(NSNotification*)notification; 233 - (void)windowDidResize:(NSNotification*)notification;
233 234
234 @end 235 @end
235 236
236 AutocompletePopupViewMac::AutocompletePopupViewMac( 237 AutocompletePopupViewMac::AutocompletePopupViewMac(
237 AutocompleteEditViewMac* edit_view, 238 AutocompleteEditViewMac* edit_view,
238 AutocompleteEditModel* edit_model, 239 AutocompleteEditModel* edit_model,
240 AutocompletePopupPositioner* positioner,
239 Profile* profile, 241 Profile* profile,
240 NSTextField* field) 242 NSTextField* field)
241 : model_(new AutocompletePopupModel(this, edit_model, profile)), 243 : model_(new AutocompletePopupModel(this, edit_model, profile)),
242 edit_view_(edit_view), 244 edit_view_(edit_view),
245 positioner_(positioner),
243 field_(field), 246 field_(field),
244 matrix_target_([[AutocompleteMatrixTarget alloc] initWithPopupView:this]), 247 matrix_target_([[AutocompleteMatrixTarget alloc] initWithPopupView:this]),
245 popup_(nil) { 248 popup_(nil) {
246 DCHECK(edit_view); 249 DCHECK(edit_view);
247 DCHECK(edit_model); 250 DCHECK(edit_model);
248 DCHECK(profile); 251 DCHECK(profile);
249 edit_model->set_popup_model(model_.get()); 252 edit_model->set_popup_model(model_.get());
250 } 253 }
251 254
252 AutocompletePopupViewMac::~AutocompletePopupViewMac() { 255 AutocompletePopupViewMac::~AutocompletePopupViewMac() {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 object:[field_ window]]; 312 object:[field_ window]];
310 313
311 popup_.reset(nil); 314 popup_.reset(nil);
312 315
313 return; 316 return;
314 } 317 }
315 318
316 CreatePopupIfNeeded(); 319 CreatePopupIfNeeded();
317 320
318 // Layout the popup and size it to land underneath the field. 321 // Layout the popup and size it to land underneath the field.
319 // TODO(shess) Consider refactoring to remove this depenency, 322 NSRect r = NSRectFromCGRect(positioner_->GetPopupBounds().ToCGRect());
320 // because the popup doesn't need any of the field-like aspects of
321 // field_. The edit view could expose helper methods for attaching
322 // the window to the field.
323
324 // Locate |field_| on the screen, and pad the left and right sides
325 // by the height to make it wide enough to include the star and go
326 // buttons.
327 // TODO(shess): This assumes that those buttons will be square.
328 // Better to plumb through so that this code can get the rect from
329 // the toolbar controller?
330 NSRect r = [field_ convertRect:[field_ bounds] toView:nil];
331 r.origin.x -= r.size.height;
332 r.size.width += 2 * r.size.height;
333 r.origin = [[field_ window] convertBaseToScreen:r.origin]; 323 r.origin = [[field_ window] convertBaseToScreen:r.origin];
334 DCHECK_GT(r.size.width, 0.0); 324 DCHECK_GT(r.size.width, 0.0);
335 325
336 // The popup's font is a slightly smaller version of what |field_| 326 // The popup's font is a slightly smaller version of what |field_|
337 // uses. 327 // uses.
338 NSFont* fieldFont = [field_ font]; 328 NSFont* fieldFont = [field_ font];
339 const CGFloat resultFontSize = [fieldFont pointSize] + kEditFontAdjust; 329 const CGFloat resultFontSize = [fieldFont pointSize] + kEditFontAdjust;
340 gfx::Font resultFont = gfx::Font::CreateFont( 330 gfx::Font resultFont = gfx::Font::CreateFont(
341 base::SysNSStringToWide([fieldFont fontName]), (int)resultFontSize); 331 base::SysNSStringToWide([fieldFont fontName]), (int)resultFontSize);
342 332
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 DCHECK(popup_view_); 600 DCHECK(popup_view_);
611 601
612 // TODO(shess): UpdatePopupAppearance() is called frequently, so it 602 // TODO(shess): UpdatePopupAppearance() is called frequently, so it
613 // should be really cheap, but in this case we could probably make 603 // should be really cheap, but in this case we could probably make
614 // things even cheaper by refactoring between the popup-placement 604 // things even cheaper by refactoring between the popup-placement
615 // code and the matrix-population code. 605 // code and the matrix-population code.
616 popup_view_->UpdatePopupAppearance(); 606 popup_view_->UpdatePopupAppearance();
617 } 607 }
618 608
619 @end 609 @end
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_popup_view_mac.h ('k') | chrome/browser/cocoa/location_bar_view_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698