Module: wine Branch: master Commit: db1a3c617e46c4feac69a587a76c7d9b6d91b14c URL: http://source.winehq.org/git/wine.git/?a=commit;h=db1a3c617e46c4feac69a587a7...
Author: Andrew Eikum aeikum@codeweavers.com Date: Fri Nov 10 08:28:48 2017 -0600
shell32: Size ShellView column widths by font width.
Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/shell32/shlview.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c index e0dbc3b..1628ea3 100644 --- a/dlls/shell32/shlview.c +++ b/dlls/shell32/shlview.c @@ -385,6 +385,9 @@ static void ShellView_InitList(IShellViewImpl *This) SHELLDETAILS sd; WCHAR nameW[50]; HRESULT hr; + HFONT list_font, old_font; + HDC list_dc; + TEXTMETRICW tm;
TRACE("(%p)\n", This);
@@ -406,6 +409,13 @@ static void ShellView_InitList(IShellViewImpl *This) } }
+ list_font = (HFONT)SendMessageW(This->hWndList, WM_GETFONT, 0, 0); + list_dc = GetDC(This->hWndList); + old_font = SelectObject(list_dc, list_font); + GetTextMetricsW(list_dc, &tm); + SelectObject(list_dc, old_font); + ReleaseDC(This->hWndList, list_dc); + for (This->columns = 0;; This->columns++) { if (This->pSF2Parent) @@ -415,9 +425,9 @@ static void ShellView_InitList(IShellViewImpl *This) if (FAILED(hr)) break;
lvColumn.fmt = sd.fmt; - lvColumn.cx = sd.cxChar*8; /* chars->pixel */ - StrRetToStrNW(nameW, sizeof(nameW)/sizeof(WCHAR), &sd.str, NULL); - SendMessageW(This->hWndList, LVM_INSERTCOLUMNW, This->columns, (LPARAM)&lvColumn); + lvColumn.cx = MulDiv(sd.cxChar, tm.tmAveCharWidth * 3, 2); /* chars->pixel */ + StrRetToStrNW(nameW, sizeof(nameW)/sizeof(WCHAR), &sd.str, NULL); + SendMessageW(This->hWndList, LVM_INSERTCOLUMNW, This->columns, (LPARAM)&lvColumn); }
if (details) IShellDetails_Release(details);