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

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

Issue 2126023003: Mac (Cocoa) Omnibox: Force text field to LTR context if it is a URL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Respond to feedback. Created 4 years, 5 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
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #import "chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h" 5 #import "chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 // Calculate a slightly smaller font. The ratio here is somewhat arbitrary. 145 // Calculate a slightly smaller font. The ratio here is somewhat arbitrary.
146 // Proportions from 5/9 to 5/7 all look pretty good. 146 // Proportions from 5/9 to 5/7 all look pretty good.
147 CGFloat size = [font pointSize] * 5.0 / 9.0; 147 CGFloat size = [font pointSize] * 5.0 / 9.0;
148 NSFontDescriptor* descriptor = [font fontDescriptor]; 148 NSFontDescriptor* descriptor = [font fontDescriptor];
149 return [NSFont fontWithDescriptor:descriptor size:size]; 149 return [NSFont fontWithDescriptor:descriptor size:size];
150 } 150 }
151 NSFont* SmallFont() { 151 NSFont* SmallFont() {
152 return OmniboxViewMac::GetSmallFont(); 152 return OmniboxViewMac::GetSmallFont();
153 } 153 }
154 154
155 // Sets the writing direction to |direction| for a given |range| of
156 // |attributedString|.
157 void SetTextDirectionForRange(NSMutableAttributedString* attributedString,
158 NSWritingDirection direction,
159 NSRange range) {
160 base::scoped_nsobject<NSMutableParagraphStyle> paragraph_style(
161 [[NSMutableParagraphStyle alloc] init]);
162 [paragraph_style setBaseWritingDirection:direction];
163 [attributedString addAttribute:NSParagraphStyleAttributeName
164 value:paragraph_style
165 range:range];
166 }
167
155 NSAttributedString* CreateAnswerStringHelper(const base::string16& text, 168 NSAttributedString* CreateAnswerStringHelper(const base::string16& text,
156 NSInteger style_type, 169 NSInteger style_type,
157 bool is_bold, 170 bool is_bold,
158 BOOL is_dark_theme) { 171 BOOL is_dark_theme) {
159 NSDictionary* answer_style = nil; 172 NSDictionary* answer_style = nil;
160 NSFont* answer_font = nil; 173 NSFont* answer_font = nil;
161 bool is_mode_material = ui::MaterialDesignController::IsModeMaterial(); 174 bool is_mode_material = ui::MaterialDesignController::IsModeMaterial();
162 switch (style_type) { 175 switch (style_type) {
163 case SuggestionAnswer::TOP_ALIGNED: 176 case SuggestionAnswer::TOP_ALIGNED:
164 answer_style = @{ 177 answer_style = @{
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 const NSRange range = 369 const NSRange range =
357 NSMakeRange(location, std::min(length, match_length - location)); 370 NSMakeRange(location, std::min(length, match_length - location));
358 371
359 if (0 != (i->style & ACMatchClassification::MATCH)) { 372 if (0 != (i->style & ACMatchClassification::MATCH)) {
360 [attributedString addAttribute:NSFontAttributeName 373 [attributedString addAttribute:NSFontAttributeName
361 value:BoldFieldFont() 374 value:BoldFieldFont()
362 range:range]; 375 range:range];
363 } 376 }
364 377
365 if (0 != (i->style & ACMatchClassification::URL)) { 378 if (0 != (i->style & ACMatchClassification::URL)) {
379 // URLs have their text direction set to to LTR (avoids RTL characters
380 // making the URL render from right to left, as per RFC 3987 Section 4.1).
381 SetTextDirectionForRange(attributedString, NSWritingDirectionLeftToRight,
382 range);
366 [attributedString addAttribute:NSForegroundColorAttributeName 383 [attributedString addAttribute:NSForegroundColorAttributeName
367 value:URLTextColor(is_dark_theme) 384 value:URLTextColor(is_dark_theme)
368 range:range]; 385 range:range];
369 } else if (0 != (i->style & ACMatchClassification::DIM)) { 386 } else if (0 != (i->style & ACMatchClassification::DIM)) {
370 [attributedString addAttribute:NSForegroundColorAttributeName 387 [attributedString addAttribute:NSForegroundColorAttributeName
371 value:DimTextColor(is_dark_theme) 388 value:DimTextColor(is_dark_theme)
372 range:range]; 389 range:range];
373 } 390 }
374 } 391 }
375 392
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 base::string16 raw_separator = 736 base::string16 raw_separator =
720 l10n_util::GetStringUTF16(IDS_AUTOCOMPLETE_MATCH_DESCRIPTION_SEPARATOR); 737 l10n_util::GetStringUTF16(IDS_AUTOCOMPLETE_MATCH_DESCRIPTION_SEPARATOR);
721 return CreateAttributedString(raw_separator, DimTextColor(isDarkTheme)); 738 return CreateAttributedString(raw_separator, DimTextColor(isDarkTheme));
722 } 739 }
723 740
724 + (CGFloat)getContentAreaWidth:(NSRect)cellFrame { 741 + (CGFloat)getContentAreaWidth:(NSRect)cellFrame {
725 return NSWidth(cellFrame) - TextStartOffset(); 742 return NSWidth(cellFrame) - TextStartOffset();
726 } 743 }
727 744
728 @end 745 @end
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698