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

Alexandre Julliard julliard at winehq.org
Wed Aug 12 06:26:30 CDT 2009


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.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list