clean up the way the state of the online expansion GUI is kept.
This fixes a bunch of little things, including switch tabs between windows with different states (closing PR 12341) and switching to a non-module language.
This commit is contained in:
parent
58fa3dd6d7
commit
1b7bda5f2a
|
@ -766,7 +766,8 @@
|
||||||
set-expand-error/status
|
set-expand-error/status
|
||||||
update-frame-expand-error
|
update-frame-expand-error
|
||||||
expand-error-next
|
expand-error-next
|
||||||
expand-error-prev)
|
expand-error-prev
|
||||||
|
hide-module-language-error-panel)
|
||||||
|
|
||||||
(define module-language-online-expand-tab-mixin
|
(define module-language-online-expand-tab-mixin
|
||||||
(mixin (drracket:unit:tab<%>) ()
|
(mixin (drracket:unit:tab<%>) ()
|
||||||
|
@ -880,34 +881,39 @@
|
||||||
[parent expand-error-multiple-child])
|
[parent expand-error-multiple-child])
|
||||||
(new close-icon%
|
(new close-icon%
|
||||||
[parent expand-error-panel]
|
[parent expand-error-panel]
|
||||||
[callback
|
[callback (λ () (send (send (get-current-tab) get-defs) hide-module-language-error-panel))])
|
||||||
(λ ()
|
|
||||||
(send expand-error-parent-panel change-children
|
|
||||||
(λ (l) (remq expand-error-panel l))))])
|
|
||||||
(send expand-error-parent-panel change-children (λ (l) (remq expand-error-panel l)))
|
(send expand-error-parent-panel change-children (λ (l) (remq expand-error-panel l)))
|
||||||
root)
|
root)
|
||||||
|
|
||||||
(define expand-error-msg #f)
|
(define expand-error-msg #f)
|
||||||
(define expand-error-srcloc-count 0)
|
(define expand-error-srcloc-count 0)
|
||||||
|
(define expand-error-hidden? #f)
|
||||||
|
|
||||||
(define/public (set-expand-error/status msg err? srcloc-count)
|
(define/public (set-expand-error/status hidden? msg err? srcloc-count)
|
||||||
(unless (and (equal? expand-error-msg msg)
|
(unless (and (equal? expand-error-hidden? hidden?)
|
||||||
|
(equal? expand-error-msg msg)
|
||||||
(equal? expand-error-srcloc-count srcloc-count))
|
(equal? expand-error-srcloc-count srcloc-count))
|
||||||
|
(set! expand-error-hidden? hidden?)
|
||||||
(set! expand-error-msg msg)
|
(set! expand-error-msg msg)
|
||||||
(set! expand-error-srcloc-count srcloc-count)
|
(set! expand-error-srcloc-count srcloc-count)
|
||||||
(when expand-error-message
|
(when expand-error-message
|
||||||
|
(send expand-error-parent-panel change-children
|
||||||
|
(λ (l) (if hidden?
|
||||||
|
(if (memq expand-error-panel l)
|
||||||
|
(remq expand-error-panel l)
|
||||||
|
l)
|
||||||
|
(if (memq expand-error-panel l)
|
||||||
|
l
|
||||||
|
(append l (list expand-error-panel))))))
|
||||||
|
(send expand-error-message set-msg expand-error-msg err?)
|
||||||
(cond
|
(cond
|
||||||
[err?
|
[err?
|
||||||
(send expand-error-message set-msg expand-error-msg err?)
|
|
||||||
(send expand-error-parent-panel change-children
|
|
||||||
(λ (l) (append (remq expand-error-panel l) (list expand-error-panel))))
|
|
||||||
(send expand-error-button-parent-panel active-child
|
(send expand-error-button-parent-panel active-child
|
||||||
(cond
|
(cond
|
||||||
[(= srcloc-count 0) expand-error-zero-child]
|
[(= srcloc-count 0) expand-error-zero-child]
|
||||||
[(= srcloc-count 1) expand-error-single-child]
|
[(= srcloc-count 1) expand-error-single-child]
|
||||||
[else expand-error-multiple-child]))]
|
[else expand-error-multiple-child]))]
|
||||||
[else
|
[else
|
||||||
(send expand-error-message set-msg expand-error-msg err?)
|
|
||||||
(send expand-error-button-parent-panel active-child expand-error-zero-child)]))))
|
(send expand-error-button-parent-panel active-child expand-error-zero-child)]))))
|
||||||
|
|
||||||
(define/augment (on-tab-change from-tab to-tab)
|
(define/augment (on-tab-change from-tab to-tab)
|
||||||
|
@ -976,14 +982,17 @@
|
||||||
(send small-control-font get-size-in-pixels)))
|
(send small-control-font get-size-in-pixels)))
|
||||||
|
|
||||||
(define running-canvas
|
(define running-canvas
|
||||||
|
(let ([tlw this])
|
||||||
(new (class canvas%
|
(new (class canvas%
|
||||||
(inherit get-dc popup-menu refresh get-client-size)
|
(inherit get-dc popup-menu refresh get-client-size)
|
||||||
(define/override (on-paint)
|
(define/override (on-paint)
|
||||||
(let ([dc (get-dc)])
|
(let ([dc (get-dc)])
|
||||||
(define colors-to-draw
|
(define colors-to-draw
|
||||||
(if (preferences:get 'drracket:online-compilation-default-off)
|
(cond
|
||||||
colors
|
[(not (in-module-language tlw)) #f]
|
||||||
(list "red")))
|
[(preferences:get 'drracket:online-compilation-default-off)
|
||||||
|
colors]
|
||||||
|
[else (list "red")]))
|
||||||
(when colors-to-draw
|
(when colors-to-draw
|
||||||
(send dc set-smoothing 'aligned)
|
(send dc set-smoothing 'aligned)
|
||||||
(send dc set-pen "black" 1 'transparent)
|
(send dc set-pen "black" 1 'transparent)
|
||||||
|
@ -1015,6 +1024,7 @@
|
||||||
(preferences:add-callback 'drracket:online-compilation-default-off cb-proc #t)
|
(preferences:add-callback 'drracket:online-compilation-default-off cb-proc #t)
|
||||||
(define/override (on-event evt)
|
(define/override (on-event evt)
|
||||||
(cond
|
(cond
|
||||||
|
[(not (in-module-language tlw)) (void)]
|
||||||
[(send evt button-down?)
|
[(send evt button-down?)
|
||||||
(define menu (new popup-menu%))
|
(define menu (new popup-menu%))
|
||||||
(define on? (preferences:get 'drracket:online-compilation-default-off))
|
(define on? (preferences:get 'drracket:online-compilation-default-off))
|
||||||
|
@ -1043,7 +1053,7 @@
|
||||||
(send dc set-font parens-mismatch-font)
|
(send dc set-font parens-mismatch-font)
|
||||||
(define-values (w h d a) (send dc get-text-extent parens-mismatch-str))
|
(define-values (w h d a) (send dc get-text-extent parens-mismatch-str))
|
||||||
(min-width (ceiling (inexact->exact (max w ball-size))))
|
(min-width (ceiling (inexact->exact (max w ball-size))))
|
||||||
(min-height (ceiling (inexact->exact (max h ball-size))))))))))
|
(min-height (ceiling (inexact->exact (max h ball-size)))))))))))
|
||||||
|
|
||||||
(define error-message%
|
(define error-message%
|
||||||
(class canvas%
|
(class canvas%
|
||||||
|
@ -1196,20 +1206,22 @@
|
||||||
;; thus, they are where we check the preference
|
;; thus, they are where we check the preference
|
||||||
;; before doing anything
|
;; before doing anything
|
||||||
|
|
||||||
|
|
||||||
(define/private (buffer-modified)
|
(define/private (buffer-modified)
|
||||||
(when (and (preferences:get 'drracket:online-compilation-default-off)
|
(when (and (preferences:get 'drracket:online-compilation-default-off)
|
||||||
(> (processor-count) 1))
|
(> (processor-count) 1))
|
||||||
(clear-old-error)
|
(clear-old-error)
|
||||||
(reset-frame-expand-error #t)
|
(reset-frame-expand-error #t)
|
||||||
(let ([tlw (get-top-level-window)])
|
(let ([tlw (get-top-level-window)])
|
||||||
(when (in-module-language tlw)
|
(cond
|
||||||
|
[(in-module-language tlw)
|
||||||
(send (get-tab) show-bkg-running 'nothing #f)
|
(send (get-tab) show-bkg-running 'nothing #f)
|
||||||
(stop-place-running)
|
(stop-place-running)
|
||||||
(set! compilation-out-of-date? #t)
|
(set! compilation-out-of-date? #t)
|
||||||
(when (eq? (send tlw get-current-tab) (get-tab))
|
(when (eq? (send tlw get-current-tab) (get-tab))
|
||||||
(send tmr stop)
|
(send tmr stop)
|
||||||
(send tmr start 250 #t))))))
|
(send tmr start 250 #t))]
|
||||||
|
[else
|
||||||
|
(hide-module-language-error-panel)]))))
|
||||||
|
|
||||||
(define/public (restart-place)
|
(define/public (restart-place)
|
||||||
(when (and (preferences:get 'drracket:online-compilation-default-off)
|
(when (and (preferences:get 'drracket:online-compilation-default-off)
|
||||||
|
@ -1258,6 +1270,7 @@
|
||||||
|
|
||||||
(define status-line-open? #f)
|
(define status-line-open? #f)
|
||||||
|
|
||||||
|
(define error/status-message-hidden? #f)
|
||||||
(define error/status-message-str "")
|
(define error/status-message-str "")
|
||||||
(define error/status-message-err? #f)
|
(define error/status-message-err? #f)
|
||||||
(define error-message-srclocs '())
|
(define error-message-srclocs '())
|
||||||
|
@ -1275,9 +1288,13 @@
|
||||||
(update-frame-expand-error)))
|
(update-frame-expand-error)))
|
||||||
(define/public (update-frame-expand-error)
|
(define/public (update-frame-expand-error)
|
||||||
(send (send (get-tab) get-frame) set-expand-error/status
|
(send (send (get-tab) get-frame) set-expand-error/status
|
||||||
|
error/status-message-hidden?
|
||||||
error/status-message-str
|
error/status-message-str
|
||||||
error/status-message-err?
|
error/status-message-err?
|
||||||
(length error-message-srclocs)))
|
(length error-message-srclocs)))
|
||||||
|
(define/public (hide-module-language-error-panel)
|
||||||
|
(set! error/status-message-hidden? #t)
|
||||||
|
(update-frame-expand-error))
|
||||||
|
|
||||||
(define/public (expand-error-next)
|
(define/public (expand-error-next)
|
||||||
(define candidates (filter (λ (error-message-srcloc)
|
(define candidates (filter (λ (error-message-srcloc)
|
||||||
|
@ -1374,6 +1391,7 @@
|
||||||
(error-range (- pos 1) (+ pos span -1) #f)))
|
(error-range (- pos 1) (+ pos span -1) #f)))
|
||||||
(set-error-ranges-from-online-error-ranges (vector-ref res 2))
|
(set-error-ranges-from-online-error-ranges (vector-ref res 2))
|
||||||
(invalidate-online-error-ranges)
|
(invalidate-online-error-ranges)
|
||||||
|
(set! error/status-message-hidden? #f)
|
||||||
(update-frame-expand-error))
|
(update-frame-expand-error))
|
||||||
|
|
||||||
(define/private (show-error-as-highlighted-regions res)
|
(define/private (show-error-as-highlighted-regions res)
|
||||||
|
@ -1389,6 +1407,7 @@
|
||||||
(define span (vector-ref range 1))
|
(define span (vector-ref range 1))
|
||||||
(highlight-range (- pos 1) (+ pos span -1) "gold")))
|
(highlight-range (- pos 1) (+ pos span -1) "gold")))
|
||||||
(set-error-ranges-from-online-error-ranges (vector-ref res 2))
|
(set-error-ranges-from-online-error-ranges (vector-ref res 2))
|
||||||
|
(set! error/status-message-hidden? #f)
|
||||||
(update-frame-expand-error))
|
(update-frame-expand-error))
|
||||||
|
|
||||||
(define online-error-ranges '())
|
(define online-error-ranges '())
|
||||||
|
@ -1545,6 +1564,10 @@
|
||||||
(when success? (buffer-modified))
|
(when success? (buffer-modified))
|
||||||
(inner (void) after-load-file success?))
|
(inner (void) after-load-file success?))
|
||||||
|
|
||||||
|
(define/augment (after-set-next-settings new-settings)
|
||||||
|
(buffer-modified)
|
||||||
|
(inner (void) after-set-next-settings new-settings))
|
||||||
|
|
||||||
(super-new)))
|
(super-new)))
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user