diff --git a/collects/framework/private/text.ss b/collects/framework/private/text.ss index e383a3b0..5f615a0c 100644 --- a/collects/framework/private/text.ss +++ b/collects/framework/private/text.ss @@ -367,17 +367,28 @@ (define/override (on-insert start len) (begin-edit-sequence) (super-on-insert start len)) + (inherit find-string) (define/override (after-insert start len) (unless rewriting (set! rewriting #t) - (let loop ([pos start]) + (let ([str (string (integer->char 160))] + [last-pos (+ start len)]) + (let loop ([pos start]) + (when (<= pos (+ start len)) + (let ([next-pos (find-string str 'forward pos last-pos)]) + (when next-pos + (delete next-pos (+ next-pos 1) #f) + (insert " " next-pos next-pos #f) + (loop (+ next-pos 1))))))) + #; + (let loop ([pos start]) (when (<= pos (+ start len)) (let ([char (get-character pos)]) (when (char=? char (integer->char 160)) (delete pos (+ pos 1) #f) (insert " " pos pos #f)) - (loop (+ pos 1)))) - (set! rewriting #f))) + (loop (+ pos 1))))) + (set! rewriting #f)) (super-after-insert start len) (end-edit-sequence)) (super-instantiate ())))