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); }