OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/autocomplete/autocomplete_popup_view_gtk.h" | 5 #include "chrome/browser/autocomplete/autocomplete_popup_view_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL; | 166 PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL; |
167 PangoAttribute* weight_attr = pango_attr_weight_new(weight); | 167 PangoAttribute* weight_attr = pango_attr_weight_new(weight); |
168 weight_attr->start_index = offset; | 168 weight_attr->start_index = offset; |
169 pango_attr_list_insert(attrs, weight_attr); // Ownership taken. | 169 pango_attr_list_insert(attrs, weight_attr); // Ownership taken. |
170 } | 170 } |
171 | 171 |
172 pango_layout_set_attributes(layout, attrs); // Ref taken. | 172 pango_layout_set_attributes(layout, attrs); // Ref taken. |
173 pango_attr_list_unref(attrs); | 173 pango_attr_list_unref(attrs); |
174 } | 174 } |
175 | 175 |
176 GdkPixbuf* IconForMatch(const AutocompleteMatch& match) { | 176 GdkPixbuf* IconForMatch(const AutocompleteMatch& match, bool selected) { |
177 // TODO(deanm): These would be better as pixmaps someday. | 177 // TODO(deanm): These would be better as pixmaps someday. |
178 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 178 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
179 static GdkPixbuf* o2_globe = rb.GetPixbufNamed(IDR_O2_GLOBE); | 179 static GdkPixbuf* o2_globe = rb.GetPixbufNamed(IDR_O2_GLOBE); |
| 180 static GdkPixbuf* o2_globe_s = rb.GetPixbufNamed(IDR_O2_GLOBE_SELECTED); |
180 static GdkPixbuf* o2_history = rb.GetPixbufNamed(IDR_O2_HISTORY); | 181 static GdkPixbuf* o2_history = rb.GetPixbufNamed(IDR_O2_HISTORY); |
| 182 static GdkPixbuf* o2_history_s = rb.GetPixbufNamed(IDR_O2_HISTORY_SELECTED); |
181 static GdkPixbuf* o2_more = rb.GetPixbufNamed(IDR_O2_MORE); | 183 static GdkPixbuf* o2_more = rb.GetPixbufNamed(IDR_O2_MORE); |
| 184 static GdkPixbuf* o2_more_s = rb.GetPixbufNamed(IDR_O2_MORE_SELECTED); |
182 static GdkPixbuf* o2_search = rb.GetPixbufNamed(IDR_O2_SEARCH); | 185 static GdkPixbuf* o2_search = rb.GetPixbufNamed(IDR_O2_SEARCH); |
| 186 static GdkPixbuf* o2_search_s = rb.GetPixbufNamed(IDR_O2_SEARCH_SELECTED); |
183 static GdkPixbuf* o2_star = rb.GetPixbufNamed(IDR_O2_STAR); | 187 static GdkPixbuf* o2_star = rb.GetPixbufNamed(IDR_O2_STAR); |
| 188 static GdkPixbuf* o2_star_s = rb.GetPixbufNamed(IDR_O2_STAR_SELECTED); |
184 | 189 |
185 if (match.starred) | 190 if (match.starred) |
186 return o2_star; | 191 return selected ? o2_star_s : o2_star; |
187 | 192 |
188 switch (match.type) { | 193 switch (match.type) { |
189 case AutocompleteMatch::URL_WHAT_YOU_TYPED: | 194 case AutocompleteMatch::URL_WHAT_YOU_TYPED: |
190 case AutocompleteMatch::NAVSUGGEST: | 195 case AutocompleteMatch::NAVSUGGEST: |
191 return o2_globe; | 196 return selected ? o2_globe_s : o2_globe; |
192 case AutocompleteMatch::HISTORY_URL: | 197 case AutocompleteMatch::HISTORY_URL: |
193 case AutocompleteMatch::HISTORY_TITLE: | 198 case AutocompleteMatch::HISTORY_TITLE: |
194 case AutocompleteMatch::HISTORY_BODY: | 199 case AutocompleteMatch::HISTORY_BODY: |
195 case AutocompleteMatch::HISTORY_KEYWORD: | 200 case AutocompleteMatch::HISTORY_KEYWORD: |
196 return o2_history; | 201 return selected ? o2_history_s : o2_history; |
197 case AutocompleteMatch::SEARCH_WHAT_YOU_TYPED: | 202 case AutocompleteMatch::SEARCH_WHAT_YOU_TYPED: |
198 case AutocompleteMatch::SEARCH_HISTORY: | 203 case AutocompleteMatch::SEARCH_HISTORY: |
199 case AutocompleteMatch::SEARCH_SUGGEST: | 204 case AutocompleteMatch::SEARCH_SUGGEST: |
200 case AutocompleteMatch::SEARCH_OTHER_ENGINE: | 205 case AutocompleteMatch::SEARCH_OTHER_ENGINE: |
201 return o2_search; | 206 return selected ? o2_search_s : o2_search; |
202 case AutocompleteMatch::OPEN_HISTORY_PAGE: | 207 case AutocompleteMatch::OPEN_HISTORY_PAGE: |
203 return o2_more; | 208 return selected ? o2_more_s : o2_more; |
204 default: | 209 default: |
205 NOTREACHED(); | 210 NOTREACHED(); |
206 break; | 211 break; |
207 } | 212 } |
208 | 213 |
209 return NULL; | 214 return NULL; |
210 } | 215 } |
211 | 216 |
212 } // namespace | 217 } // namespace |
213 | 218 |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 if (is_selected || is_hovered) { | 423 if (is_selected || is_hovered) { |
419 gdk_gc_set_rgb_fg_color(gc, is_selected ? &kSelectedBackgroundColor : | 424 gdk_gc_set_rgb_fg_color(gc, is_selected ? &kSelectedBackgroundColor : |
420 &kHoveredBackgroundColor); | 425 &kHoveredBackgroundColor); |
421 // This entry is selected or hovered, fill a rect with the color. | 426 // This entry is selected or hovered, fill a rect with the color. |
422 gdk_draw_rectangle(drawable, gc, TRUE, | 427 gdk_draw_rectangle(drawable, gc, TRUE, |
423 line_rect.x(), line_rect.y(), | 428 line_rect.x(), line_rect.y(), |
424 line_rect.width(), line_rect.height()); | 429 line_rect.width(), line_rect.height()); |
425 } | 430 } |
426 | 431 |
427 // Draw the icon for this result time. | 432 // Draw the icon for this result time. |
428 DrawFullPixbuf(drawable, gc, IconForMatch(match), | 433 DrawFullPixbuf(drawable, gc, IconForMatch(match, is_selected), |
429 kIconLeftPadding, line_rect.y() + kIconTopPadding); | 434 kIconLeftPadding, line_rect.y() + kIconTopPadding); |
430 | 435 |
431 // Draw the results text vertically centered in the results space. | 436 // Draw the results text vertically centered in the results space. |
432 // First draw the contents / url, but don't let it take up the whole width | 437 // First draw the contents / url, but don't let it take up the whole width |
433 // if there is also a description to be shown. | 438 // if there is also a description to be shown. |
434 bool has_description = !match.description.empty(); | 439 bool has_description = !match.description.empty(); |
435 int text_width = window_rect.width() - (kIconAreaWidth + kRightPadding); | 440 int text_width = window_rect.width() - (kIconAreaWidth + kRightPadding); |
436 int content_width = has_description ? | 441 int content_width = has_description ? |
437 text_width * kContentWidthPercentage : text_width; | 442 text_width * kContentWidthPercentage : text_width; |
438 pango_layout_set_width(layout_, content_width * PANGO_SCALE); | 443 pango_layout_set_width(layout_, content_width * PANGO_SCALE); |
(...skipping 27 matching lines...) Expand all Loading... |
466 gdk_draw_layout(drawable, gc, | 471 gdk_draw_layout(drawable, gc, |
467 kIconAreaWidth + actual_content_width, content_y, | 472 kIconAreaWidth + actual_content_width, content_y, |
468 layout_); | 473 layout_); |
469 } | 474 } |
470 } | 475 } |
471 | 476 |
472 g_object_unref(gc); | 477 g_object_unref(gc); |
473 | 478 |
474 return TRUE; | 479 return TRUE; |
475 } | 480 } |
OLD | NEW |