fixed some bugs in the yellow highlighting

svn: r11750
This commit is contained in:
Robby Findler 2008-09-14 23:19:42 +00:00
parent c870eadf03
commit bd954710f6

View File

@ -986,7 +986,6 @@ WARNING: printf is rebound in the body of the unit to always
(define/augment (on-insert start len)
(begin-edit-sequence)
(clear-all-regions)
(update-yellow)
(inner (void) on-insert start len))
(define/augment (after-insert start len)
(unless updating-search?
@ -1001,7 +1000,6 @@ WARNING: printf is rebound in the body of the unit to always
(define/augment (after-delete start len)
(unless updating-search?
(content-changed))
(update-yellow)
(inner (void) after-delete start len)
(end-edit-sequence))
@ -1033,17 +1031,16 @@ WARNING: printf is rebound in the body of the unit to always
(define/override (on-focus on?)
(let ([f (get-top-level-window)])
(when (is-a? f frame:searchable<%>)
(when on?
(send f set-text-to-search this)
(clear-yellow)
(set! clear-yellow void))
(set! do-yellow?
(and (not on?)
(eq? (send f get-text-to-search) this)))
(update-yellow)))
(set! has-focus? on?)
(cond
[on?
;; this triggers a call to update-yellow
(send f set-text-to-search this)]
[else
(update-yellow)])))
(super on-focus on?))
(define do-yellow? #f)
(define has-focus? #f)
(define clear-yellow void)
(define/augment (after-set-position)
(update-yellow)
@ -1077,17 +1074,29 @@ WARNING: printf is rebound in the body of the unit to always
(send tlw search-hits-changed)))))
(define/private (update-yellow)
(when do-yellow?
(cond
[has-focus?
(unless (eq? clear-yellow void)
(clear-yellow)
(set! clear-yellow void))]
[searching-str
(let ([start (get-start-position)]
[end (get-end-position)])
(unless (= start end)
(cond
[(= start end)
(clear-yellow)
(set! clear-yellow void)]
[else
(begin-edit-sequence)
(clear-yellow)
(set! clear-yellow void)
(when searching-str
(when (and searching-str (= (string-length searching-str) (- end start)))
(when (do-search searching-str start end)
(set! clear-yellow (highlight-range start end "khaki" #f 'low 'ellipse))))
(end-edit-sequence)))))
(end-edit-sequence)]))]
[else
(clear-yellow)
(set! clear-yellow void)]))
(define/public (get-search-bubbles)
(sort (hash-map search-bubble-table
@ -1161,6 +1170,8 @@ WARNING: printf is rebound in the body of the unit to always
'hollow-ellipse)))))]
[else
(invalidate-bitmap-cache)])
(update-yellow)
(end-edit-sequence)
;; stopping the timer ensures that when there is both an edit to the buffer *and*