| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/views/omnibox/omnibox_view_win.h" | 5 #include "chrome/browser/ui/views/omnibox/omnibox_view_win.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <locale> | 8 #include <locale> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 // NOTE: Do not use SetWordBreakProcEx() here, that is no longer supported as | 489 // NOTE: Do not use SetWordBreakProcEx() here, that is no longer supported as |
| 490 // of Rich Edit 2.0 onward. | 490 // of Rich Edit 2.0 onward. |
| 491 SendMessage(m_hWnd, EM_SETWORDBREAKPROC, 0, | 491 SendMessage(m_hWnd, EM_SETWORDBREAKPROC, 0, |
| 492 reinterpret_cast<LPARAM>(&WordBreakProc)); | 492 reinterpret_cast<LPARAM>(&WordBreakProc)); |
| 493 | 493 |
| 494 // Get the metrics for the font. | 494 // Get the metrics for the font. |
| 495 HDC hdc = ::GetDC(NULL); | 495 HDC hdc = ::GetDC(NULL); |
| 496 HGDIOBJ old_font = SelectObject(hdc, font_.GetNativeFont()); | 496 HGDIOBJ old_font = SelectObject(hdc, font_.GetNativeFont()); |
| 497 TEXTMETRIC tm = {0}; | 497 TEXTMETRIC tm = {0}; |
| 498 GetTextMetrics(hdc, &tm); | 498 GetTextMetrics(hdc, &tm); |
| 499 const float kXHeightRatio = 0.7f; // The ratio of a font's x-height to its | 499 int cap_height = font_.GetBaseline() - tm.tmInternalLeading; |
| 500 // cap height. Sadly, Windows doesn't | 500 // The ratio of a font's x-height to its cap height. Sadly, Windows |
| 501 // provide a true value for a font's | 501 // doesn't provide a true value for a font's x-height in its text |
| 502 // x-height in its text metrics, so we | 502 // metrics, so we approximate. |
| 503 // approximate. | 503 const float kXHeightRatio = 0.7f; |
| 504 font_x_height_ = static_cast<int>((static_cast<float>(font_.GetBaseline() - | 504 font_x_height_ = static_cast<int>( |
| 505 tm.tmInternalLeading) * kXHeightRatio) + 0.5); | 505 (static_cast<float>(cap_height) * kXHeightRatio) + 0.5); |
| 506 // The distance from the top of the field to the desired baseline of the | 506 |
| 507 // rendered text. | 507 // We set font_y_adjustment_ so that the ascender of the font gets |
| 508 const int kTextBaseline = popup_window_mode_ ? 15 : 18; | 508 // centered on the available height of the view. |
| 509 font_y_adjustment_ = kTextBaseline - font_.GetBaseline(); | 509 font_y_adjustment_ = (parent_view->GetHeight() - cap_height) / 2 - |
| 510 tm.tmInternalLeading; |
| 510 | 511 |
| 511 // Get the number of twips per pixel, which we need below to offset our text | 512 // Get the number of twips per pixel, which we need below to offset our text |
| 512 // by the desired number of pixels. | 513 // by the desired number of pixels. |
| 513 const long kTwipsPerPixel = kTwipsPerInch / GetDeviceCaps(hdc, LOGPIXELSY); | 514 const long kTwipsPerPixel = kTwipsPerInch / GetDeviceCaps(hdc, LOGPIXELSY); |
| 514 // It's unsafe to delete a DC with a non-stock object selected, so restore the | 515 // It's unsafe to delete a DC with a non-stock object selected, so restore the |
| 515 // original font. | 516 // original font. |
| 516 SelectObject(hdc, old_font); | 517 SelectObject(hdc, old_font); |
| 517 ::ReleaseDC(NULL, hdc); | 518 ::ReleaseDC(NULL, hdc); |
| 518 | 519 |
| 519 // Set the default character style -- adjust to our desired baseline. | 520 // Set the default character style -- adjust to our desired baseline. |
| (...skipping 2164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2684 bool popup_window_mode, | 2685 bool popup_window_mode, |
| 2685 LocationBarView* location_bar) { | 2686 LocationBarView* location_bar) { |
| 2686 return new OmniboxViewWin(controller, | 2687 return new OmniboxViewWin(controller, |
| 2687 toolbar_model, | 2688 toolbar_model, |
| 2688 location_bar, | 2689 location_bar, |
| 2689 command_updater, | 2690 command_updater, |
| 2690 popup_window_mode, | 2691 popup_window_mode, |
| 2691 location_bar); | 2692 location_bar); |
| 2692 } | 2693 } |
| 2693 #endif | 2694 #endif |
| OLD | NEW |