Michael Gerz a écrit :
Martin,
your row signature patch is excellent as it reduces screen flickering
significantly (you could the flicking on Windows with qtwin).
FYI, without this patch (I have not update my cvs yet), my Qt4 port has
zero flickering :-)
I think this patch is solving here a problem which is in the Qt3
frontend. During my port, I have erased all the calls to the
"QWidget::repaint" function and I just have one "update" to the screen.
In other word, I let Qt decide when to draw.
I think the screen redraw that you see is due to an excessive call to
repaint() that are not necessary. IMHO this patch tries to reduce the
number of painting on the intermediate pixmap and this is good because,
as a side effect it reduces also the number of screen repaint.
But I am not an expert so maybe this is just because Qt4 is supposed to
be totally double-buffered.
Abdel.
However, I don't understand why we have to redraw the whole screen in
case of selections. Doesn't your nice "always draw current row" patch
capture selections?
I tried the following modification and couldn't find anything going
wrong. Could you please enlighten me?
Thanks, Michael
Index: rowpainter.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/rowpainter.C,v
retrieving revision 1.162
diff -u -r1.162 rowpainter.C
--- rowpainter.C 1 Jan 2006 23:06:23 -0000 1.162
+++ rowpainter.C 2 Jan 2006 19:47:28 -0000
@@ -826,7 +826,7 @@
for (pit_type pit = vi.p1; pit <= vi.p2; ++pit) {
Paragraph const & par = text->getPar(pit);
yy += par.ascent();
- paintPar(pi, *bv.text(), pit, 0, yy, select ||
!vi.singlepar);
+ paintPar(pi, *bv.text(), pit, 0, yy, /*select ||*/
!vi.singlepar);
yy += par.descent();
}