Once again, I'm sending email out to everyone who has contacted me
regarding the resize/redraw bug in Xpdf 3.01.
Thanks to Michael Rogers, I have a potential fix -- see the attached
patch file. I would appreciate it if you would all try this out, and
let me know if it fixes the problem for you.
- Derek
Index: XPDFCore.cc
===================================================================
RCS file: /home/derekn/src/cvs/xpdf/XPDFCore.cc,v
retrieving revision 1.68
diff -c -r1.68 XPDFCore.cc
*** XPDFCore.cc 19 Mar 2005 00:15:08 -0000 1.68
--- XPDFCore.cc 6 Oct 2005 21:22:11 -0000
***************
*** 981,986 ****
--- 981,989 ----
XPDFCore *core = (XPDFCore *)ptr;
XEvent event;
Widget top;
+ Window rootWin;
+ int x1, y1;
+ Guint w1, h1, bw1, depth1;
Arg args[2];
int n;
Dimension w, h;
***************
*** 988,1002 ****
// find the top-most widget which has an associated window, and look
// for a pending ConfigureNotify in the event queue -- if there is
! // one, that means we're still resizing, and we want to skip the
! // current event
for (top = core->parentWidget;
XtParent(top) && XtWindow(XtParent(top));
top = XtParent(top)) ;
if (XCheckTypedWindowEvent(core->display, XtWindow(top),
ConfigureNotify, &event)) {
XPutBackEvent(core->display, &event);
! return;
}
n = 0;
--- 991,1010 ----
// find the top-most widget which has an associated window, and look
// for a pending ConfigureNotify in the event queue -- if there is
! // one, and it specifies a different width or height, that means
! // we're still resizing, and we want to skip the current event
for (top = core->parentWidget;
XtParent(top) && XtWindow(XtParent(top));
top = XtParent(top)) ;
if (XCheckTypedWindowEvent(core->display, XtWindow(top),
ConfigureNotify, &event)) {
XPutBackEvent(core->display, &event);
! XGetGeometry(core->display, event.xconfigure.window,
! &rootWin, &x1, &y1, &w1, &h1, &bw1, &depth1);
! if ((Guint)event.xconfigure.width != w1 ||
! (Guint)event.xconfigure.height != h1) {
! return;
! }
}
n = 0;