mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Problem: MS-Windows: code for calculating font size is duplicated. Solution: Move the code to a function. (Ken Takata, closes #9603)
This commit is contained in:
@@ -1510,6 +1510,20 @@ update_scrollbar_size(void)
|
||||
gui.scrollbar_height = pGetSystemMetricsForDpi(SM_CYHSCROLL, s_dpi);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the average character size of a font.
|
||||
*/
|
||||
static void
|
||||
GetAverageFontSize(HDC hdc, SIZE *size)
|
||||
{
|
||||
// GetTextMetrics() may not return the right value in tmAveCharWidth
|
||||
// for some fonts. Do our own average computation.
|
||||
GetTextExtentPoint(hdc,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
||||
52, size);
|
||||
size->cx = (size->cx / 26 + 1) / 2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the character size of a font.
|
||||
*/
|
||||
@@ -1523,13 +1537,9 @@ GetFontSize(GuiFont font)
|
||||
TEXTMETRIC tm;
|
||||
|
||||
GetTextMetrics(hdc, &tm);
|
||||
// GetTextMetrics() may not return the right value in tmAveCharWidth
|
||||
// for some fonts. Do our own average computation.
|
||||
GetTextExtentPoint(hdc,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
||||
52, &size);
|
||||
gui.char_width = (size.cx / 26 + 1) / 2 + tm.tmOverhang;
|
||||
GetAverageFontSize(hdc, &size);
|
||||
|
||||
gui.char_width = size.cx + tm.tmOverhang;
|
||||
gui.char_height = tm.tmHeight + p_linespace;
|
||||
|
||||
SelectFont(hdc, hfntOld);
|
||||
@@ -7563,17 +7573,10 @@ get_dialog_font_metrics(void)
|
||||
|
||||
hdc = GetDC(s_hwnd);
|
||||
SelectObject(hdc, hfontTools);
|
||||
/*
|
||||
* GetTextMetrics() doesn't return the right value in
|
||||
* tmAveCharWidth, so we have to figure out the dialog base units
|
||||
* ourselves.
|
||||
*/
|
||||
GetTextExtentPoint(hdc,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
||||
52, &size);
|
||||
GetAverageFontSize(hdc, &size);
|
||||
ReleaseDC(s_hwnd, hdc);
|
||||
|
||||
s_dlgfntwidth = (WORD)((size.cx / 26 + 1) / 2);
|
||||
s_dlgfntwidth = (WORD)size.cx;
|
||||
s_dlgfntheight = (WORD)size.cy;
|
||||
}
|
||||
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4194,
|
||||
/**/
|
||||
4193,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user