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:
- display (and expand the output history)
- move the pointer
- change space requirements (and resize)
- 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.
Well, that could explain all the wierd stuff I've been seeing leading me to come up with that very simple example. FWIW, lispworks clim2 works fine.
Thanks,
On 1/3/2021 11:01 AM, Daniel Kochmański wrote:
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 <http://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.