Fw: New Year's puzzle

Daniel Kochmański daniel at turtleware.eu
Sun Jan 3 16:01:06 UTC 2021


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 at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/mcclim-devel/attachments/20210103/56f6a08b/attachment.html>


More information about the mcclim-devel mailing list