From a5d55ff81741d1ad1d03149222d1179fcff59318 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 8 Jun 2015 22:36:16 -0500 Subject: [PATCH] add the close-when-hidden? argument to in-terminal --- gui-doc/mrlib/scribblings/terminal.scrbl | 8 +++++++- gui-lib/mrlib/terminal.rkt | 11 +++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gui-doc/mrlib/scribblings/terminal.scrbl b/gui-doc/mrlib/scribblings/terminal.scrbl index b05eb505..4fd10052 100644 --- a/gui-doc/mrlib/scribblings/terminal.scrbl +++ b/gui-doc/mrlib/scribblings/terminal.scrbl @@ -20,7 +20,8 @@ in command-line scripts.} [#:canvas-min-height canvas-min-height (or/c #f (integer-in 0 10000)) #f] [#:close-button? close-button? boolean? #t] [#:close-label close-label string? (string-constant close)] - [#:close-callback close-callback (-> any) void]) + [#:close-callback close-callback (-> any) void] + [#:close-when-hidden? boolean? #t]) (is-a?/c terminal<%>)]{ Creates a GUI, sets up the current error and output ports to @@ -71,6 +72,11 @@ in command-line scripts.} The @racket[close-callback] function is called after the terminal frame is closed or container is removed. + When the @racket[container] argument is not @racket[#f], then + hiding removing the window from it's frame will abort the + computation in the terminal, unless @racket[close-when-hidden?] is @racket[#f]. + + @history[#:changed "1.4" @elem{Added the @racket[#:close-callback] argument.}]} @defparam[on-terminal-run run (-> void?)]{ diff --git a/gui-lib/mrlib/terminal.rkt b/gui-lib/mrlib/terminal.rkt index 7f5e1aa9..636e28d4 100644 --- a/gui-lib/mrlib/terminal.rkt +++ b/gui-lib/mrlib/terminal.rkt @@ -18,7 +18,8 @@ #:canvas-min-height (or/c #f exact-nonnegative-integer?) #:close-button? boolean? #:close-label string? - #:close-callback (-> any)) + #:close-callback (-> any) + #:close-when-hidden? boolean?) (is-a?/c terminal<%>))]) terminal<%>) @@ -45,7 +46,8 @@ #:canvas-min-height [canvas-min-height #f] #:close-button? [close-button? #t] #:close-label [close-button-label (string-constant close)] - #:close-callback [user-close-callback void]) + #:close-callback [user-close-callback void] + #:close-when-hidden? [close-when-hidden? #t]) (define orig-eventspace (current-eventspace)) (define orig-custodian (current-custodian)) (define inst-eventspace (if container @@ -121,8 +123,9 @@ (new (class vertical-panel% (super-new) (define/override (on-superwindow-show on?) - (unless on? - (close-callback)))) + (when close-when-hidden? + (unless on? + (close-callback))))) [parent container]))) (set! text (new (text:hide-caret/selection-mixin text:standard-style-list%)))