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)
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 0613191..50ea8f9 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1511,6 +1511,20 @@
}
/*
+ * 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.
*/
static void
@@ -1523,13 +1537,9 @@
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 @@
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;
}
diff --git a/src/version.c b/src/version.c
index a5bb606..5eacff8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4194,
+/**/
4193,
/**/
4192,