Nikolay Sivov : comctl32/monthcal: Take into account day name width when setting calendar column width.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed May 18 10:51:11 CDT 2016
Module: wine
Branch: master
Commit: 2f2651a14eb4b5035b5ca19862ce7ca8cc0ee81b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2f2651a14eb4b5035b5ca19862ce7ca8cc0ee81b
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue May 17 21:21:08 2016 +0300
comctl32/monthcal: Take into account day name width when setting calendar column width.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/comctl32/monthcal.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c
index 92e5367..36acb41 100644
--- a/dlls/comctl32/monthcal.c
+++ b/dlls/comctl32/monthcal.c
@@ -118,7 +118,6 @@ typedef struct
HFONT hFont;
HFONT hBoldFont;
int textHeight;
- int textWidth;
int height_increment;
int width_increment;
INT delta; /* scroll rate; # of months that the */
@@ -2494,9 +2493,10 @@ static void MONTHCAL_UpdateSize(MONTHCAL_INFO *infoPtr)
INT xdiv, dx, dy, i, j, x, y, c_dx, c_dy;
WCHAR buff[80];
TEXTMETRICW tm;
- SIZE size, sz;
+ INT day_width;
RECT client;
HFONT font;
+ SIZE size;
HDC hdc;
GetClientRect(infoPtr->hwndSelf, &client);
@@ -2508,27 +2508,30 @@ static void MONTHCAL_UpdateSize(MONTHCAL_INFO *infoPtr)
GetTextMetricsW(hdc, &tm);
infoPtr->textHeight = tm.tmHeight + tm.tmExternalLeading + tm.tmInternalLeading;
- /* find largest abbreviated day name for current locale */
- size.cx = sz.cx = 0;
+ /* find widest day name for current locale and font */
+ day_width = 0;
for (i = 0; i < 7; i++)
{
+ SIZE sz;
+
if (get_localized_dayname(infoPtr, i, buff, countof(buff)))
{
GetTextExtentPoint32W(hdc, buff, lstrlenW(buff), &sz);
- if (sz.cx > size.cx) size.cx = sz.cx;
+ if (sz.cx > day_width) day_width = sz.cx;
}
else /* locale independent fallback on failure */
{
- static const WCHAR SunW[] = { 'S','u','n',0 };
-
- GetTextExtentPoint32W(hdc, SunW, lstrlenW(SunW), &size);
+ static const WCHAR sunW[] = { 'S','u','n' };
+ GetTextExtentPoint32W(hdc, sunW, countof(sunW), &sz);
+ day_width = sz.cx;
break;
}
}
- infoPtr->textWidth = size.cx + 2;
+ day_width += 2;
/* recalculate the height and width increments and offsets */
+ size.cx = 0;
GetTextExtentPoint32W(hdc, O0W, 2, &size);
/* restore the originally selected font */
@@ -2537,7 +2540,7 @@ static void MONTHCAL_UpdateSize(MONTHCAL_INFO *infoPtr)
xdiv = (infoPtr->dwStyle & MCS_WEEKNUMBERS) ? 8 : 7;
- infoPtr->width_increment = size.cx * 2 + 4;
+ infoPtr->width_increment = max(day_width, size.cx * 2 + 4);
infoPtr->height_increment = infoPtr->textHeight;
/* calculate title area */
More information about the wine-cvs
mailing list