From f91ec3df28dc9d9c0cb4f20eaa41b4ec7b9fa38f Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sat, 25 Jul 2015 16:44:22 -0500 Subject: [PATCH] fix all-string-snips? predicate --- gui-lib/framework/private/text.rkt | 15 +++++++++------ gui-test/framework/tests/text.rkt | 11 +++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gui-lib/framework/private/text.rkt b/gui-lib/framework/private/text.rkt index 67d3c0db..d3c8c71a 100644 --- a/gui-lib/framework/private/text.rkt +++ b/gui-lib/framework/private/text.rkt @@ -4509,19 +4509,22 @@ designates the character that triggers autocompletion [(is-a? s string-snip%) (loop (send s next))] [else #f]))) - (define/augment (after-insert start end) - (inner (void) after-insert start end) - + (define/augment (after-insert start len) + (inner (void) after-insert start len) + (define end (+ start len)) (when (equal? all-string-snips-state #t) - (let loop ([s (find-snip start 'after-or-none)] - [i start]) + (define init-i (box 0)) + (define init-s (find-snip start 'after-or-none init-i)) + (let loop ([s init-s] + [i (unbox init-i)]) (cond [(not s) (void)] [(not (< i end)) (void)] [(is-a? s string-snip%) (define size (send s get-count)) (loop (send s next) (+ i size))] - [else (set! all-string-snips-state #f)])))) + [else + (set! all-string-snips-state #f)])))) (define/augment (on-delete start end) (inner (void) on-delete start end) diff --git a/gui-test/framework/tests/text.rkt b/gui-test/framework/tests/text.rkt index aee64497..51c4f451 100644 --- a/gui-test/framework/tests/text.rkt +++ b/gui-test/framework/tests/text.rkt @@ -344,6 +344,17 @@ (send t delete 2 4) (send t all-string-snips?))))) +(test + 'all-string-snips<%>.9 + (λ (x) (equal? x #f)) + (λ () + (queue-sexp-to-mred + '(let () + (define t (new (text:all-string-snips-mixin text%))) + (send t insert "abcdef\n") + (send t insert (new snip%) (send t last-position)) + (send t all-string-snips?))))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; print-to-dc