You need to apply the other one first. This one doesn't work very well
as you can see !

It looks like xforms might be clearing the window to its background
color just before redraw for some reason. It would be good if we could
avoid that (I had the same problem with qt, fixed by setting
WRepaintNoErase flag).

It would also be good to see how much your xforms patches help here

regards
john

-- 
"I know I believe in nothing but it is my nothing"
        - Manic Street Preachers
Index: frontends/xforms/xscreen.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/xscreen.C,v
retrieving revision 1.6
diff -u -r1.6 xscreen.C
--- frontends/xforms/xscreen.C  9 Jul 2002 16:23:20 -0000       1.6
+++ frontends/xforms/xscreen.C  10 Jul 2002 01:41:56 -0000
@@ -191,13 +191,16 @@
 {
        lyxerr[Debug::GUI] << "expose " << w << "x" << h
                << "+" << x << "+" << y << endl;
-       XCopyArea(fl_get_display(),
-                 owner_.getPixmap(),
-                 owner_.getWin(),
-                 gc_copy,
-                 x, y, w, h,
-                 x + owner_.xpos(),
-                 y + owner_.ypos());
+ 
+       XEvent xev;
+       xev.type = Expose;
+       xev.xexpose.window = owner_.getWin();
+       xev.xexpose.x = x;
+       xev.xexpose.y = y;
+       xev.xexpose.width = w;
+       xev.xexpose.height = h;
+       xev.xexpose.count = 0;
+       XSendEvent(fl_get_display(), owner_.getWin(), False, 0, &xev);
 }
 
 
@@ -217,8 +220,8 @@
                        drawFromTo(text, bv, 0,
                                   old_first - text->first_y, 0, 0, internal);
                        XCopyArea (fl_get_display(),
-                                  owner_.getWin(),
-                                  owner_.getWin(),
+                                  owner_.getPixmap(),
+                                  owner_.getPixmap(),
                                   gc_copy,
                                   owner_.xpos(),
                                   owner_.ypos(),
@@ -227,17 +230,13 @@
                                   owner_.xpos(),
                                   owner_.ypos() + old_first - text->first_y
                                );
-                       // expose the area drawn
-                       expose(0, 0,
-                              owner_.workWidth(),
-                              old_first - text->first_y);
                } else  {
                        drawFromTo(text, bv,
                                   owner_.workHeight() + old_first - text->first_y,
                                   owner_.workHeight(), 0, 0, internal);
                        XCopyArea (fl_get_display(),
-                                  owner_.getWin(),
-                                  owner_.getWin(),
+                                  owner_.getPixmap(),
+                                  owner_.getPixmap(),
                                   gc_copy,
                                   owner_.xpos(),
                                   owner_.ypos() + text->first_y - old_first,
@@ -245,15 +244,12 @@
                                   owner_.workHeight() + old_first - text->first_y,
                                   owner_.xpos(),
                                   owner_.ypos());
-                       // expose the area drawn
-                       expose(0, owner_.workHeight() + old_first - text->first_y,
-                              owner_.workWidth(), text->first_y - old_first);
                }
        } else {
                // make a dumb new-draw
                drawFromTo(text, bv, 0, owner_.workHeight(), 0, 0, internal);
-               expose(0, 0, owner_.workWidth(), owner_.workHeight());
        }
 
+       expose(0, 0, owner_.workWidth(), owner_.workHeight());
        XSync(fl_get_display(), 0);
 }

Reply via email to