DO NOT REPLY TO THIS MESSAGE. INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.
[STR New] Link: http://www.fltk.org/str.php?L2039 Version: 1.3-current Here comes a patch to make FLTK windows aware of the correct resize, especially a resize where no new area is covered. Problem: FLTK relies on a Expose event (12) from Xlib to redraw window content. The Expose event is used to damage the to be redrawn area. In the context of a resize with no new area covered, Xlib does not need to send the expose event as no new area is to be redrawn. In case of FLTK widgets this is a wrong assumption. Solution (Xlib): The Fl_Window::resize() funktion obtains one more exception in that a check for is_a_enlarge is introduced and only for this case the wait_for_expose variable is set to 1. So while passing the Fl::flush() function the i->wait_for_expose exception does no longer prevent a draw() in the according Fl_Window. After applying the patch all windows behave under FVWM like expected. Under KDE the windows work as usual. I tested with Xorg-7.2/FVWM2/KDE3/twm. Can you please test, that the patch has no side effects for win32 and osX? Patch: --- Fl_x.cxx_orig 2007-06-18 15:08:57.000000000 +0200 +++ Fl_x.cxx 2008-09-11 16:58:15.000000000 +0200 @@ -1024,13 +1024,14 @@ void Fl_Window::resize(int X,int Y,int W,int H) { int is_a_move = (X != x() || Y != y()); int is_a_resize = (W != w() || H != h()); + int is_a_enlarge = (W > w() || H > h()); int resize_from_program = (this != resize_bug_fix); if (!resize_from_program) resize_bug_fix = 0; if (is_a_move && resize_from_program) set_flag(FL_FORCE_POSITION); else if (!is_a_resize && !is_a_move) return; if (is_a_resize) { Fl_Group::resize(X,Y,W,H); - if (shown()) {redraw(); i->wait_for_expose = 1;} + if (shown()) {redraw(); if(is_a_enlarge) i->wait_for_expose = 1;} } else { x(X); y(Y); } Link: http://www.fltk.org/str.php?L2039 Version: 1.3-current _______________________________________________ fltk-bugs mailing list [email protected] http://lists.easysw.com/mailman/listinfo/fltk-bugs
