don't invalidate the error ranges for online check syntax when there is no admin
I believe that this can go wrong in the case that you edit a buffer and switch tabs before drracket fully finishes responding to the edited buffer (due to a queue-callback that postpones some of the response to editing the buffer) for online expansion. At least, this is how I guess that the error below happened: send: target is not an object: #f for method: get-view === context === /Users/robby/git/exp/plt/collects/racket/private/class-internal.rkt:4602:0: obj-error /Users/robby/git/exp/plt/collects/drracket/private/module-language.rkt:1485:6: get-box method in .../module-language.rkt:1151:4 /Users/robby/git/exp/plt/collects/drracket/private/module-language.rkt:1397:6: invalidate-online-error-ranges method in .../module-language.rkt:1151:4 /Users/robby/git/exp/plt/collects/drracket/private/module-language.rkt:1387:6: clear-old-error method in .../module-language.rkt:1151:4 /Users/robby/git/exp/plt/collects/drracket/private/module-language.rkt:1177:6: buffer-modified method in .../module-language.rkt:1151:4 /Users/robby/git/exp/plt/collects/mred/private/wx/common/timer.rkt:34:38 /Users/robby/git/exp/plt/collects/mred/private/wx/common/queue.rkt:432:6 /Users/robby/git/exp/plt/collects/mred/private/wx/common/queue.rkt:472:32 /Users/robby/git/exp/plt/collects/mred/private/wx/common/queue.rkt:618:3
This commit is contained in:
parent
b6a9330bf1
commit
57deb86f7b
|
@ -1395,9 +1395,14 @@
|
|||
(set-online-error-ranges '()))
|
||||
|
||||
(define/private (invalidate-online-error-ranges)
|
||||
(for ([an-error-range (in-list online-error-ranges)])
|
||||
(define-values (x y w h) (get-box an-error-range))
|
||||
(invalidate-bitmap-cache x y 'display-end h)))
|
||||
(when (get-admin)
|
||||
;; invalidate-online-error-ranges can be called at strange times
|
||||
;; because it is invoked via a queue-callback thunk; specifically
|
||||
;; the tab may have changed in drracket, which means that there is
|
||||
;; no admin and thus there is no reason to invalidate any drawing
|
||||
(for ([an-error-range (in-list online-error-ranges)])
|
||||
(define-values (x y w h) (get-box an-error-range))
|
||||
(invalidate-bitmap-cache x y 'display-end h))))
|
||||
|
||||
(define byt (box 0.0))
|
||||
(define byb (box 0.0))
|
||||
|
@ -1482,6 +1487,7 @@
|
|||
[else
|
||||
(super on-event evt)]))
|
||||
|
||||
;; pre: get-admin does not return #f
|
||||
(define/private (get-box an-error-range)
|
||||
(define start-pos (error-range-start an-error-range))
|
||||
(define end-pos (error-range-end an-error-range))
|
||||
|
|
Loading…
Reference in New Issue
Block a user