From afb87b48bd86b032b43ef232698fb8c47876d824 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Thu, 25 Jun 2009 14:43:24 +0000 Subject: [PATCH] fixed the extrememly-slow-pasting bug (that is only visible on slow machines, apparently) svn: r15265 original commit: ee8cf97c6688ce6d156211a168f3936918b0d386 --- collects/framework/private/text.ss | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/collects/framework/private/text.ss b/collects/framework/private/text.ss index f2e48fd1..b626e2d0 100644 --- a/collects/framework/private/text.ss +++ b/collects/framework/private/text.ss @@ -877,18 +877,19 @@ WARNING: printf is rebound in the body of the unit to always (split-snip (+ start len)) (let loop ([snip (find-snip start 'after-or-none)]) (when snip - (let ([next (send snip next)]) - (when (is-a? snip string-snip%) - (let* ([old (send snip get-text 0 (send snip get-count))] - [new (string-normalize old)]) - (unless (equal? new old) - (when ask? - (set! ask? #f) - (unless (ask-normalize?) (abort))) - (let ([snip-pos (get-snip-position snip)]) - (delete snip-pos (+ snip-pos (string-length old))) - (insert new snip-pos snip-pos #f))))) - (loop next))))) + (let ([pos (get-snip-position snip)]) + (when (< pos (+ start len)) + (when (is-a? snip string-snip%) + (let* ([old (send snip get-text 0 (send snip get-count))] + [new (string-normalize old)]) + (unless (equal? new old) + (when ask? + (set! ask? #f) + (unless (ask-normalize?) (abort))) + (let ([snip-pos (get-snip-position snip)]) + (delete snip-pos (+ snip-pos (string-length old))) + (insert new snip-pos snip-pos #f))))) + (loop (send snip next))))))) (set! rewriting? #f))) (end-edit-sequence) (inner (void) after-insert start len))