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

Side by Side Diff: views/controls/menu/native_menu_win.cc

Issue 3083022: Rework gfx::Font by moving platform-specific code into inner classes.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "views/controls/menu/native_menu_win.h" 5 #include "views/controls/menu/native_menu_win.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "app/l10n_util_win.h" 8 #include "app/l10n_util_win.h"
9 #include "base/keyboard_codes.h" 9 #include "base/keyboard_codes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 gfx::Font font; 144 gfx::Font font;
145 measure_item_struct->itemWidth = font.GetStringWidth(data->label) + 145 measure_item_struct->itemWidth = font.GetStringWidth(data->label) +
146 kIconWidth + kItemLeftMargin + kItemRightMargin - 146 kIconWidth + kItemLeftMargin + kItemRightMargin -
147 GetSystemMetrics(SM_CXMENUCHECK); 147 GetSystemMetrics(SM_CXMENUCHECK);
148 if (data->submenu.get()) 148 if (data->submenu.get())
149 measure_item_struct->itemWidth += kArrowWidth; 149 measure_item_struct->itemWidth += kArrowWidth;
150 // If the label contains an accelerator, make room for tab. 150 // If the label contains an accelerator, make room for tab.
151 if (data->label.find(L'\t') != std::wstring::npos) 151 if (data->label.find(L'\t') != std::wstring::npos)
152 measure_item_struct->itemWidth += font.GetStringWidth(L" "); 152 measure_item_struct->itemWidth += font.GetStringWidth(L" ");
153 measure_item_struct->itemHeight = 153 measure_item_struct->itemHeight =
154 font.height() + kItemBottomMargin + kItemTopMargin; 154 font.GetHeight() + kItemBottomMargin + kItemTopMargin;
155 } else { 155 } else {
156 // Measure separator size. 156 // Measure separator size.
157 measure_item_struct->itemHeight = GetSystemMetrics(SM_CYMENU) / 2; 157 measure_item_struct->itemHeight = GetSystemMetrics(SM_CYMENU) / 2;
158 measure_item_struct->itemWidth = 0; 158 measure_item_struct->itemWidth = 0;
159 } 159 }
160 } 160 }
161 161
162 // Called by Windows to paint an owner-drawn menu item. 162 // Called by Windows to paint an owner-drawn menu item.
163 void OnDrawItem(UINT w_param, DRAWITEMSTRUCT* draw_item_struct) { 163 void OnDrawItem(UINT w_param, DRAWITEMSTRUCT* draw_item_struct) {
164 HDC dc = draw_item_struct->hDC; 164 HDC dc = draw_item_struct->hDC;
(...skipping 24 matching lines...) Expand all
189 // Should we add kIconWidth only when icon.width() != 0 ? 189 // Should we add kIconWidth only when icon.width() != 0 ?
190 rect.left += kItemLeftMargin + kIconWidth; 190 rect.left += kItemLeftMargin + kIconWidth;
191 rect.right -= kItemRightMargin; 191 rect.right -= kItemRightMargin;
192 UINT format = DT_TOP | DT_SINGLELINE; 192 UINT format = DT_TOP | DT_SINGLELINE;
193 // Check whether the mnemonics should be underlined. 193 // Check whether the mnemonics should be underlined.
194 BOOL underline_mnemonics; 194 BOOL underline_mnemonics;
195 SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, &underline_mnemonics, 0); 195 SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, &underline_mnemonics, 0);
196 if (!underline_mnemonics) 196 if (!underline_mnemonics)
197 format |= DT_HIDEPREFIX; 197 format |= DT_HIDEPREFIX;
198 gfx::Font font; 198 gfx::Font font;
199 HGDIOBJ old_font = static_cast<HFONT>(SelectObject(dc, font.hfont())); 199 HGDIOBJ old_font =
200 int fontsize = font.FontSize(); 200 static_cast<HFONT>(SelectObject(dc, font.GetNativeFont()));
201 int fontsize = font.GetFontSize();
201 202
202 // If an accelerator is specified (with a tab delimiting the rest of the 203 // If an accelerator is specified (with a tab delimiting the rest of the
203 // label from the accelerator), we have to justify the fist part on the 204 // label from the accelerator), we have to justify the fist part on the
204 // left and the accelerator on the right. 205 // left and the accelerator on the right.
205 // TODO(jungshik): This will break in RTL UI. Currently, he/ar use the 206 // TODO(jungshik): This will break in RTL UI. Currently, he/ar use the
206 // window system UI font and will not hit here. 207 // window system UI font and will not hit here.
207 std::wstring label = data->label; 208 std::wstring label = data->label;
208 std::wstring accel; 209 std::wstring accel;
209 std::wstring::size_type tab_pos = label.find(L'\t'); 210 std::wstring::size_type tab_pos = label.find(L'\t');
210 if (tab_pos != std::wstring::npos) { 211 if (tab_pos != std::wstring::npos) {
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 629
629 //////////////////////////////////////////////////////////////////////////////// 630 ////////////////////////////////////////////////////////////////////////////////
630 // MenuWrapper, public: 631 // MenuWrapper, public:
631 632
632 // static 633 // static
633 MenuWrapper* MenuWrapper::CreateWrapper(Menu2* menu) { 634 MenuWrapper* MenuWrapper::CreateWrapper(Menu2* menu) {
634 return new NativeMenuWin(menu->model(), NULL); 635 return new NativeMenuWin(menu->model(), NULL);
635 } 636 }
636 637
637 } // namespace views 638 } // namespace views
OLDNEW
« no previous file with comments | « views/controls/menu/native_menu_gtk.cc ('k') | views/controls/tabbed_pane/native_tabbed_pane_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698