From dba3c14746b5c97d4a04e85e352b4161408e6655 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 28 Aug 2012 17:21:45 -0600 Subject: [PATCH] fix `editor-canvas%' internal `on-size' handling The `on-size' method is called in atomic mode, and we can't call into the editor's sizing functions in atomic mode. Watch out for refresh and/or window-sizing problems. --- collects/mred/private/wxme/editor-canvas.rkt | 23 +++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/collects/mred/private/wxme/editor-canvas.rkt b/collects/mred/private/wxme/editor-canvas.rkt index bad0f0d233..08486d0b94 100644 --- a/collects/mred/private/wxme/editor-canvas.rkt +++ b/collects/mred/private/wxme/editor-canvas.rkt @@ -292,16 +292,19 @@ (define/override (on-size) (unless noloop? - (unless (and media - (send media get-printing)) - (begin-refresh-sequence) - (let-boxes ([w 0] - [h 0]) - (get-size w h) - (unless (and (= w lastwidth) - (= h lastheight)) - (reset-size))) - (end-refresh-sequence)))) + (queue-window-callback + this + (lambda () + (unless (and media + (send media get-printing)) + (begin-refresh-sequence) + (let-boxes ([w 0] + [h 0]) + (get-size w h) + (unless (and (= w lastwidth) + (= h lastheight)) + (reset-size))) + (end-refresh-sequence)))))) (define/private (reset-size) (reset-visual #f)