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

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

Issue 2933963002: [ios] Fix omnibox baseWritingDirection and dismissal iOS11 bugs. (Closed)
Patch Set: comments Created 3 years, 6 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 | ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.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 (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"
(...skipping 17 matching lines...) Expand all
28 #include "net/base/escape.h" 28 #include "net/base/escape.h"
29 29
30 #if !defined(__has_feature) || !__has_feature(objc_arc) 30 #if !defined(__has_feature) || !__has_feature(objc_arc)
31 #error "This file requires ARC support." 31 #error "This file requires ARC support."
32 #endif 32 #endif
33 33
34 namespace { 34 namespace {
35 const int kRowCount = 6; 35 const int kRowCount = 6;
36 const CGFloat kRowHeight = 48.0; 36 const CGFloat kRowHeight = 48.0;
37 const CGFloat kAnswerRowHeight = 64.0; 37 const CGFloat kAnswerRowHeight = 64.0;
38 const CGFloat kTopAndBottomPadding = 8.0; 38 const CGFloat kTopAndBottomPadding = 8.0;
rohitrao (ping after 24h) 2017/06/14 16:47:03 Why do we need to inset with this padding? If you
39 // The color of the main text of a suggest cell. 39 // The color of the main text of a suggest cell.
40 UIColor* SuggestionTextColor() { 40 UIColor* SuggestionTextColor() {
41 return [UIColor colorWithWhite:(51 / 255.0) alpha:1.0]; 41 return [UIColor colorWithWhite:(51 / 255.0) alpha:1.0];
42 } 42 }
43 // The color of the detail text of a suggest cell. 43 // The color of the detail text of a suggest cell.
44 UIColor* SuggestionDetailTextColor() { 44 UIColor* SuggestionDetailTextColor() {
45 return [UIColor colorWithRed:(85 / 255.0) 45 return [UIColor colorWithRed:(85 / 255.0)
46 green:(149 / 255.0) 46 green:(149 / 255.0)
47 blue:(254 / 255.0) 47 blue:(254 / 255.0)
48 alpha:1.0]; 48 alpha:1.0];
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 size_t size = _currentResult.size(); 557 size_t size = _currentResult.size();
558 if (animation && size > 0) { 558 if (animation && size > 0) {
559 [self fadeInRows]; 559 [self fadeInRows];
560 } 560 }
561 } 561 }
562 562
563 - (void)layoutRows { 563 - (void)layoutRows {
564 size_t size = _currentResult.size(); 564 size_t size = _currentResult.size();
565 565
566 [self.tableView reloadData]; 566 [self.tableView reloadData];
567 [self.tableView beginUpdates];
568 for (size_t i = 0; i < kRowCount; i++) {
569 OmniboxPopupMaterialRow* row = _rows[i];
570 567
571 if (i < size) { 568 // We animate the rows ourselves in -fadeInRows, so make sure the table view
572 const AutocompleteMatch& match = 569 // doens't try to apply it's own animation.
rohitrao (ping after 24h) 2017/06/14 16:47:03 doesn't and its.
573 ((const AutocompleteResult&)_currentResult).match_at((NSUInteger)i); 570 [UIView performWithoutAnimation:^{
574 [self updateRow:row withMatch:match]; 571 [self.tableView beginUpdates];
575 row.hidden = NO; 572 for (size_t i = 0; i < kRowCount; i++) {
576 } else { 573 OmniboxPopupMaterialRow* row = _rows[i];
577 row.hidden = YES; 574
575 if (i < size) {
576 const AutocompleteMatch& match =
577 ((const AutocompleteResult&)_currentResult).match_at((NSUInteger)i);
578 [self updateRow:row withMatch:match];
579 row.hidden = NO;
580 } else {
581 row.hidden = YES;
582 }
578 } 583 }
579 } 584 [self.tableView endUpdates];
580 [self.tableView endUpdates]; 585 }];
581 586
582 if (IsIPadIdiom()) 587 if (IsIPadIdiom())
583 [self updateContentInsetForKeyboard]; 588 [self updateContentInsetForKeyboard];
584 } 589 }
585 590
586 - (void)keyboardDidShow:(NSNotification*)notification { 591 - (void)keyboardDidShow:(NSNotification*)notification {
587 NSDictionary* keyboardInfo = [notification userInfo]; 592 NSDictionary* keyboardInfo = [notification userInfo];
588 NSValue* keyboardFrameValue = 593 NSValue* keyboardFrameValue =
589 [keyboardInfo valueForKey:UIKeyboardFrameEndUserInfoKey]; 594 [keyboardInfo valueForKey:UIKeyboardFrameEndUserInfoKey];
590 keyboardHeight_ = CurrentKeyboardHeight(keyboardFrameValue); 595 keyboardHeight_ = CurrentKeyboardHeight(keyboardFrameValue);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 // Make a defensive copy of |match.contents|, as CopyToOmnibox() will trigger 654 // Make a defensive copy of |match.contents|, as CopyToOmnibox() will trigger
650 // a new round of autocomplete and modify |_currentResult|. 655 // a new round of autocomplete and modify |_currentResult|.
651 base::string16 contents(match.contents); 656 base::string16 contents(match.contents);
652 _popupView->CopyToOmnibox(contents); 657 _popupView->CopyToOmnibox(contents);
653 } 658 }
654 659
655 #pragma mark - 660 #pragma mark -
656 #pragma mark UIScrollViewDelegate 661 #pragma mark UIScrollViewDelegate
657 662
658 - (void)scrollViewDidScroll:(UIScrollView*)scrollView { 663 - (void)scrollViewDidScroll:(UIScrollView*)scrollView {
659 // Setting the top inset of the scrollView to |kTopAndBottomPadding| causes a 664 if (!scrollView.dragging)
rohitrao (ping after 24h) 2017/06/14 16:47:03 Please add a comment here explaining why we need t
660 // one time scrollViewDidScroll to |-kTopAndBottomPadding|. It's easier to
661 // just ignore this one scroll tick.
662 if (scrollView.contentOffset.y == 0 - kTopAndBottomPadding)
663 return; 665 return;
664 666
665 _popupView->DidScroll(); 667 _popupView->DidScroll();
666 for (OmniboxPopupMaterialRow* row in _rows) { 668 for (OmniboxPopupMaterialRow* row in _rows) {
667 row.highlighted = NO; 669 row.highlighted = NO;
668 } 670 }
669 } 671 }
670 672
671 // Set text alignment for popup cells. 673 // Set text alignment for popup cells.
672 - (void)setTextAlignment:(NSTextAlignment)alignment { 674 - (void)setTextAlignment:(NSTextAlignment)alignment {
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 // The delete button never disappears if you don't call this after a tap. 788 // The delete button never disappears if you don't call this after a tap.
787 // It doesn't seem to be required anywhere else. 789 // It doesn't seem to be required anywhere else.
788 [_rows[indexPath.row] prepareForReuse]; 790 [_rows[indexPath.row] prepareForReuse];
789 const AutocompleteMatch& match = 791 const AutocompleteMatch& match =
790 ((const AutocompleteResult&)_currentResult).match_at(indexPath.row); 792 ((const AutocompleteResult&)_currentResult).match_at(indexPath.row);
791 _popupView->DeleteMatch(match); 793 _popupView->DeleteMatch(match);
792 } 794 }
793 } 795 }
794 796
795 @end 797 @end
OLDNEW
« no previous file with comments | « no previous file | ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698