Martin Vermeer a écrit :
On Sun, Jan 08, 2006 at 04:38:21PM +0100, Michael Gerz wrote:
Abdel wrote:
About the flickering, I don't know. You could verify with my earlier
published PAINTING debug patch, precisely which rows are getting
updated by the LyX painter.
AFAIK, this flickering is not due to lyx internal repainting (i.e to
the pixmap) but to the screen update. What Michael sees is a
background repaint immediately followed by the pixmap repaint on
screen. And this is what my simple patch is fixing (as advised by
Jean-Marc) by eliminating the superfluous background repainting.
Hum, actually I think there might be another reason. Michael, could
you please try this patch:
Index: qscreen.C
===================================================================
- owner_.getContent()->repaint(
+ owner_.getContent()->update(
Abdel, Martin,
I must confess that I am a bit puzzled. If I understand correctly, it
doesn't matter how clever we are as long as the background is repainted
every time.
Maybe these results will help you to sort out things:
1. With a fresh lyx-devel snapshot (retrieved from CVS yesterday), the
flickering occurs with every character insertion/deletion and text
selection but not when moving the cursor.
2. With the additional simple QWorkarea.C patch proposed by J-M, I see
no flickering at all (even without Martin's recent patch proposals)
3. With the above qscreen.C patch (as an alternative to 2.), the
flickering is still there. (It also doesn't help to also replace
"repaint" by "update" in method removeCursor)
AFAICS, Martin's work is orthogonal to Abdel's. I leave it to you to
draw the final conclusion. Do we loose anything if we change QWorkarea.C?
Thank you very much for all the efforts in advance! You make people
really happy!
Michael
Yes, I agree... I think "flicker" and "speed" are orthogonal problems.
The fact that cursor movement doesn't produce flicker is because then
there literally is no screen update.
- Martin
Yep and IMHO the no-background change is a must for windows. If it
doesn't change anything under linux and Mac (it shouldn't) let it be in.
If you think it's a risk, put an #ifdef QT_WIN and #endif around it.
Abdel.