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

Unified Diff: chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm

Issue 98463012: Infinite Suggest for mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add Infinite Suggest for Mac Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm
diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm b/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm
index 17678d2c9d15f74f20e18e8a2c04200f71bd9bfd..f03ca069051823acdce27429d10e5e44e2a6d501 100644
--- a/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm
+++ b/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm
@@ -47,6 +47,8 @@ const NSTimeInterval kShrinkAnimationDuration = 0.1;
// contents.
const CGFloat kMaxContentsFraction = 0.7;
+const char16 kEllipsis[] = { 0x2026, 0x20, 0x0 };
Scott Hess - ex-Googler 2013/12/12 19:11:15 Don't define your own constant. ElideString() use
Anuj 2013/12/12 23:56:22 Done.
+
// Background colors for different states of the popup elements.
NSColor* BackgroundColor() {
return [NSColor controlBackgroundColor];
@@ -123,11 +125,58 @@ void OmniboxPopupViewMac::UpdatePopupAppearance() {
// Load the results into the popup's matrix.
DCHECK_GT(rows, 0U);
[matrix_ renewRows:rows columns:1];
+
+ CGFloat max_match_width = 0;
+ CGFloat max_required_width = 0;
+ CGFloat ignored_prefix_width = 0;
+ CGFloat ellipsis_prefix_width = 0;
for (size_t ii = 0; ii < rows; ++ii) {
OmniboxPopupCell* cell = [matrix_ cellAtRow:ii column:0];
const AutocompleteMatch& match = GetResult().match_at(ii + start_match);
[cell setImage:ImageForMatch(match)];
- [cell setAttributedTitle:MatchText(match, result_font, matrix_width)];
+ NSAttributedString* match_text =
+ MatchText(match, result_font, matrix_width);
Scott Hess - ex-Googler 2013/12/12 19:11:15 This is going to construct a result which you are
Anuj 2013/12/12 19:40:55 1. I can change the code as follows if (ignored_pr
+
+ if (match.type == AutocompleteMatchType::SEARCH_SUGGEST_INFINITE) {
+
Scott Hess - ex-Googler 2013/12/12 19:11:15 No empty line.
Anuj 2013/12/12 23:56:22 Done.
+ string16 ignored_prefix = match.fill_into_edit.substr(
+ 0, match.fill_into_edit.rfind(match.contents));
+ NSMutableAttributedString* ignored_prefix_as = DecorateMatchedString(
+ ignored_prefix, ACMatchClassifications(), ContentTextColor(),
+ DimContentTextColor(), result_font);
+ ignored_prefix_width = [ignored_prefix_as size].width;
+ [ignored_prefix_as appendAttributedString:match_text];
+ CGFloat required_width = [ignored_prefix_as size].width;
+ if (required_width > max_required_width)
+ max_required_width = required_width;
+
+ NSMutableAttributedString* ellipsis_prefix = DecorateMatchedString(
+ kEllipsis, ACMatchClassifications(), ContentTextColor(),
+ DimContentTextColor(), result_font);
+ ellipsis_prefix_width = [ellipsis_prefix size].width;
+ [ellipsis_prefix appendAttributedString:match_text];
+ CGFloat match_width = [ellipsis_prefix size].width;
+ if (match_width > max_match_width)
+ max_match_width = match_width;
+ match_text = ellipsis_prefix;
+ }
+ [cell setAttributedTitle:match_text];
+ }
+
+ for (size_t ii = 0; ii < rows; ++ii) {
+ const AutocompleteMatch& match = GetResult().match_at(ii + start_match);
+ OmniboxPopupCell* cell = [matrix_ cellAtRow:ii column:0];
+ [cell setAdditionalOffset:0];
+ if (match.type != AutocompleteMatchType::SEARCH_SUGGEST_INFINITE) {
+ continue;
+ }
+
+ const float text_width = matrix_width - kTextXOffset;
+ CGFloat additional_offset = (max_required_width < text_width) ?
+ (ignored_prefix_width - ellipsis_prefix_width) :
+ (text_width - max_match_width);
+ if (additional_offset > 0)
+ [cell setAdditionalOffset:additional_offset];
}
// Set the cell size to fit a line of text in the cell's font. All

Powered by Google App Engine
This is Rietveld 408576698