diff --git a/collects/drscheme/private/main.ss b/collects/drscheme/private/main.ss index 40e6d5eb1c..050142673e 100644 --- a/collects/drscheme/private/main.ss +++ b/collects/drscheme/private/main.ss @@ -57,6 +57,7 @@ (finder:default-filters))) (application:current-app-name (string-constant drscheme)) + (preferences:set-default 'drscheme:unit-window-max? #f boolean?) (preferences:set-default 'drscheme:frame:initial-position #f (λ (x) (or (not x) (and (pair? x) diff --git a/collects/drscheme/private/unit.ss b/collects/drscheme/private/unit.ss index 0444d80419..62a7c7c09d 100644 --- a/collects/drscheme/private/unit.ss +++ b/collects/drscheme/private/unit.ss @@ -1157,9 +1157,6 @@ module browser threading seems wrong. file-menu:get-revert-item file-menu:get-print-item) - (define/override (on-move x y) - (preferences:set 'drscheme:frame:initial-position (cons x y))) - ;; logging : (union #f string[directory-name]) (field [logging #f] [definitions-log-counter 0] ;; number @@ -2043,11 +2040,15 @@ module browser threading seems wrong. (inherit get-menu-bar get-focus-object get-edit-target-object) - (define/override on-size - (lambda (w h) - (preferences:set 'drscheme:unit-window-width w) - (preferences:set 'drscheme:unit-window-height h) - (super on-size w h))) + (inherit is-maximized?) + (define/override (on-size w h) + (preferences:set 'drscheme:unit-window-width w) + (preferences:set 'drscheme:unit-window-height h) + (preferences:set 'drscheme:unit-window-max? (is-maximized?)) + (super on-size w h)) + + (define/override (on-move x y) + (preferences:set 'drscheme:frame:initial-position (cons x y))) (define/override (get-editor) definitions-text) (define/override (get-canvas) @@ -3611,14 +3612,17 @@ module browser threading seems wrong. (create-new-drscheme-frame name)])])) (define first-frame? #t) - (define (create-new-drscheme-frame filename) - (let* ([drs-frame% (drscheme:get/extend:get-unit-frame)] - [frame (new drs-frame% (filename filename))]) - (send (send frame get-interactions-text) initialize-console) - (when first-frame? - (let ([pos (preferences:get 'drscheme:frame:initial-position)]) - (when pos - (send frame move (car pos) (cdr pos))))) - (set! first-frame? #f) - (send frame show #t) - frame)))) + (define (create-new-drscheme-frame filename) + (let* ([drs-frame% (drscheme:get/extend:get-unit-frame)] + [frame (new drs-frame% (filename filename))]) + (send (send frame get-interactions-text) initialize-console) + (when first-frame? + (let ([pos (preferences:get 'drscheme:frame:initial-position)]) + (when pos + (send frame move (car pos) (cdr pos)))) + (unless (eq? (system-type) 'macosx) + ;; mac os x has a bug where maximizing can make the window too big. + (send frame maximize (preferences:get 'drscheme:unit-window-max?)))) + (send frame show #t) + (set! first-frame? #f) + frame))))