comctl32/listbox: Update the size in SetColumnWidth before calling UpdatePage.

Some applications don't forward WM_SIZE from DefWindowProc to the control,
but instead only send a LB_SETCOLUMNWIDTH message, even when the column
width doesn't change (but the listbox size does).

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22440
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Gabriel Ivăncescu 2018-09-05 18:51:50 +03:00 committed by Alexandre Julliard
parent ce11b1bf62
commit bb116577a3
1 changed files with 12 additions and 5 deletions

View File

@ -1257,12 +1257,19 @@ static LRESULT LISTBOX_SetHorizontalExtent( LB_DESCR *descr, INT extent )
/*********************************************************************** /***********************************************************************
* LISTBOX_SetColumnWidth * LISTBOX_SetColumnWidth
*/ */
static LRESULT LISTBOX_SetColumnWidth( LB_DESCR *descr, INT width) static LRESULT LISTBOX_SetColumnWidth( LB_DESCR *descr, INT column_width)
{ {
if (width == descr->column_width) return LB_OKAY; RECT rect;
TRACE("[%p]: new column width = %d\n", descr->self, width );
descr->column_width = width; TRACE("[%p]: new column width = %d\n", descr->self, column_width);
LISTBOX_UpdatePage( descr );
GetClientRect(descr->self, &rect);
descr->width = rect.right - rect.left;
descr->height = rect.bottom - rect.top;
descr->column_width = column_width;
LISTBOX_UpdatePage(descr);
LISTBOX_UpdateScroll(descr);
return LB_OKAY; return LB_OKAY;
} }