Which is correct? listview or treeview?
Bill Medland
medbi01_1 at accpac.com
Thu Nov 22 14:54:50 CST 2001
"Gerard Patel" <gerard.patel at nerim.net> wrote in message
news:1.5.4.32.20011122003731.41920dbc at pop.nerim.net...
> At 01:58 PM 21/11/2001 -0800, you wrote:
> >With regard to my problem that I was getting infinite redraws in my
listview
> >following Alexandre's change to server/user/message.c:
> >
> >I eventually tracked it down to the fact our code used
> >SetRedraw(FALSE)/SetRedraw(TRUE) on a list control. (So the bug can now
be
> >demonstrated easily on e.g. the MFC RowList sample with a two-line
change).
> >Now I see that in the case of LISTVIEW_SetRedraw DefWindowProc is called
and
> >then RedrawWindow.
> >In the TREEVIEW_SetRedraw case it simply sets a flag within the
treeview's
> >data.
> >
> >Which is (more) correct?
>
>
> I have seen the same problem with the plain listbox
>
> I have an app (Eudora) that is using WM_SETREDRAW on a listbox and found
> that it was not possible to reproduce the app's behaviour without doing
directly
> a RedrawWindow. Andi commented it was ugly and unefficient (IIRC) and
> Alexandre Julliard ignored the patch anyway.
>
> So I intended at some point to look at Listview and Treeview (with the
nasty
> intent to prove that I am right and they are wrong of course :-))
> If you find that doing an explicit RedrawWindow is the right way (TM) I am
> all for it.
>
> OTOH, I have myself - at least ;-( - one regression pending for this
patch.
> The attached hack (on dlls/x11drv/winpos.c) fixes it, maybe with a lot of
> luck it could fix your problem too ?
>
> I'm not too hopeful as it does not seem related but you never know.
>
> Gerard
>
<snip>
Thanks Gerard.
It didn't help, I'm afraid.
So I am at a loss. I am about to submit a patch that will "make the problem
go away". I hate doing that but it is all beyond me.
If anyone wants to go further here are the details.
The problem disappears if we remove the RDW_FRAME from the RedrawWindow
call. (However there is a comment that suggests that someone added it very
deliberately).
I see in painting.c that this means we don't do an add_paint_count that we
would otherwise have done. It makes sense that this, combined with
Alexandre's change, could have an effect.
When the applications are misbehaving there is a continual stream of calls
to DispatchMessageA resulting in LISTVIEW_Paint, but without calls to
GetMessageW. I suspect that these DispatchMessages are coming from MFC42
but I can't prove that.
anyway, on to something new.
Bill
More information about the wine-devel
mailing list