From 2c2669bfa68651af2ad81cd52cabe28e15cc782b Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sun, 10 Apr 2011 17:43:06 -0500 Subject: [PATCH] fix the handling of the drracket:show-line-numbers? preference so the line numbers change no matter who sets the preference --- collects/drracket/private/main.rkt | 10 +--------- collects/drracket/private/unit.rkt | 14 +++++++++++++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/collects/drracket/private/main.rkt b/collects/drracket/private/main.rkt index b709c8516c..7b18a41359 100644 --- a/collects/drracket/private/main.rkt +++ b/collects/drracket/private/main.rkt @@ -338,15 +338,7 @@ (λ (editor-panel) (make-check-box 'drracket:show-line-numbers? (string-constant show-line-numbers) - editor-panel - (lambda (value) - (define (drracket:frame? frame) - (and (is-a? frame top-level-window<%>) - (is-a? frame drracket:unit:frame%))) - ;; is it a hack to use `get-top-level-windows' ? - (define frames (filter drracket:frame? (get-top-level-windows))) - (when (not (null? frames)) - (send (car frames) show-line-numbers! value)))) + editor-panel) ;; come back to this one. #; diff --git a/collects/drracket/private/unit.rkt b/collects/drracket/private/unit.rkt index c8e244cb53..83154a2ac7 100644 --- a/collects/drracket/private/unit.rkt +++ b/collects/drracket/private/unit.rkt @@ -1422,7 +1422,19 @@ module browser threading seems wrong. (λ (l) (remq execute-warning-panel l))) (send execute-warning-canvas set-message #f))]))) - (define/public (show-line-numbers! show) + + ;; bind the proc to a field + ;; so it stays alive as long + ;; as the frame stays alive + (define show-line-numbers-pref-fn + (let ([fn (lambda (pref value) (show-line-numbers! value))]) + (preferences:add-callback + 'drracket:show-line-numbers? + fn + #t) + fn)) + + (define/private (show-line-numbers! show) (for ([tab tabs]) (define text (send tab get-defs)) (send text show-line-numbers! show))