From afc44445b9804c99dfabf2743987e38b353a94e1 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Fri, 18 Oct 2002 15:12:13 +0000 Subject: [PATCH] .. original commit: ea71ad86d9dc33cc86ef1acc000efffa4ed667e3 --- collects/framework/private/frame.ss | 7 ++++++- collects/framework/private/group.ss | 20 +++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/collects/framework/private/frame.ss b/collects/framework/private/frame.ss index f1be8681..358b8d75 100644 --- a/collects/framework/private/frame.ss +++ b/collects/framework/private/frame.ss @@ -129,6 +129,12 @@ (define basic-mixin (mixin ((class->interface frame%)) (basic<%>) + (rename [super-show show]) + (define/override (show on?) + (when on? + (send (group:get-the-frame-group) insert-frame this)) + (super-show on?)) + (define/override (can-exit?) (exit:set-exiting #t) (let ([res (exit:can-exit?)]) @@ -200,7 +206,6 @@ "do not add children directly to a frame:basic (unless using make-root-area-container); use the get-area-container method instead" )))] - (inherit show) (public get-area-container% get-menu-bar% make-root-area-container close) [define get-area-container% (lambda () vertical-panel%)] [define get-menu-bar% (lambda () menu-bar%)] diff --git a/collects/framework/private/group.ss b/collects/framework/private/group.ss index 0d8182de..a92a5227 100644 --- a/collects/framework/private/group.ss +++ b/collects/framework/private/group.ss @@ -222,15 +222,17 @@ (set! most-recent-window-box (make-weak-box active-frame))) (set! active-frame f))] [define insert-frame - (lambda (f) - (set! frame-counter (add1 frame-counter)) - (let ([new-frames (cons (make-frame f frame-counter) - frames)]) - (set! frames new-frames) - (update-close-menu-item-state) - (insert-windows-menu f) - (update-windows-menus)) - (todo-to-new-frames f))] + (lambda (new-frame) + (unless (memf (lambda (fr) (eq? (frame-frame fr) new-frame)) + frames) + (set! frame-counter (add1 frame-counter)) + (let ([new-frames (cons (make-frame new-frame frame-counter) + frames)]) + (set! frames new-frames) + (update-close-menu-item-state) + (insert-windows-menu new-frame) + (update-windows-menus)) + (todo-to-new-frames new-frame)))] [define remove-frame (lambda (f)