[2/2] comctl32/listview: Block redrawing entirely after WM_SETREDRAW wParam=FALSE

Nikolay Sivov bunglehead at gmail.com
Wed Aug 12 06:32:50 CDT 2009


Alexandre Julliard wrote:
> Nikolay Sivov <bunglehead at gmail.com> writes:
>
>   
>> diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
>> index a65d832..9bca376 100644
>> --- a/dlls/comctl32/listview.c
>> +++ b/dlls/comctl32/listview.c
>> @@ -9740,6 +9740,8 @@ static LRESULT LISTVIEW_Paint(LISTVIEW_INFO *infoPtr, HDC hdc)
>>  {
>>      TRACE("(hdc=%p)\n", hdc);
>>  
>> +    if (!is_redrawing(infoPtr)) return 0;
>> +
>>      if (infoPtr->bNoItemMetrics && infoPtr->nItemCount)
>>      {
>>  	infoPtr->bNoItemMetrics = FALSE;
>> @@ -9790,7 +9792,13 @@ static LRESULT LISTVIEW_PrintClient(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD optio
>>          LISTVIEW_EraseBkgnd(infoPtr, hdc);
>>  
>>      if (options & PRF_CLIENT)
>> +    {
>> +        BOOL redraw_old = infoPtr->bRedraw;
>> +
>> +        infoPtr->bRedraw = TRUE;
>>          LISTVIEW_Paint(infoPtr, hdc);
>> +        infoPtr->bRedraw = redraw_old;
>> +    }
>>     
>
> That's not very nice. You should move the checks so that you don't have
> to change the flag to paint.
>   
Ok, will be done.




More information about the wine-devel mailing list