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

Side by Side Diff: chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm

Issue 2364933002: cocoa browser: remove non-material omnibox support (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ui/cocoa/omnibox/omnibox_popup_view_mac.h" 5 #include "chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/mac/mac_util.h" 9 #include "base/mac/mac_util.h"
10 #import "base/mac/sdk_forward_declarations.h" 10 #import "base/mac/sdk_forward_declarations.h"
(...skipping 18 matching lines...) Expand all
29 #include "ui/gfx/color_palette.h" 29 #include "ui/gfx/color_palette.h"
30 #include "ui/gfx/geometry/rect.h" 30 #include "ui/gfx/geometry/rect.h"
31 #include "ui/gfx/image/image_skia_util_mac.h" 31 #include "ui/gfx/image/image_skia_util_mac.h"
32 #include "ui/gfx/paint_vector_icon.h" 32 #include "ui/gfx/paint_vector_icon.h"
33 #include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h" 33 #include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h"
34 #include "ui/gfx/text_elider.h" 34 #include "ui/gfx/text_elider.h"
35 #include "ui/gfx/vector_icons_public.h" 35 #include "ui/gfx/vector_icons_public.h"
36 36
37 namespace { 37 namespace {
38 38
39 const int kPopupPaddingVertical = 5;
40 const int kMaterialPopupPaddingVertical = 4; 39 const int kMaterialPopupPaddingVertical = 4;
41 40
42 // Padding between matrix and the top and bottom of the popup window. 41 // Padding between matrix and the top and bottom of the popup window.
43 CGFloat PopupPaddingVertical() { 42 CGFloat PopupPaddingVertical() {
44 if (!ui::MaterialDesignController::IsModeMaterial()) {
45 return kPopupPaddingVertical;
46 }
47 return kMaterialPopupPaddingVertical; 43 return kMaterialPopupPaddingVertical;
48 } 44 }
49 45
50 // Animation duration when animating the popup window smaller. 46 // Animation duration when animating the popup window smaller.
51 const NSTimeInterval kShrinkAnimationDuration = 0.1; 47 const NSTimeInterval kShrinkAnimationDuration = 0.1;
52 48
53 } // namespace 49 } // namespace
54 50
55 OmniboxPopupViewMac::OmniboxPopupViewMac(OmniboxView* omnibox_view, 51 OmniboxPopupViewMac::OmniboxPopupViewMac(OmniboxView* omnibox_view,
56 OmniboxEditModel* edit_model, 52 OmniboxEditModel* edit_model,
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 defer:NO]); 174 defer:NO]);
179 [popup_ setBackgroundColor:[NSColor clearColor]]; 175 [popup_ setBackgroundColor:[NSColor clearColor]];
180 [popup_ setOpaque:NO]; 176 [popup_ setOpaque:NO];
181 177
182 // Use a flipped view to pin the matrix top the top left. This is needed 178 // Use a flipped view to pin the matrix top the top left. This is needed
183 // for animated resize. 179 // for animated resize.
184 base::scoped_nsobject<FlippedView> contentView( 180 base::scoped_nsobject<FlippedView> contentView(
185 [[FlippedView alloc] initWithFrame:NSZeroRect]); 181 [[FlippedView alloc] initWithFrame:NSZeroRect]);
186 [popup_ setContentView:contentView]; 182 [popup_ setContentView:contentView];
187 183
188 BOOL is_dark_theme = ui::MaterialDesignController::IsModeMaterial() && 184 BOOL is_dark_theme = [[field_ window] hasDarkTheme];
189 [[field_ window] hasDarkTheme];
190 185
191 // View to draw a background beneath the matrix. 186 // View to draw a background beneath the matrix.
192 background_view_.reset([[NSBox alloc] initWithFrame:NSZeroRect]); 187 background_view_.reset([[NSBox alloc] initWithFrame:NSZeroRect]);
193 [background_view_ setBoxType:NSBoxCustom]; 188 [background_view_ setBoxType:NSBoxCustom];
194 [background_view_ setBorderType:NSNoBorder]; 189 [background_view_ setBorderType:NSNoBorder];
195 [background_view_ setFillColor:BackgroundColor(is_dark_theme)]; 190 [background_view_ setFillColor:BackgroundColor(is_dark_theme)];
196 [background_view_ setContentViewMargins:NSZeroSize]; 191 [background_view_ setContentViewMargins:NSZeroSize];
197 [contentView addSubview:background_view_]; 192 [contentView addSubview:background_view_];
198 193
199 matrix_.reset([[OmniboxPopupMatrix alloc] initWithObserver:this 194 matrix_.reset([[OmniboxPopupMatrix alloc] initWithObserver:this
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 background_rect.size.width = NSWidth(popup_frame); 249 background_rect.size.width = NSWidth(popup_frame);
255 background_rect.size.height = NSHeight(popup_frame) - 250 background_rect.size.height = NSHeight(popup_frame) -
256 NSHeight(top_separator_frame) - NSHeight(bottom_separator_frame); 251 NSHeight(top_separator_frame) - NSHeight(bottom_separator_frame);
257 background_rect.origin.y = NSMaxY(top_separator_frame); 252 background_rect.origin.y = NSMaxY(top_separator_frame);
258 [background_view_ setFrame:background_rect]; 253 [background_view_ setFrame:background_rect];
259 254
260 // In Material Design, the table is the width of the window. In non-MD, 255 // In Material Design, the table is the width of the window. In non-MD,
261 // calculate the width of the table based on backing out the popup's border 256 // calculate the width of the table based on backing out the popup's border
262 // from the width of the field. 257 // from the width of the field.
263 CGFloat table_width = NSWidth([[[field_ window] contentView] bounds]); 258 CGFloat table_width = NSWidth([[[field_ window] contentView] bounds]);
264 bool is_mode_material = ui::MaterialDesignController::IsModeMaterial();
265 if (!is_mode_material) {
266 table_width = NSWidth([field_ bounds]);
267 }
268 DCHECK_GT(table_width, 0.0); 259 DCHECK_GT(table_width, 0.0);
269 260
270 // Matrix. 261 // Matrix.
271 NSPoint field_origin_base = 262 NSPoint field_origin_base =
272 [field_ convertPoint:[field_ bounds].origin toView:nil]; 263 [field_ convertPoint:[field_ bounds].origin toView:nil];
273 NSRect matrix_frame = NSZeroRect; 264 NSRect matrix_frame = NSZeroRect;
274 matrix_frame.origin.x = 0; 265 matrix_frame.origin.x = 0;
275 if (!is_mode_material) { 266 [matrix_ setContentLeftPadding:field_origin_base.x];
276 matrix_frame.origin.x = field_origin_base.x - NSMinX(anchor_rect_base);
277 } else {
278 [matrix_ setContentLeftPadding:field_origin_base.x];
279 }
280 matrix_frame.origin.y = PopupPaddingVertical(); 267 matrix_frame.origin.y = PopupPaddingVertical();
281 matrix_frame.size.width = table_width; 268 matrix_frame.size.width = table_width;
282 matrix_frame.size.height = matrixHeight; 269 matrix_frame.size.height = matrixHeight;
283 [matrix_ setFrame:matrix_frame]; 270 [matrix_ setFrame:matrix_frame];
284 [[[matrix_ tableColumns] objectAtIndex:0] setWidth:table_width]; 271 [[[matrix_ tableColumns] objectAtIndex:0] setWidth:table_width];
285 272
286 // Don't play animation games on first display. 273 // Don't play animation games on first display.
287 target_popup_frame_ = popup_frame; 274 target_popup_frame_ = popup_frame;
288 if (![popup_ parentWindow]) { 275 if (![popup_ parentWindow]) {
289 DCHECK(![popup_ isVisible]); 276 DCHECK(![popup_ isVisible]);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 [popup_ setAnimations:savedAnimations]; 322 [popup_ setAnimations:savedAnimations];
336 } 323 }
337 } 324 }
338 325
339 NSImage* OmniboxPopupViewMac::ImageForMatch( 326 NSImage* OmniboxPopupViewMac::ImageForMatch(
340 const AutocompleteMatch& match) const { 327 const AutocompleteMatch& match) const {
341 gfx::Image image = model_->GetIconIfExtensionMatch(match); 328 gfx::Image image = model_->GetIconIfExtensionMatch(match);
342 if (!image.IsEmpty()) 329 if (!image.IsEmpty())
343 return image.AsNSImage(); 330 return image.AsNSImage();
344 331
345 if (!ui::MaterialDesignController::IsModeMaterial()) {
346 const int resource_id = model_->IsStarredMatch(match)
347 ? IDR_OMNIBOX_STAR
348 : AutocompleteMatch::TypeToIcon(match.type);
349 return OmniboxViewMac::ImageForResource(resource_id);
350 }
351 bool is_dark_mode = [matrix_ hasDarkTheme]; 332 bool is_dark_mode = [matrix_ hasDarkTheme];
352 const SkColor icon_color = 333 const SkColor icon_color =
353 is_dark_mode ? SkColorSetA(SK_ColorWHITE, 0xCC) : gfx::kChromeIconGrey; 334 is_dark_mode ? SkColorSetA(SK_ColorWHITE, 0xCC) : gfx::kChromeIconGrey;
354 const gfx::VectorIconId vector_icon_id = 335 const gfx::VectorIconId vector_icon_id =
355 model_->IsStarredMatch(match) 336 model_->IsStarredMatch(match)
356 ? gfx::VectorIconId::LOCATION_BAR_STAR 337 ? gfx::VectorIconId::LOCATION_BAR_STAR
357 : AutocompleteMatch::TypeToVectorIcon(match.type); 338 : AutocompleteMatch::TypeToVectorIcon(match.type);
358 const int kIconSize = 16; 339 const int kIconSize = 16;
359 return NSImageFromImageSkia( 340 return NSImageFromImageSkia(
360 gfx::CreateVectorIcon(vector_icon_id, kIconSize, icon_color)); 341 gfx::CreateVectorIcon(vector_icon_id, kIconSize, icon_color));
361 } 342 }
362 343
363 void OmniboxPopupViewMac::OpenURLForRow(size_t row, 344 void OmniboxPopupViewMac::OpenURLForRow(size_t row,
364 WindowOpenDisposition disposition) { 345 WindowOpenDisposition disposition) {
365 DCHECK_LT(row, GetResult().size()); 346 DCHECK_LT(row, GetResult().size());
366 omnibox_view_->OpenMatch(GetResult().match_at(row), disposition, GURL(), 347 omnibox_view_->OpenMatch(GetResult().match_at(row), disposition, GURL(),
367 base::string16(), row); 348 base::string16(), row);
368 } 349 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.mm ('k') | chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698