#BUGFIX by cg
authorClaus Gittinger <cg@exept.de>
Mon, 23 Apr 2018 16:50:46 +0200
changeset 5737 eeb4d51e4e3a
parent 5736 32183f299b87
child 5738 59d8e9757a0f
#BUGFIX by cg class: DSVColumnView changed: #redrawX:y:width:height: avoid endless recursion due to invalidate inside a redraw.
DSVColumnView.st
--- a/DSVColumnView.st	Mon Apr 23 14:56:06 2018 +0200
+++ b/DSVColumnView.st	Mon Apr 23 16:50:46 2018 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
               All Rights Reserved
@@ -2279,7 +2281,8 @@
 
     stopRedraw := false.
 
-    self class stopRedrawSignal handle:[:ex|
+    self class stopRedrawSignal handle:[:ex |
+        "/ redraw aborted due to too many changes while drawing.
         stopRedraw := true.
     ] do:[
         columnDescriptors do:[:aCol| |cw|
@@ -2291,7 +2294,7 @@
                 right := x1 min:maxX.
                 rect  := Rectangle left:left top:y width:(right - left) height:h.
 
-                self clippingBounds:nil.
+                "/ self clippingBounds:nil.
                 self clippingBounds:rect.
                 aCol redrawX:x0 y:yTop h:clHg  from:start to:stop.
             ].
@@ -2303,8 +2306,11 @@
     self clippingBounds:savClip.
 
     stopRedraw ifTrue:[
-        self invalidate.
-        self makeSelectionVisible.
+        "/ redraw aborted due to too many changes while drawing.
+        "/ try again after some grace period
+        Processor addTimedBlock:[self invalidate] after:0.1 seconds.
+        "/  self invalidate.
+        "/ self makeSelectionVisible.
         ^ self
     ].