Andrew Eikum : shell32: Size ShellView column widths by font width.
Module: wine Branch: master Commit: db1a3c617e46c4feac69a587a76c7d9b6d91b14c URL: http://source.winehq.org/git/wine.git/?a=commit;h=db1a3c617e46c4feac69a587a7... Author: Andrew Eikum <aeikum(a)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(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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);
participants (1)
-
Alexandre Julliard