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

Side by Side Diff: ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.mm

Issue 2707963002: [ObjC ARC] Converts ios/chrome/browser/ui/omnibox:omnibox_internal to ARC. (Closed)
Patch Set: weaks Created 3 years, 10 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) 2014 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2014 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 "ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.h" 5 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/ios/ios_util.h" 9 #include "base/ios/ios_util.h"
10 #include "base/mac/scoped_cftyperef.h" 10 #include "base/mac/scoped_cftyperef.h"
11 #include "base/mac/scoped_nsobject.h"
12 #include "base/strings/sys_string_conversions.h" 11 #include "base/strings/sys_string_conversions.h"
13 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
14 #import "components/image_fetcher/ios/ios_image_data_fetcher_wrapper.h" 13 #import "components/image_fetcher/ios/ios_image_data_fetcher_wrapper.h"
15 #include "components/omnibox/browser/autocomplete_input.h" 14 #include "components/omnibox/browser/autocomplete_input.h"
16 #include "components/omnibox/browser/autocomplete_match.h" 15 #include "components/omnibox/browser/autocomplete_match.h"
17 #include "components/omnibox/browser/autocomplete_result.h" 16 #include "components/omnibox/browser/autocomplete_result.h"
18 #include "components/omnibox/browser/suggestion_answer.h" 17 #include "components/omnibox/browser/suggestion_answer.h"
19 #include "ios/chrome/browser/ui/animation_util.h" 18 #include "ios/chrome/browser/ui/animation_util.h"
20 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_material_row.h" 19 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_material_row.h"
21 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_view_ios.h" 20 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_view_ios.h"
22 #include "ios/chrome/browser/ui/omnibox/omnibox_util.h" 21 #include "ios/chrome/browser/ui/omnibox/omnibox_util.h"
23 #import "ios/chrome/browser/ui/omnibox/truncating_attributed_label.h" 22 #import "ios/chrome/browser/ui/omnibox/truncating_attributed_label.h"
24 #include "ios/chrome/browser/ui/rtl_geometry.h" 23 #include "ios/chrome/browser/ui/rtl_geometry.h"
25 #include "ios/chrome/browser/ui/ui_util.h" 24 #include "ios/chrome/browser/ui/ui_util.h"
26 #import "ios/chrome/browser/ui/uikit_ui_util.h" 25 #import "ios/chrome/browser/ui/uikit_ui_util.h"
27 #include "ios/chrome/grit/ios_theme_resources.h" 26 #include "ios/chrome/grit/ios_theme_resources.h"
28 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h" 27 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h"
29 #import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoF ontLoader.h" 28 #import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoF ontLoader.h"
30 #include "net/base/escape.h" 29 #include "net/base/escape.h"
31 30
31 #if !defined(__has_feature) || !__has_feature(objc_arc)
32 #error "This file requires ARC support."
33 #endif
34
32 namespace { 35 namespace {
33 const int kRowCount = 6; 36 const int kRowCount = 6;
34 const CGFloat kRowHeight = 48.0; 37 const CGFloat kRowHeight = 48.0;
35 const CGFloat kAnswerRowHeight = 64.0; 38 const CGFloat kAnswerRowHeight = 64.0;
36 const CGFloat kTopAndBottomPadding = 8.0; 39 const CGFloat kTopAndBottomPadding = 8.0;
37 // The color of the main text of a suggest cell. 40 // The color of the main text of a suggest cell.
38 UIColor* SuggestionTextColor() { 41 UIColor* SuggestionTextColor() {
39 return [UIColor colorWithWhite:(51 / 255.0) alpha:1.0]; 42 return [UIColor colorWithWhite:(51 / 255.0) alpha:1.0];
40 } 43 }
41 // The color of the detail text of a suggest cell. 44 // The color of the detail text of a suggest cell.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 90
88 OmniboxPopupViewIOS* _popupView; // weak, owns us 91 OmniboxPopupViewIOS* _popupView; // weak, owns us
89 92
90 // Fetcher for Answers in Suggest images. 93 // Fetcher for Answers in Suggest images.
91 std::unique_ptr<image_fetcher::IOSImageDataFetcherWrapper> imageFetcher_; 94 std::unique_ptr<image_fetcher::IOSImageDataFetcherWrapper> imageFetcher_;
92 95
93 // The data source. 96 // The data source.
94 AutocompleteResult _currentResult; 97 AutocompleteResult _currentResult;
95 98
96 // Array containing the OmniboxPopupMaterialRow objects displayed in the view. 99 // Array containing the OmniboxPopupMaterialRow objects displayed in the view.
97 base::scoped_nsobject<NSArray> _rows; 100 NSArray* _rows;
98 101
99 // The height of the keyboard. Used to determine the content inset for the 102 // The height of the keyboard. Used to determine the content inset for the
100 // scroll view. 103 // scroll view.
101 CGFloat keyboardHeight_; 104 CGFloat keyboardHeight_;
102 } 105 }
103 106
104 @end 107 @end
105 108
106 @implementation OmniboxPopupMaterialViewController 109 @implementation OmniboxPopupMaterialViewController
107 110
(...skipping 21 matching lines...) Expand all
129 name:UIKeyboardDidShowNotification 132 name:UIKeyboardDidShowNotification
130 object:nil]; 133 object:nil];
131 } 134 }
132 } 135 }
133 return self; 136 return self;
134 } 137 }
135 138
136 - (void)dealloc { 139 - (void)dealloc {
137 self.tableView.delegate = nil; 140 self.tableView.delegate = nil;
138 [[NSNotificationCenter defaultCenter] removeObserver:self]; 141 [[NSNotificationCenter defaultCenter] removeObserver:self];
139 [super dealloc];
140 } 142 }
141 143
142 - (UIScrollView*)scrollView { 144 - (UIScrollView*)scrollView {
143 return (UIScrollView*)self.tableView; 145 return (UIScrollView*)self.tableView;
144 } 146 }
145 147
146 - (void)viewDidLoad { 148 - (void)viewDidLoad {
147 [super viewDidLoad]; 149 [super viewDidLoad];
148 150
149 // Initialize the same size as the parent view, autoresize will correct this. 151 // Initialize the same size as the parent view, autoresize will correct this.
(...skipping 15 matching lines...) Expand all
165 UIFont* bigBoldFont = 167 UIFont* bigBoldFont =
166 [[MDFRobotoFontLoader sharedInstance] mediumFontOfSize:bigFont.pointSize]; 168 [[MDFRobotoFontLoader sharedInstance] mediumFontOfSize:bigFont.pointSize];
167 _smallFont.reset(CTFontCreateWithName((CFStringRef)smallFont.fontName, 169 _smallFont.reset(CTFontCreateWithName((CFStringRef)smallFont.fontName,
168 smallFont.pointSize, NULL)); 170 smallFont.pointSize, NULL));
169 _bigFont.reset(CTFontCreateWithName((CFStringRef)bigFont.fontName, 171 _bigFont.reset(CTFontCreateWithName((CFStringRef)bigFont.fontName,
170 bigFont.pointSize, NULL)); 172 bigFont.pointSize, NULL));
171 _smallBoldFont.reset(CTFontCreateWithName((CFStringRef)smallBoldFont.fontName, 173 _smallBoldFont.reset(CTFontCreateWithName((CFStringRef)smallBoldFont.fontName,
172 smallBoldFont.pointSize, NULL)); 174 smallBoldFont.pointSize, NULL));
173 _bigBoldFont.reset(CTFontCreateWithName((CFStringRef)bigBoldFont.fontName, 175 _bigBoldFont.reset(CTFontCreateWithName((CFStringRef)bigBoldFont.fontName,
174 bigBoldFont.pointSize, NULL)); 176 bigBoldFont.pointSize, NULL));
175 NSMutableArray* rowsBuilder = [[[NSMutableArray alloc] init] autorelease]; 177 NSMutableArray* rowsBuilder = [[NSMutableArray alloc] init];
176 for (int i = 0; i < kRowCount; i++) { 178 for (int i = 0; i < kRowCount; i++) {
177 OmniboxPopupMaterialRow* row = [[[OmniboxPopupMaterialRow alloc] 179 OmniboxPopupMaterialRow* row =
178 initWithIncognito:_incognito] autorelease]; 180 [[OmniboxPopupMaterialRow alloc] initWithIncognito:_incognito];
179 row.accessibilityIdentifier = 181 row.accessibilityIdentifier =
180 [NSString stringWithFormat:@"omnibox suggestion %i", i]; 182 [NSString stringWithFormat:@"omnibox suggestion %i", i];
181 row.autoresizingMask = UIViewAutoresizingFlexibleWidth; 183 row.autoresizingMask = UIViewAutoresizingFlexibleWidth;
182 [rowsBuilder addObject:row]; 184 [rowsBuilder addObject:row];
183 [row.appendButton addTarget:self 185 [row.appendButton addTarget:self
184 action:@selector(appendButtonTapped:) 186 action:@selector(appendButtonTapped:)
185 forControlEvents:UIControlEventTouchUpInside]; 187 forControlEvents:UIControlEventTouchUpInside];
186 [row.appendButton setTag:i]; 188 [row.appendButton setTag:i];
187 row.rowHeight = kRowHeight; 189 row.rowHeight = kRowHeight;
188 } 190 }
189 _rows.reset([rowsBuilder copy]); 191 _rows = [rowsBuilder copy];
190 192
191 // Table configuration. 193 // Table configuration.
192 self.tableView.allowsMultipleSelectionDuringEditing = NO; 194 self.tableView.allowsMultipleSelectionDuringEditing = NO;
193 self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 195 self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
194 self.tableView.separatorInset = UIEdgeInsetsZero; 196 self.tableView.separatorInset = UIEdgeInsetsZero;
195 if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { 197 if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
196 [self.tableView setLayoutMargins:UIEdgeInsetsZero]; 198 [self.tableView setLayoutMargins:UIEdgeInsetsZero];
197 } 199 }
198 self.automaticallyAdjustsScrollViewInsets = NO; 200 self.automaticallyAdjustsScrollViewInsets = NO;
199 [self.tableView setContentInset:UIEdgeInsetsMake(kTopAndBottomPadding, 0, 201 [self.tableView setContentInset:UIEdgeInsetsMake(kTopAndBottomPadding, 0,
200 kTopAndBottomPadding, 0)]; 202 kTopAndBottomPadding, 0)];
201 } 203 }
202 204
203 - (void)didReceiveMemoryWarning { 205 - (void)didReceiveMemoryWarning {
204 [super didReceiveMemoryWarning]; 206 [super didReceiveMemoryWarning];
205 if (![self isViewLoaded]) { 207 if (![self isViewLoaded]) {
206 _smallFont.reset(); 208 _smallFont.reset();
207 _bigFont.reset(); 209 _bigFont.reset();
208 _smallBoldFont.reset(); 210 _smallBoldFont.reset();
209 _bigBoldFont.reset(); 211 _bigBoldFont.reset();
210 _rows.reset(); 212 _rows = nil;
211 } 213 }
212 } 214 }
213 215
214 - (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection { 216 - (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection {
215 [self layoutRows]; 217 [self layoutRows];
216 } 218 }
217 219
218 #pragma mark - 220 #pragma mark -
219 #pragma mark Updating data and UI 221 #pragma mark Updating data and UI
220 222
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 frame = detailTextLabel.frame; 412 frame = detailTextLabel.frame;
411 frame.size.width -= kLTRTextInRTLLayoutLeftPadding - frame.origin.x; 413 frame.size.width -= kLTRTextInRTLLayoutLeftPadding - frame.origin.x;
412 frame.origin.x = kLTRTextInRTLLayoutLeftPadding; 414 frame.origin.x = kLTRTextInRTLLayoutLeftPadding;
413 detailTextLabel.frame = frame; 415 detailTextLabel.frame = frame;
414 } 416 }
415 } 417 }
416 418
417 - (NSMutableAttributedString*)attributedStringWithAnswerLine: 419 - (NSMutableAttributedString*)attributedStringWithAnswerLine:
418 (const SuggestionAnswer::ImageLine&)line { 420 (const SuggestionAnswer::ImageLine&)line {
419 NSMutableAttributedString* result = 421 NSMutableAttributedString* result =
420 [[[NSMutableAttributedString alloc] initWithString:@""] autorelease]; 422 [[NSMutableAttributedString alloc] initWithString:@""];
421 423
422 for (size_t i = 0; i < line.text_fields().size(); i++) { 424 for (size_t i = 0; i < line.text_fields().size(); i++) {
423 const SuggestionAnswer::TextField& field = line.text_fields()[i]; 425 const SuggestionAnswer::TextField& field = line.text_fields()[i];
424 [result 426 [result
425 appendAttributedString:[self attributedStringWithString:field.text() 427 appendAttributedString:[self attributedStringWithString:field.text()
426 type:field.type()]]; 428 type:field.type()]];
427 } 429 }
428 430
429 base::scoped_nsobject<NSAttributedString> spacer( 431 NSAttributedString* spacer =
430 [[NSAttributedString alloc] initWithString:@" "]); 432 [[NSAttributedString alloc] initWithString:@" "];
431 if (line.additional_text() != nil) { 433 if (line.additional_text() != nil) {
432 const SuggestionAnswer::TextField* field = line.additional_text(); 434 const SuggestionAnswer::TextField* field = line.additional_text();
433 [result appendAttributedString:spacer]; 435 [result appendAttributedString:spacer];
434 [result 436 [result
435 appendAttributedString:[self attributedStringWithString:field->text() 437 appendAttributedString:[self attributedStringWithString:field->text()
436 type:field->type()]]; 438 type:field->type()]];
437 } 439 }
438 440
439 if (line.status_text() != nil) { 441 if (line.status_text() != nil) {
440 const SuggestionAnswer::TextField* field = line.status_text(); 442 const SuggestionAnswer::TextField* field = line.status_text();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 NSString* unescapedString = 524 NSString* unescapedString =
523 base::SysUTF16ToNSString(net::UnescapeForHTML(string)); 525 base::SysUTF16ToNSString(net::UnescapeForHTML(string));
524 // TODO(jdonnelly): Remove this tag stripping once the JSON parsing class 526 // TODO(jdonnelly): Remove this tag stripping once the JSON parsing class
525 // handles HTML tags. 527 // handles HTML tags.
526 unescapedString = [unescapedString stringByReplacingOccurrencesOfString:@"<b>" 528 unescapedString = [unescapedString stringByReplacingOccurrencesOfString:@"<b>"
527 withString:@""]; 529 withString:@""];
528 unescapedString = 530 unescapedString =
529 [unescapedString stringByReplacingOccurrencesOfString:@"</b>" 531 [unescapedString stringByReplacingOccurrencesOfString:@"</b>"
530 withString:@""]; 532 withString:@""];
531 533
532 return [[[NSAttributedString alloc] initWithString:unescapedString 534 return [[NSAttributedString alloc] initWithString:unescapedString
533 attributes:attributes] autorelease]; 535 attributes:attributes];
534 } 536 }
535 537
536 - (void)updateMatches:(const AutocompleteResult&)result 538 - (void)updateMatches:(const AutocompleteResult&)result
537 withAnimation:(BOOL)animation { 539 withAnimation:(BOOL)animation {
538 AutocompleteResult oldResults; 540 AutocompleteResult oldResults;
539 AutocompleteInput emptyInput; 541 AutocompleteInput emptyInput;
540 oldResults.Swap(&_currentResult); 542 oldResults.Swap(&_currentResult);
541 _currentResult.CopyOldMatches(emptyInput, result, nil); 543 _currentResult.CopyOldMatches(emptyInput, result, nil);
542 544
543 [self layoutRows]; 545 [self layoutRows];
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 #pragma mark UIScrollViewDelegate 646 #pragma mark UIScrollViewDelegate
645 647
646 - (void)scrollViewDidScroll:(UIScrollView*)scrollView { 648 - (void)scrollViewDidScroll:(UIScrollView*)scrollView {
647 // Setting the top inset of the scrollView to |kTopAndBottomPadding| causes a 649 // Setting the top inset of the scrollView to |kTopAndBottomPadding| causes a
648 // one time scrollViewDidScroll to |-kTopAndBottomPadding|. It's easier to 650 // one time scrollViewDidScroll to |-kTopAndBottomPadding|. It's easier to
649 // just ignore this one scroll tick. 651 // just ignore this one scroll tick.
650 if (scrollView.contentOffset.y == 0 - kTopAndBottomPadding) 652 if (scrollView.contentOffset.y == 0 - kTopAndBottomPadding)
651 return; 653 return;
652 654
653 _popupView->DidScroll(); 655 _popupView->DidScroll();
654 for (OmniboxPopupMaterialRow* row in _rows.get()) { 656 for (OmniboxPopupMaterialRow* row in _rows) {
655 row.highlighted = NO; 657 row.highlighted = NO;
656 } 658 }
657 } 659 }
658 660
659 // Set text alignment for popup cells. 661 // Set text alignment for popup cells.
660 - (void)setTextAlignment:(NSTextAlignment)alignment { 662 - (void)setTextAlignment:(NSTextAlignment)alignment {
661 _alignment = alignment; 663 _alignment = alignment;
662 } 664 }
663 665
664 - (BOOL)isSearchMatch:(const AutocompleteMatch::Type&)type { 666 - (BOOL)isSearchMatch:(const AutocompleteMatch::Type&)type {
665 return (type == AutocompleteMatchType::NAVSUGGEST || 667 return (type == AutocompleteMatchType::NAVSUGGEST ||
666 type == AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED || 668 type == AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED ||
667 type == AutocompleteMatchType::SEARCH_HISTORY || 669 type == AutocompleteMatchType::SEARCH_HISTORY ||
668 type == AutocompleteMatchType::SEARCH_SUGGEST || 670 type == AutocompleteMatchType::SEARCH_SUGGEST ||
669 type == AutocompleteMatchType::SEARCH_OTHER_ENGINE); 671 type == AutocompleteMatchType::SEARCH_OTHER_ENGINE);
670 } 672 }
671 673
672 - (NSMutableAttributedString*) 674 - (NSMutableAttributedString*)
673 attributedStringWithString:(NSString*)text 675 attributedStringWithString:(NSString*)text
674 classifications:(const ACMatchClassifications*)classifications 676 classifications:(const ACMatchClassifications*)classifications
675 smallFont:(BOOL)smallFont 677 smallFont:(BOOL)smallFont
676 color:(UIColor*)defaultColor 678 color:(UIColor*)defaultColor
677 dimColor:(UIColor*)dimColor { 679 dimColor:(UIColor*)dimColor {
678 if (text == nil) 680 if (text == nil)
679 return nil; 681 return nil;
680 682
681 CTFontRef fontRef = smallFont ? _smallFont : _bigFont; 683 CTFontRef fontRef = smallFont ? _smallFont : _bigFont;
682 684
683 NSMutableAttributedString* as = 685 NSMutableAttributedString* as =
684 [[[NSMutableAttributedString alloc] initWithString:text] autorelease]; 686 [[NSMutableAttributedString alloc] initWithString:text];
685 687
686 // Set the base attributes to the default font and color. 688 // Set the base attributes to the default font and color.
687 NSDictionary* dict = [NSDictionary 689 NSDictionary* dict = [NSDictionary
688 dictionaryWithObjectsAndKeys:(id)fontRef, (NSString*)kCTFontAttributeName, 690 dictionaryWithObjectsAndKeys:(__bridge id)fontRef,
rohitrao (ping after 24h) 2017/02/24 13:40:31 There's a CL out to remove all of the CTFont code
Justin Donnelly 2017/02/24 15:40:39 This landed yesterday: http://crrev.com/2695413003
stkhapugin 2017/03/01 17:43:58 Merged this in
691 (NSString*)kCTFontAttributeName,
689 defaultColor.CGColor, 692 defaultColor.CGColor,
690 (NSString*)kCTForegroundColorAttributeName, 693 (NSString*)kCTForegroundColorAttributeName,
691 nil]; 694 nil];
692 [as addAttributes:dict range:NSMakeRange(0, [text length])]; 695 [as addAttributes:dict range:NSMakeRange(0, [text length])];
693 696
694 if (classifications != NULL) { 697 if (classifications != NULL) {
695 CTFontRef boldFontRef = smallFont ? _smallBoldFont : _bigBoldFont; 698 CTFontRef boldFontRef = smallFont ? _smallBoldFont : _bigBoldFont;
696 699
697 for (ACMatchClassifications::const_iterator i = classifications->begin(); 700 for (ACMatchClassifications::const_iterator i = classifications->begin();
698 i != classifications->end(); ++i) { 701 i != classifications->end(); ++i) {
699 const BOOL isLast = (i + 1) == classifications->end(); 702 const BOOL isLast = (i + 1) == classifications->end();
700 const size_t nextOffset = (isLast ? [text length] : (i + 1)->offset); 703 const size_t nextOffset = (isLast ? [text length] : (i + 1)->offset);
701 const NSInteger location = static_cast<NSInteger>(i->offset); 704 const NSInteger location = static_cast<NSInteger>(i->offset);
702 const NSInteger length = static_cast<NSInteger>(nextOffset - i->offset); 705 const NSInteger length = static_cast<NSInteger>(nextOffset - i->offset);
703 // Guard against bad, off-the-end classification ranges due to 706 // Guard against bad, off-the-end classification ranges due to
704 // crbug.com/121703 and crbug.com/131370. 707 // crbug.com/121703 and crbug.com/131370.
705 if (i->offset + length > [text length] || length <= 0) 708 if (i->offset + length > [text length] || length <= 0)
706 break; 709 break;
707 const NSRange range = NSMakeRange(location, length); 710 const NSRange range = NSMakeRange(location, length);
708 if (0 != (i->style & ACMatchClassification::MATCH)) { 711 if (0 != (i->style & ACMatchClassification::MATCH)) {
709 [as addAttribute:(id)kCTFontAttributeName 712 [as addAttribute:(id)kCTFontAttributeName
710 value:(id)boldFontRef 713 value:(__bridge id)boldFontRef
rohitrao (ping after 24h) 2017/02/24 13:40:31 What does __bridge do?
stkhapugin 2017/03/01 17:43:58 __bridge is a type of cast that tells ARC to not d
711 range:range]; 714 range:range];
712 } 715 }
713 716
714 if (0 != (i->style & ACMatchClassification::DIM)) { 717 if (0 != (i->style & ACMatchClassification::DIM)) {
715 [as addAttribute:(id)kCTForegroundColorAttributeName 718 [as addAttribute:(id)kCTForegroundColorAttributeName
716 value:(id)dimColor.CGColor 719 value:(id)dimColor.CGColor
717 range:range]; 720 range:range];
718 } 721 }
719 } 722 }
720 } 723 }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 // The delete button never disappears if you don't call this after a tap. 786 // The delete button never disappears if you don't call this after a tap.
784 // It doesn't seem to be required anywhere else. 787 // It doesn't seem to be required anywhere else.
785 [_rows[indexPath.row] prepareForReuse]; 788 [_rows[indexPath.row] prepareForReuse];
786 const AutocompleteMatch& match = 789 const AutocompleteMatch& match =
787 ((const AutocompleteResult&)_currentResult).match_at(indexPath.row); 790 ((const AutocompleteResult&)_currentResult).match_at(indexPath.row);
788 _popupView->DeleteMatch(match); 791 _popupView->DeleteMatch(match);
789 } 792 }
790 } 793 }
791 794
792 @end 795 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698