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

Reply via email to