On Tue, 11 Feb 2003 16:17:31 -0600, you wrote:
Modified files: dlls/comctl32 : listview.c
Log message: Dimitrie O. Paun dpaun@rogers.com Compute matrix of first paint when we actually have some items (problem first spotted & debugged by Duane Clark).
This causes a rgeression in newsbin. The listview with the headers do not update during a "retrieve all headers". Until something else triggers a redraw, eg uncover window pane. From then everything works as expected.
Rein.
On Wed, 12 Feb 2003, Rein Klazes wrote:
This causes a rgeression in newsbin. The listview with the headers do not update during a "retrieve all headers". Until something else triggers a redraw, eg uncover window pane. From then everything works as expected.
Thank you for the bug report, I'll look into this later on tonight.
On February 12, 2003 11:49 am, Rein Klazes wrote:
This causes a rgeression in newsbin. The listview with the headers do not update during a "retrieve all headers".
Indeed. Thanks for the bug report. Please give this a shot, it should fix it.
ChangeLog Correctly remember the first paint event, but delay item metrics calculation until we actually have some items.
Index: dlls/comctl32/listview.c =================================================================== RCS file: /var/cvs/wine/dlls/comctl32/listview.c,v retrieving revision 1.339 diff -u -r1.339 listview.c --- dlls/comctl32/listview.c 11 Feb 2003 22:17:31 -0000 1.339 +++ dlls/comctl32/listview.c 14 Feb 2003 01:09:10 -0000 @@ -226,6 +226,7 @@ HIMAGELIST himlState; BOOL bLButtonDown; BOOL bRButtonDown; + BOOL bNoItemMetrics; /* flags if item metrics are not yet computed */ INT nItemHeight; INT nItemWidth; RANGES selectionRanges; @@ -7032,6 +7033,7 @@ infoPtr->nHotItem = -1; infoPtr->bRedraw = TRUE; infoPtr->bFirstPaint = TRUE; + infoPtr->bNoItemMetrics = TRUE; infoPtr->iconSpacing.cx = GetSystemMetrics(SM_CXICONSPACING); infoPtr->iconSpacing.cy = GetSystemMetrics(SM_CYICONSPACING); infoPtr->nEditLabelItem = -1; @@ -7850,11 +7852,12 @@ { TRACE("(hdc=%p)\n", hdc);
- if (infoPtr->bFirstPaint && infoPtr->nItemCount) + infoPtr->bFirstPaint = FALSE; + if (infoPtr->bNoItemMetrics && infoPtr->nItemCount) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; - infoPtr->bFirstPaint = FALSE; + infoPtr->bNoItemMetrics = FALSE; LISTVIEW_UpdateItemSize(infoPtr); if (uView == LVS_ICON || uView == LVS_SMALLICON) LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
On Thu, 13 Feb 2003 20:36:43 -0500, you wrote:
On February 12, 2003 11:49 am, Rein Klazes wrote:
This causes a rgeression in newsbin. The listview with the headers do not update during a "retrieve all headers".
Indeed. Thanks for the bug report. Please give this a shot, it should fix it.
It does indeed.
Rein.