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

Side by Side Diff: chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc

Issue 113441: ChromeFont->gfx::Font... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/src/
Patch Set: Created 11 years, 7 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) 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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 // Space between the left edge (including the border) and the text. 53 // Space between the left edge (including the border) and the text.
54 const int kIconAreaWidth = 54 const int kIconAreaWidth =
55 kIconLeftPadding + kIconWidth + kIconRightPadding; 55 kIconLeftPadding + kIconWidth + kIconRightPadding;
56 // Space between the right edge (including the border) and the text. 56 // Space between the right edge (including the border) and the text.
57 const int kRightPadding = 3; 57 const int kRightPadding = 3;
58 // When we have both a content and description string, we don't want the 58 // When we have both a content and description string, we don't want the
59 // content to push the description off. Limit the content to a percentage of 59 // content to push the description off. Limit the content to a percentage of
60 // the total width. 60 // the total width.
61 const float kContentWidthPercentage = 0.7; 61 const float kContentWidthPercentage = 0.7;
62 62
63 // TODO(deanm): We should put this on ChromeFont so it can be shared. 63 // TODO(deanm): We should put this on gfx::Font so it can be shared.
64 // Returns a new pango font, free with pango_font_description_free(). 64 // Returns a new pango font, free with pango_font_description_free().
65 PangoFontDescription* PangoFontFromChromeFont(const ChromeFont& chrome_font) { 65 PangoFontDescription* PangoFontFromGfxFont(const gfx::Font& chrome_font) {
66 ChromeFont font = chrome_font; // Copy so we can call non-const methods. 66 gfx::Font font = chrome_font; // Copy so we can call non-const methods.
67 PangoFontDescription* pfd = pango_font_description_new(); 67 PangoFontDescription* pfd = pango_font_description_new();
68 pango_font_description_set_family(pfd, WideToUTF8(font.FontName()).c_str()); 68 pango_font_description_set_family(pfd, WideToUTF8(font.FontName()).c_str());
69 pango_font_description_set_size(pfd, font.FontSize() * PANGO_SCALE); 69 pango_font_description_set_size(pfd, font.FontSize() * PANGO_SCALE);
70 70
71 switch (font.style()) { 71 switch (font.style()) {
72 case ChromeFont::NORMAL: 72 case gfx::Font::NORMAL:
73 // Nothing to do, should already be PANGO_STYLE_NORMAL. 73 // Nothing to do, should already be PANGO_STYLE_NORMAL.
74 break; 74 break;
75 case ChromeFont::BOLD: 75 case gfx::Font::BOLD:
76 pango_font_description_set_weight(pfd, PANGO_WEIGHT_BOLD); 76 pango_font_description_set_weight(pfd, PANGO_WEIGHT_BOLD);
77 break; 77 break;
78 case ChromeFont::ITALIC: 78 case gfx::Font::ITALIC:
79 pango_font_description_set_style(pfd, PANGO_STYLE_ITALIC); 79 pango_font_description_set_style(pfd, PANGO_STYLE_ITALIC);
80 break; 80 break;
81 case ChromeFont::UNDERLINED: 81 case gfx::Font::UNDERLINED:
82 // TODO(deanm): How to do underlined? Where do we use it? Probably have 82 // TODO(deanm): How to do underlined? Where do we use it? Probably have
83 // to paint it ourselves, see pango_font_metrics_get_underline_position. 83 // to paint it ourselves, see pango_font_metrics_get_underline_position.
84 break; 84 break;
85 } 85 }
86 86
87 return pfd; 87 return pfd;
88 } 88 }
89 89
90 // Return a Rect covering the whole area of |window|. 90 // Return a Rect covering the whole area of |window|.
91 gfx::Rect GetWindowRect(GdkWindow* window) { 91 gfx::Rect GetWindowRect(GdkWindow* window) {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 // Set the background color, so we don't need to paint it manually. 239 // Set the background color, so we don't need to paint it manually.
240 gtk_widget_modify_bg(window_, GTK_STATE_NORMAL, &kBackgroundColor); 240 gtk_widget_modify_bg(window_, GTK_STATE_NORMAL, &kBackgroundColor);
241 241
242 // Cache the layout so we don't have to create it for every expose. If we 242 // Cache the layout so we don't have to create it for every expose. If we
243 // were a real widget we should handle changing directions, but we're not 243 // were a real widget we should handle changing directions, but we're not
244 // doing RTL or anything yet, so it shouldn't be important now. 244 // doing RTL or anything yet, so it shouldn't be important now.
245 layout_ = gtk_widget_create_pango_layout(window_, NULL); 245 layout_ = gtk_widget_create_pango_layout(window_, NULL);
246 // We always ellipsize when drawing our text runs. 246 // We always ellipsize when drawing our text runs.
247 pango_layout_set_ellipsize(layout_, PANGO_ELLIPSIZE_END); 247 pango_layout_set_ellipsize(layout_, PANGO_ELLIPSIZE_END);
248 // TODO(deanm): We might want to eventually follow what Windows does and 248 // TODO(deanm): We might want to eventually follow what Windows does and
249 // plumb a ChromeFont through. This is because popup windows have a 249 // plumb a gfx::Font through. This is because popup windows have a
250 // different font size, although we could just derive that font here. 250 // different font size, although we could just derive that font here.
251 PangoFontDescription* pfd = PangoFontFromChromeFont(ChromeFont()); 251 PangoFontDescription* pfd = PangoFontFromGfxFont(gfx::Font());
252 pango_layout_set_font_description(layout_, pfd); 252 pango_layout_set_font_description(layout_, pfd);
253 pango_font_description_free(pfd); 253 pango_font_description_free(pfd);
254 254
255 gtk_widget_add_events(window_, GDK_BUTTON_MOTION_MASK | 255 gtk_widget_add_events(window_, GDK_BUTTON_MOTION_MASK |
256 GDK_POINTER_MOTION_MASK | 256 GDK_POINTER_MOTION_MASK |
257 GDK_BUTTON_PRESS_MASK | 257 GDK_BUTTON_PRESS_MASK |
258 GDK_BUTTON_RELEASE_MASK); 258 GDK_BUTTON_RELEASE_MASK);
259 g_signal_connect(window_, "motion-notify-event", 259 g_signal_connect(window_, "motion-notify-event",
260 G_CALLBACK(&HandleMotionThunk), this); 260 G_CALLBACK(&HandleMotionThunk), this);
261 g_signal_connect(window_, "button-press-event", 261 g_signal_connect(window_, "button-press-event",
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 gdk_draw_layout(drawable, gc, 473 gdk_draw_layout(drawable, gc,
474 kIconAreaWidth + actual_content_width, content_y, 474 kIconAreaWidth + actual_content_width, content_y,
475 layout_); 475 layout_);
476 } 476 }
477 } 477 }
478 478
479 g_object_unref(gc); 479 g_object_unref(gc);
480 480
481 return TRUE; 481 return TRUE;
482 } 482 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_popup_view.h ('k') | chrome/browser/autocomplete/autocomplete_popup_view_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698