From cfa3d1b7338f2383e9a9a1fbfb62d05ea241f719 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 22 Apr 2014 13:13:51 -0500 Subject: [PATCH] when selecting the teaching languages radio box, always pick a teaching language If one hasn't been chosen before, choose the first one (if one had been chosen before, the code would already select that one, and we keep that behavior) closes PR 14452 --- .../private/language-configuration.rkt | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/pkgs/drracket-pkgs/drracket/drracket/private/language-configuration.rkt b/pkgs/drracket-pkgs/drracket/drracket/private/language-configuration.rkt index de72e0e16d..fcaf9d4508 100644 --- a/pkgs/drracket-pkgs/drracket/drracket/private/language-configuration.rkt +++ b/pkgs/drracket-pkgs/drracket/drracket/private/language-configuration.rkt @@ -256,7 +256,8 @@ (define (enter-callback) (cond [(get-selected-language) (set! cancelled? #f) - (send dialog show #f)] + (send dialog show #f) + #t] [else #f])) ;; ok-callback : -> void @@ -608,9 +609,12 @@ (λ (rb evt) (use-teaching-language-rb-callback))])) (define (use-teaching-language-rb-callback) - (when most-recent-teaching-languages-hier-list-selection - (select-a-language-in-hierlist teaching-languages-hier-list - (cdr most-recent-teaching-languages-hier-list-selection))) + (cond + [most-recent-teaching-languages-hier-list-selection + (select-a-language-in-hierlist teaching-languages-hier-list + (cdr most-recent-teaching-languages-hier-list-selection))] + [else + (select-first-language-in-hierlist teaching-languages-hier-list)]) (send use-chosen-language-rb set-selection #f) (send use-language-in-source-rb set-selection #f) (send use-teaching-language-rb set-selection 0) @@ -1131,6 +1135,19 @@ (send child open) (loop child (car position) (cdr position)))]))])))])) + (define (select-first-language-in-hierlist hier-list) + (let loop ([hi hier-list]) + (for/or ([child (in-list (send hi get-items))]) + (cond + [(is-a? child hierarchical-list-compound-item<%>) + (send child open) + (loop child)] + [(is-a? child hieritem-language<%>) + (send child select #t) + #t] + [else + #f])))) + ;; docs-callback : -> void (define (docs-callback) (void))