From afd3cd372943346fc9e7e0e983ded33c6dd0c9ae Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 14 Sep 2008 14:48:08 +0000 Subject: [PATCH] release mred internal lock during canvas set-editor super call svn: r11748 --- collects/mred/private/mrcanvas.ss | 1 - collects/mred/private/wxcanvas.ss | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/collects/mred/private/mrcanvas.ss b/collects/mred/private/mrcanvas.ss index 0d339c66f2..e8e82e196e 100644 --- a/collects/mred/private/mrcanvas.ss +++ b/collects/mred/private/mrcanvas.ss @@ -350,4 +350,3 @@ (vi vertical-inset)) (unless (or (eq? horizontal-inset 5)) (hi horizontal-inset)))))) - diff --git a/collects/mred/private/wxcanvas.ss b/collects/mred/private/wxcanvas.ss index 67889f1357..2f1831ee1d 100644 --- a/collects/mred/private/wxcanvas.ss +++ b/collects/mred/private/wxcanvas.ss @@ -117,7 +117,10 @@ [(edit) (l edit #t)] [(edit redraw?) (let ([old-edit (get-editor)]) - (super set-editor edit redraw?) + ;; An exception here means we end up in a bad state: + (as-exit (lambda () + ;; set-editor can invoke callbacks: + (super set-editor edit redraw?))) (let ([mred (wx->mred this)]) (when mred