Accidently send to the sender, not the mailing list, forwarding
-------- Oryginalna wiadomość --------
‎ 3 sty 2021, 16:52, Daniel Kochmański napisał(a):

If the beer is at stake, I shall take a guess!

When 1+ is used, we draw beyond the sheet region. That means, that *if*
we call change-space-requirements it will cause a call to resize-sheet,
which in turn will: a) clear the screen, b) call redisplay-frame-pane.

Since the sheet region has changed, redisplaying the frame pane will
expand it even further, so we go back to the *if* part.

Now, regarding the *if*, we have a bogus method:

(defmethod stream-read-gesture :before ((stream clim-stream-pane)
&key timeout peek-p
input-wait-test
input-wait-handler
pointer-button-press-handler)
(declare (ignore timeout peek-p input-wait-test input-wait-handler
pointer-button-press-handler))
(force-output stream)
;; make the output visible
(let ((w (bounding-rectangle-max-x (stream-output-history stream)))
(h (bounding-rectangle-max-y (stream-output-history stream))))
(unless (region-contains-region-p (sheet-region stream)
(make-rectangle* 0 0 w h))
(change-space-requirements stream)
(finish-output stream)
(redisplay-frame-pane *application-frame* stream))))

that causes bogus redisplays before each gesture read, so when we move
the pointer over the window, we enter the loop:

1. display (and expand the output history)
2. move the pointer
3. change space requirements (and resize)
4. goto 1

as a bonus point we have one more unnecessary redisplay.

The fun part is that I have changes stashed that remove this method.

All best,
Daniel

--
Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland
TurtleWare - Daniel Kochmański      | www.turtleware.eu

"Be the change that you wish to see in the world." - Mahatma Gandhi

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Sunday, 3 January 2021 16:18, Paul Werkowski <pw@snoopy.qozzy.com> wrote:

> Run the frame as is. Grab the lower corner with mouse pointer. Move it
> around.
>
> Then change either or both of the (1+  ...) forms to (1- ...) and see
> what happens.
>
>  A free virtual beer to whomever solves it.