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

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

Issue 1578021: Shift omnibox dropdown in and up on Windows, and square off the top, so it co... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 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) 2010 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/resource_bundle.h" 7 #include "app/resource_bundle.h"
8 #include "app/text_elider.h" 8 #include "app/text_elider.h"
9 #include "base/sys_string_conversions.h" 9 #include "base/sys_string_conversions.h"
10 #include "chrome/browser/autocomplete/autocomplete_edit.h" 10 #include "chrome/browser/autocomplete/autocomplete_edit.h"
11 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" 11 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h"
12 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" 12 #include "chrome/browser/autocomplete/autocomplete_popup_model.h"
13 #include "chrome/browser/bubble_positioner.h"
14 #include "chrome/browser/cocoa/event_utils.h" 13 #include "chrome/browser/cocoa/event_utils.h"
15 #include "gfx/rect.h" 14 #include "gfx/rect.h"
16 #include "grit/theme_resources.h" 15 #include "grit/theme_resources.h"
17 #import "third_party/GTM/AppKit/GTMNSAnimation+Duration.h" 16 #import "third_party/GTM/AppKit/GTMNSAnimation+Duration.h"
18 #import "third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.h" 17 #import "third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.h"
19 18
20 namespace { 19 namespace {
21 20
22 // The size delta between the font used for the edit and the result 21 // The size delta between the font used for the edit and the result
23 // rows. 22 // rows.
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 246
248 // Return the currently highlighted row. Returns -1 if no row is 247 // Return the currently highlighted row. Returns -1 if no row is
249 // highlighted. 248 // highlighted.
250 - (NSInteger)highlightedRow; 249 - (NSInteger)highlightedRow;
251 250
252 @end 251 @end
253 252
254 AutocompletePopupViewMac::AutocompletePopupViewMac( 253 AutocompletePopupViewMac::AutocompletePopupViewMac(
255 AutocompleteEditViewMac* edit_view, 254 AutocompleteEditViewMac* edit_view,
256 AutocompleteEditModel* edit_model, 255 AutocompleteEditModel* edit_model,
257 const BubblePositioner* bubble_positioner,
258 Profile* profile, 256 Profile* profile,
259 NSTextField* field) 257 NSTextField* field)
260 : model_(new AutocompletePopupModel(this, edit_model, profile)), 258 : model_(new AutocompletePopupModel(this, edit_model, profile)),
261 edit_view_(edit_view), 259 edit_view_(edit_view),
262 bubble_positioner_(bubble_positioner),
263 field_(field), 260 field_(field),
264 popup_(nil) { 261 popup_(nil) {
265 DCHECK(edit_view); 262 DCHECK(edit_view);
266 DCHECK(edit_model); 263 DCHECK(edit_model);
267 DCHECK(profile); 264 DCHECK(profile);
268 edit_model->SetPopupModel(model_.get()); 265 edit_model->SetPopupModel(model_.get());
269 } 266 }
270 267
271 AutocompletePopupViewMac::~AutocompletePopupViewMac() { 268 AutocompletePopupViewMac::~AutocompletePopupViewMac() {
272 // TODO(shess): Having to be aware of destructor ordering in this 269 // TODO(shess): Having to be aware of destructor ordering in this
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 [matrix setTarget:nil]; 316 [matrix setTarget:nil];
320 317
321 popup_.reset(nil); 318 popup_.reset(nil);
322 319
323 return; 320 return;
324 } 321 }
325 322
326 CreatePopupIfNeeded(); 323 CreatePopupIfNeeded();
327 324
328 // Layout the popup and size it to land underneath the field. 325 // Layout the popup and size it to land underneath the field.
329 NSRect r = 326 // The field has a single-pixel border on the left and right. This
330 NSRectFromCGRect(bubble_positioner_->GetLocationStackBounds().ToCGRect()); 327 // needs to be factored out so that the popup window's border (which
328 // is outside the frame) lines up.
329 const int kLocationStackEdgeWidth = 1;
330 NSRect r = NSInsetRect([field_ convertRect:[field_ bounds] toView:nil],
331 kLocationStackEdgeWidth, 0);
331 r.origin = [[field_ window] convertBaseToScreen:r.origin]; 332 r.origin = [[field_ window] convertBaseToScreen:r.origin];
332 DCHECK_GT(r.size.width, 0.0); 333 DCHECK_GT(r.size.width, 0.0);
333 334
334 // The popup's font is a slightly smaller version of what |field_| 335 // The popup's font is a slightly smaller version of what |field_|
335 // uses. 336 // uses.
336 NSFont* fieldFont = [field_ font]; 337 NSFont* fieldFont = [field_ font];
337 const CGFloat resultFontSize = [fieldFont pointSize] + kEditFontAdjust; 338 const CGFloat resultFontSize = [fieldFont pointSize] + kEditFontAdjust;
338 gfx::Font resultFont = gfx::Font::CreateFont( 339 gfx::Font resultFont = gfx::Font::CreateFont(
339 base::SysNSStringToWide([fieldFont fontName]), (int)resultFontSize); 340 base::SysNSStringToWide([fieldFont fontName]), (int)resultFontSize);
340 341
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 bottomRightCornerRadius:0.0]; 678 bottomRightCornerRadius:0.0];
678 679
679 // Draw the matrix clipped to our border. 680 // Draw the matrix clipped to our border.
680 [NSGraphicsContext saveGraphicsState]; 681 [NSGraphicsContext saveGraphicsState];
681 [path addClip]; 682 [path addClip];
682 [super drawRect:rect]; 683 [super drawRect:rect];
683 [NSGraphicsContext restoreGraphicsState]; 684 [NSGraphicsContext restoreGraphicsState];
684 } 685 }
685 686
686 @end 687 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698