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

Unified Diff: chrome/browser/ui/views/location_bar/location_bar_view.cc

Issue 19666006: Supports FontList in Textfield. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removes ResourceBundle::Delegate::GetFontList. Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/location_bar/location_bar_view.cc
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
index 352f878c47eef91827d43f9ea6587e199e6c43d6..72a84ce3a9d8985274c0a5ce3c84e979787e033a 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -114,11 +114,12 @@ Browser* GetBrowserFromDelegate(LocationBarView::Delegate* delegate) {
return contents ? chrome::FindBrowserWithWebContents(contents) : NULL;
}
-// Given a containing |height| and a base |font|, shrinks the font until it will
-// fit within |height| while having its cap height vertically centered. Returns
-// the |font_y_offset| needed to produce this centering.
+// Given a containing |height| and a base |font_list|, shrinks the fonts until
+// the primary font will fit within |height| while having its cap height
+// vertically centered. Returns the |font_y_offset| needed to produce this
+// centering.
void CalculateFontAndOffsetForHeight(int height,
- gfx::Font* font,
+ gfx::FontList* font_list,
int* font_y_offset) {
#if defined(OS_WIN)
base::win::ScopedGetDC screen_dc(NULL);
@@ -128,21 +129,23 @@ void CalculateFontAndOffsetForHeight(int height,
// TODO(pkasting): Expand the gfx::Font metrics (and underlying Skia
// metrics) enough to expose the cap height directly.
#if defined(OS_WIN)
- base::win::ScopedSelectObject font_in_dc(screen_dc, font->GetNativeFont());
+ const gfx::Font& font = font_list->GetPrimaryFont();
+ base::win::ScopedSelectObject font_in_dc(screen_dc, font.GetNativeFont());
TEXTMETRIC tm = {0};
GetTextMetrics(screen_dc, &tm);
- int cap_height = font->GetBaseline() - tm.tmInternalLeading;
+ int cap_height = font.GetBaseline() - tm.tmInternalLeading;
*font_y_offset = ((height - cap_height) / 2) - tm.tmInternalLeading;
#else
// Without cap height available, we fall back to centering the full height.
- *font_y_offset = (height - font->GetHeight()) / 2;
+ *font_y_offset = (height - font_list->GetHeight()) / 2;
#endif
+ const int font_size = font_list->GetFontSize();
if (((*font_y_offset >= 0) &&
- ((*font_y_offset + font->GetHeight()) <= height)) ||
- (font->GetFontSize() <= 1))
+ ((*font_y_offset + font_list->GetHeight()) <= height)) ||
+ (font_size <= 1))
return;
- *font = font->DeriveFont(-1);
+ *font_list = font_list->DeriveFontListWithSize(font_size - 1);
}
}
@@ -234,28 +237,30 @@ void LocationBarView::Init() {
AddChildView(location_icon_view_);
// Determine the main font.
- gfx::Font font(ui::ResourceBundle::GetSharedInstance().GetFont(
- ui::ResourceBundle::BaseFont));
- const int current_font_size = font.GetFontSize();
+ gfx::FontList font_list = ResourceBundle::GetSharedInstance().GetFontList(
+ ResourceBundle::BaseFont);
+ const int current_font_size = font_list.GetFontSize();
const int desired_font_size = browser_defaults::kOmniboxFontPixelSize;
if (current_font_size < desired_font_size)
- font = font.DeriveFont(desired_font_size - current_font_size);
+ font_list = font_list.DeriveFontListWithSize(desired_font_size);
// Shrink large fonts to make them fit.
// TODO(pkasting): Stretch the location bar instead in this case.
int location_height = GetInternalHeight(true);
int font_y_offset;
- CalculateFontAndOffsetForHeight(location_height, &font, &font_y_offset);
+ CalculateFontAndOffsetForHeight(location_height, &font_list, &font_y_offset);
+ const gfx::Font& font = font_list.GetPrimaryFont();
// Determine the font for use inside the bubbles.
- gfx::Font bubble_font(font);
+ gfx::FontList bubble_font_list(font_list);
int bubble_font_y_offset;
// The bubble background images have 1 px thick edges, which we don't want to
// overlap.
const int kBubbleInteriorVerticalPadding = 1;
CalculateFontAndOffsetForHeight(
location_height - ((kBubblePadding + kBubbleInteriorVerticalPadding) * 2),
- &bubble_font, &bubble_font_y_offset);
+ &bubble_font_list, &bubble_font_y_offset);
bubble_font_y_offset += kBubbleInteriorVerticalPadding;
+ const gfx::Font& bubble_font = font_list.GetPrimaryFont();
const SkColor background_color =
GetColor(ToolbarModel::NONE, LocationBarView::BACKGROUND);
@@ -267,7 +272,7 @@ void LocationBarView::Init() {
// Initialize the Omnibox view.
location_entry_.reset(CreateOmniboxView(this, model_, profile_,
- command_updater_, is_popup_mode_, this, font, font_y_offset));
+ command_updater_, is_popup_mode_, this, font_list, font_y_offset));
SetLocationEntryFocusable(true);
location_entry_view_ = location_entry_->AddToView(this);

Powered by Google App Engine
This is Rietveld 408576698