don't try to re-use the active frame when it isn't shown

This is a bit suspicious, since it isn't clear why a frame
whose show method has been called with #f should be considered
an active frame. Since changing that is a much more dangerous
change then, for now: closes PR 13564
This commit is contained in:
Robby Findler 2013-02-27 22:33:07 -06:00
parent 0d3fc7db93
commit 27d79aac18

View File

@ -5220,19 +5220,24 @@ module browser threading seems wrong.
(set! newest-frame #f))] (set! newest-frame #f))]
[(and name ;; only open a tab if we have a filename [(and name ;; only open a tab if we have a filename
(preferences:get 'drracket:open-in-tabs)) (preferences:get 'drracket:open-in-tabs))
(let ([fr (let loop ([frs (cons (send (group:get-the-frame-group) get-active-frame) (define frs (send (group:get-the-frame-group) get-frames))
(send (group:get-the-frame-group) get-frames))]) (let ([ac (send (group:get-the-frame-group) get-active-frame)])
(cond (when (and ac (send ac is-shown?))
[(null? frs) #f] (set! frs (cons ac (remove ac frs)))))
[else (let ([fr (car frs)]) (define fr (let loop ([frs frs])
(or (and (is-a? fr drracket:unit:frame<%>) (cond
fr) [(null? frs) #f]
(loop (cdr frs))))]))]) [else (let ([fr (car frs)])
(if fr (or (and (is-a? fr drracket:unit:frame<%>)
(begin (send fr open-in-new-tab name) fr)
(send fr show #t) (loop (cdr frs))))])))
fr) (cond
(create-new-drscheme-frame name)))] [fr
(send fr open-in-new-tab name)
(send fr show #t)
fr]
[else
(create-new-drscheme-frame name)])]
[else [else
(create-new-drscheme-frame name)])])) (create-new-drscheme-frame name)])]))