diff --git a/collects/framework/private/keymap.rkt b/collects/framework/private/keymap.rkt index 6556aa5f..21042cda 100644 --- a/collects/framework/private/keymap.rkt +++ b/collects/framework/private/keymap.rkt @@ -739,7 +739,7 @@ (send edit on-char event) (loop (sub1 n))))) (λ () - (send edit end-edit-sequence))))))) + (send edit end-edit-sequence))))))) #t)) (send km set-break-sequence-callback done) #t))] @@ -823,7 +823,7 @@ (λ (edit event) (when building-macro (set! current-macro (reverse building-macro)) - (set! build-protect? #f) + (set! build-protect? #f) (send build-macro-km break-sequence)) #t)] [delete-key diff --git a/collects/framework/private/racket.rkt b/collects/framework/private/racket.rkt index 92f1af66..12bc1388 100644 --- a/collects/framework/private/racket.rkt +++ b/collects/framework/private/racket.rkt @@ -538,7 +538,7 @@ #f)] [last-para (and last (position-paragraph last))]) - (letrec + (letrec ([find-offset (λ (start-pos) (define tab-char? #f) diff --git a/collects/framework/test.rkt b/collects/framework/test.rkt index 1f64b784..855cac02 100644 --- a/collects/framework/test.rkt +++ b/collects/framework/test.rkt @@ -321,7 +321,7 @@ [else (update-control ctrl) (send ctrl command event) - (void)])))))) + (void)])))))) ;; ;; BUTTON diff --git a/collects/mred/private/moredialogs.rkt b/collects/mred/private/moredialogs.rkt index bec55f36..d3bc8c06 100644 --- a/collects/mred/private/moredialogs.rkt +++ b/collects/mred/private/moredialogs.rkt @@ -329,7 +329,7 @@ (send blue get-value)))] [install-color (lambda (color) - (send red set-value (send color red)) + (send red set-value (send color red)) (send green set-value (send color green)) (send blue set-value (send color blue)) (send canvas refresh))]) diff --git a/collects/mred/private/mrcanvas.rkt b/collects/mred/private/mrcanvas.rkt index 627f831d..462e654c 100644 --- a/collects/mred/private/mrcanvas.rkt +++ b/collects/mred/private/mrcanvas.rkt @@ -19,9 +19,10 @@ (define canvas-default-size 20) ; a default size for canvases tht fits borders without losing client sizes (define canvas-scroll-size 10) -(define canvas-control-border-extra (case (system-type) - [(windows) 2] - [else 0])) +(define canvas-control-border-extra + (case (system-type) + [(windows) 2] + [else 0])) (define canvas<%> (interface (subwindow<%>) diff --git a/collects/mred/private/wx/gtk/types.rkt b/collects/mred/private/wx/gtk/types.rkt index 59aea507..15841e07 100644 --- a/collects/mred/private/wx/gtk/types.rkt +++ b/collects/mred/private/wx/gtk/types.rkt @@ -8,8 +8,8 @@ _GdkScreen _gpointer _GType - _GdkEventType - _GdkAtom + _GdkEventType + _GdkAtom _fnpointer _gboolean @@ -31,9 +31,9 @@ (struct-out GdkEventExpose) _GdkEventFocus _GdkEventFocus-pointer (struct-out GdkEventFocus) - _GdkEventSelection _GdkEventSelection-pointer + _GdkEventSelection _GdkEventSelection-pointer (struct-out GdkEventSelection) - _GdkRectangle _GdkRectangle-pointer + _GdkRectangle _GdkRectangle-pointer (struct-out GdkRectangle) _GdkColor _GdkColor-pointer (struct-out GdkColor))) @@ -135,11 +135,11 @@ (define-cstruct _GdkEventSelection ([type _GdkEventType] [window _GdkWindow] [send_event _byte] - [selection _GdkAtom] - [target _GdkAtom] - [property _GdkAtom] - [time _uint32] - [requestor _pointer])) + [selection _GdkAtom] + [target _GdkAtom] + [property _GdkAtom] + [time _uint32] + [requestor _pointer])) (define-cstruct _GdkRectangle ([x _int] [y _int] @@ -155,8 +155,8 @@ (define-cstruct _GdkEventFocus ([type _GdkEventType] [window _GdkWindow] - [send_event _byte] - [in _short])) + [send_event _byte] + [in _short])) (define-cstruct _GdkColor ([pixel _uint32] [red _uint16] diff --git a/collects/mred/private/wx/gtk/window.rkt b/collects/mred/private/wx/gtk/window.rkt index 216d5461..8ee99033 100644 --- a/collects/mred/private/wx/gtk/window.rkt +++ b/collects/mred/private/wx/gtk/window.rkt @@ -1,7 +1,7 @@ #lang racket/base (require ffi/unsafe racket/class - net/uri-codec + net/uri-codec ffi/unsafe/atomic "../../syntax.rkt" "../../lock.rkt" @@ -18,7 +18,7 @@ "const.rkt" "types.rkt" "widget.rkt" - "clipboard.rkt") + "clipboard.rkt") (provide (protect-out window% @@ -35,7 +35,7 @@ connect-focus connect-key-and-mouse - connect-enter-and-leave + connect-enter-and-leave do-button-event (struct-out GtkRequisition) _GtkRequisition-pointer @@ -54,9 +54,9 @@ request-flush-delay cancel-flush-delay - win-box-valid? - window->win-box - unrealize-win-box) + win-box-valid? + window->win-box + unrealize-win-box) gtk->wx gtk_widget_show gtk_widget_hide) @@ -92,15 +92,15 @@ (define the-accelerator-group (gtk_accel_group_new)) (define-cstruct _GtkWidgetT ([obj _GtkObject] - [private_flags _uint16] - [state _byte] - [saved_state _byte] - [name _pointer] - [style _pointer] - [req _GtkRequisition] - [alloc _GtkAllocation] - [window _GdkWindow] - [parent _GtkWidget])) + [private_flags _uint16] + [state _byte] + [saved_state _byte] + [name _pointer] + [style _pointer] + [req _GtkRequisition] + [alloc _GtkAllocation] + [window _GdkWindow] + [parent _GtkWidget])) (define (widget-window gtk) (GtkWidgetT-window (cast gtk _GtkWidget _GtkWidgetT-pointer))) @@ -123,20 +123,20 @@ (lambda (gtk context x y data info time) (let ([wx (gtk->wx gtk)]) (when wx - (let ([bstr (scheme_make_sized_byte_string - (gtk_selection_data_get_data data) - (gtk_selection_data_get_length data) - 1)]) - (cond - [(regexp-match #rx#"^file://(.*)\r\n$" bstr) - => (lambda (m) - (queue-window-event wx - (lambda () - (let ([path - (string->path - (uri-decode - (bytes->string/utf-8 (cadr m))))]) - (send wx on-drop-file path)))))])))))) + (let ([bstr (scheme_make_sized_byte_string + (gtk_selection_data_get_data data) + (gtk_selection_data_get_length data) + 1)]) + (cond + [(regexp-match #rx#"^file://(.*)\r\n$" bstr) + => (lambda (m) + (queue-window-event wx + (lambda () + (let ([path + (string->path + (uri-decode + (bytes->string/utf-8 (cadr m))))]) + (send wx on-drop-file path)))))])))))) ;; ---------------------------------------- @@ -147,7 +147,7 @@ (when wx (send wx focus-change #t) (when (send wx on-focus? #t) - (queue-window-event wx (lambda () (send wx on-set-focus))))) + (queue-window-event wx (lambda () (send wx on-set-focus))))) #f))) (define-signal-handler connect-focus-out "focus-out-event" (_fun _GtkWidget _GdkEventFocus-pointer -> _gboolean) @@ -195,72 +195,72 @@ (and wx (let ([im-str (if scroll? - 'none - ;; Result from `filter-key-event' is one of - ;; - #f => drop the event - ;; - 'none => no replacement; handle as usual - ;; - a string => use as the keycode - (send wx filter-key-event event))]) + 'none + ;; Result from `filter-key-event' is one of + ;; - #f => drop the event + ;; - 'none => no replacement; handle as usual + ;; - a string => use as the keycode + (send wx filter-key-event event))]) (when im-str - (let* ([modifiers (if scroll? - (GdkEventScroll-state event) - (GdkEventKey-state event))] - [bit? (lambda (m v) (positive? (bitwise-and m v)))] - [keyval->code (lambda (kv) - (or - (map-key-code kv) - (integer->char (gdk_keyval_to_unicode kv))))] - [key-code (if scroll? - (let ([dir (GdkEventScroll-direction event)]) + (let* ([modifiers (if scroll? + (GdkEventScroll-state event) + (GdkEventKey-state event))] + [bit? (lambda (m v) (positive? (bitwise-and m v)))] + [keyval->code (lambda (kv) + (or + (map-key-code kv) + (integer->char (gdk_keyval_to_unicode kv))))] + [key-code (if scroll? + (let ([dir (GdkEventScroll-direction event)]) (cond [(= dir GDK_SCROLL_UP) 'wheel-up] [(= dir GDK_SCROLL_DOWN) 'wheel-down] [(= dir GDK_SCROLL_LEFT) 'wheel-left] [(= dir GDK_SCROLL_RIGHT) 'wheel-right])) - (keyval->code (GdkEventKey-keyval event)))] - [k (new key-event% - [key-code (if (and (string? im-str) - (= 1 (string-length im-str))) - (string-ref im-str 0) - key-code)] - [shift-down (bit? modifiers GDK_SHIFT_MASK)] - [control-down (bit? modifiers GDK_CONTROL_MASK)] - [meta-down (bit? modifiers GDK_MOD1_MASK)] - [alt-down (bit? modifiers GDK_META_MASK)] - [x 0] - [y 0] - [time-stamp (if scroll? - (GdkEventScroll-time event) - (GdkEventKey-time event))] - [caps-down (bit? modifiers GDK_LOCK_MASK)])]) - (when (or (and (not scroll?) - (let-values ([(s ag sag cl) (get-alts event)] - [(keyval->code*) (lambda (v) - (and v - (let ([c (keyval->code v)]) - (and (not (equal? #\u0000 c)) - c))))]) - (let ([s (keyval->code* s)] - [ag (keyval->code* ag)] - [sag (keyval->code* sag)] - [cl (keyval->code* cl)]) - (when s (send k set-other-shift-key-code s)) - (when ag (send k set-other-altgr-key-code ag)) - (when sag (send k set-other-shift-altgr-key-code sag)) - (when cl (send k set-other-caps-key-code cl)) - (or s ag sag cl)))) - (not (equal? #\u0000 key-code))) - (unless (or scroll? down?) - ;; swap altenate with main - (send k set-key-release-code (send k get-key-code)) - (send k set-key-code 'release)) - (if (send wx handles-events? gtk) - (begin - (queue-window-event wx (lambda () (send wx dispatch-on-char k #f))) - #t) - (constrained-reply (send wx get-eventspace) - (lambda () (send wx dispatch-on-char k #t)) - #t))))))))) + (keyval->code (GdkEventKey-keyval event)))] + [k (new key-event% + [key-code (if (and (string? im-str) + (= 1 (string-length im-str))) + (string-ref im-str 0) + key-code)] + [shift-down (bit? modifiers GDK_SHIFT_MASK)] + [control-down (bit? modifiers GDK_CONTROL_MASK)] + [meta-down (bit? modifiers GDK_MOD1_MASK)] + [alt-down (bit? modifiers GDK_META_MASK)] + [x 0] + [y 0] + [time-stamp (if scroll? + (GdkEventScroll-time event) + (GdkEventKey-time event))] + [caps-down (bit? modifiers GDK_LOCK_MASK)])]) + (when (or (and (not scroll?) + (let-values ([(s ag sag cl) (get-alts event)] + [(keyval->code*) (lambda (v) + (and v + (let ([c (keyval->code v)]) + (and (not (equal? #\u0000 c)) + c))))]) + (let ([s (keyval->code* s)] + [ag (keyval->code* ag)] + [sag (keyval->code* sag)] + [cl (keyval->code* cl)]) + (when s (send k set-other-shift-key-code s)) + (when ag (send k set-other-altgr-key-code ag)) + (when sag (send k set-other-shift-altgr-key-code sag)) + (when cl (send k set-other-caps-key-code cl)) + (or s ag sag cl)))) + (not (equal? #\u0000 key-code))) + (unless (or scroll? down?) + ;; swap altenate with main + (send k set-key-release-code (send k get-key-code)) + (send k set-key-code 'release)) + (if (send wx handles-events? gtk) + (begin + (queue-window-event wx (lambda () (send wx dispatch-on-char k #f))) + #t) + (constrained-reply (send wx get-eventspace) + (lambda () (send wx dispatch-on-char k #t)) + #t))))))))) (define-signal-handler connect-button-press "button-press-event" (_fun _GtkWidget _GdkEventButton-pointer -> _gboolean) @@ -317,11 +317,11 @@ (and wx (if (or (= type GDK_2BUTTON_PRESS) - (= type GDK_3BUTTON_PRESS) - (and (or (= type GDK_ENTER_NOTIFY) - (= type GDK_LEAVE_NOTIFY)) - (send wx skip-enter-leave-events))) - #t + (= type GDK_3BUTTON_PRESS) + (and (or (= type GDK_ENTER_NOTIFY) + (= type GDK_LEAVE_NOTIFY)) + (send wx skip-enter-leave-events))) + #t (let* ([modifiers (if motion? (GdkEventMotion-state event) (if crossing? @@ -345,7 +345,7 @@ [(1) 'left-up] [(3) 'right-up] [else 'middle-up])])] - [m (let-values ([(x y) (send wx + [m (let-values ([(x y) (send wx adjust-event-position (->long ((if motion? GdkEventMotion-x @@ -378,24 +378,24 @@ (if crossing? GdkEventCrossing-time GdkEventButton-time)) event)] [caps-down (bit? modifiers GDK_LOCK_MASK)]))]) - (if (send wx handles-events? gtk) - (begin - (queue-window-event wx (lambda () - (send wx dispatch-on-event m #f))) - #t) - (constrained-reply (send wx get-eventspace) - (lambda () (or (send wx dispatch-on-event m #t) - (send wx internal-pre-on-event gtk m))) - #t - #:fail-result - ;; an enter event is synthesized when a button is - ;; enabled and the mouse is over the button, and the - ;; event is not dispatched via the eventspace; leave - ;; events are perhaps similarly synthesized, so allow - ;; them, too - (if (or (eq? type 'enter) (eq? type 'leave)) - #f - #t))))))))) + (if (send wx handles-events? gtk) + (begin + (queue-window-event wx (lambda () + (send wx dispatch-on-event m #f))) + #t) + (constrained-reply (send wx get-eventspace) + (lambda () (or (send wx dispatch-on-event m #t) + (send wx internal-pre-on-event gtk m))) + #t + #:fail-result + ;; an enter event is synthesized when a button is + ;; enabled and the mouse is over the button, and the + ;; event is not dispatched via the eventspace; leave + ;; events are perhaps similarly synthesized, so allow + ;; them, too + (if (or (eq? type 'enter) (eq? type 'leave)) + #f + #t))))))))) ;; ---------------------------------------- @@ -592,13 +592,13 @@ (define drag-connected? #f) (define/public (drag-accept-files on?) (if on? - (begin - (unless drag-connected? - (connect-drag-data-received gtk) - (set! drag-connected? #t)) - (gtk_drag_dest_set gtk GTK_DEST_DEFAULT_ALL GDK_ACTION_COPY) - (gtk_drag_dest_add_uri_targets gtk)) - (gtk_drag_dest_unset gtk))) + (begin + (unless drag-connected? + (connect-drag-data-received gtk) + (set! drag-connected? #t)) + (gtk_drag_dest_set gtk GTK_DEST_DEFAULT_ALL GDK_ACTION_COPY) + (gtk_drag_dest_add_uri_targets gtk)) + (gtk_drag_dest_unset gtk))) (define/public (set-focus) (gtk_widget_grab_focus (get-client-gtk))) @@ -761,7 +761,7 @@ (when win (set-mcar! win-box #f) (for ([i (in-range (mcdr win-box))]) - (gdk_window_thaw_updates win))))) + (gdk_window_thaw_updates win))))) (define (request-flush-delay win-box) (do-request-flush-delay @@ -769,15 +769,15 @@ (lambda (win-box) (let ([win (mcar win-box)]) (and win - ;; The freeze/thaw state is actually with the window's - ;; implementation, so force a native implementation of the - ;; window to try to avoid it changing out from underneath - ;; us between the freeze and thaw actions. - (gdk_window_ensure_native win) - (begin - (gdk_window_freeze_updates win) - (set-mcdr! win-box (add1 (mcdr win-box))) - #t)))) + ;; The freeze/thaw state is actually with the window's + ;; implementation, so force a native implementation of the + ;; window to try to avoid it changing out from underneath + ;; us between the freeze and thaw actions. + (gdk_window_ensure_native win) + (begin + (gdk_window_freeze_updates win) + (set-mcdr! win-box (add1 (mcdr win-box))) + #t)))) (lambda (win-box) (let ([win (mcar win-box)]) (when win @@ -791,5 +791,5 @@ (lambda (win-box) (let ([win (mcar win-box)]) (when win - (gdk_window_thaw_updates win) + (gdk_window_thaw_updates win) (set-mcdr! win-box (sub1 (mcdr win-box))))))))) diff --git a/collects/mred/private/wx/win32/types.rkt b/collects/mred/private/wx/win32/types.rkt index d446fedc..6fbfee97 100644 --- a/collects/mred/private/wx/win32/types.rkt +++ b/collects/mred/private/wx/win32/types.rkt @@ -1,13 +1,13 @@ #lang racket/base (require ffi/unsafe - ffi/winapi) + ffi/winapi) (provide (protect-out _wfun - _WORD - _DWORD - _UDWORD + _WORD + _DWORD + _UDWORD _ATOM _WPARAM _LPARAM @@ -95,35 +95,35 @@ (define _permanent-string/utf-16 (make-ctype _pointer - (lambda (s) - (and s - (let ([v (malloc _gcpointer)]) - (ptr-set! v _string/utf-16 s) - (let ([p (ptr-ref v _gcpointer)]) - (let ([len (+ 1 (utf-16-length s))]) - (let ([c (malloc len _uint16 'raw)]) - (memcpy c p len _uint16) - c)))))) - (lambda (p) p))) + (lambda (s) + (and s + (let ([v (malloc _gcpointer)]) + (ptr-set! v _string/utf-16 s) + (let ([p (ptr-ref v _gcpointer)]) + (let ([len (+ 1 (utf-16-length s))]) + (let ([c (malloc len _uint16 'raw)]) + (memcpy c p len _uint16) + c)))))) + (lambda (p) p))) (define _LONG _long) (define _ULONG _ulong) (define _SHORT _short) (define-cstruct _POINT ([x _LONG] - [y _LONG])) + [y _LONG])) (define-cstruct _RECT ([left _LONG] - [top _LONG] - [right _LONG] - [bottom _LONG])) + [top _LONG] + [right _LONG] + [bottom _LONG])) (define-cstruct _MSG ([hwnd _HWND] - [message _UINT] - [wParam _WPARAM] - [lParam _LPARAM] - [time _DWORD] - [pt _POINT])) + [message _UINT] + [wParam _WPARAM] + [lParam _LPARAM] + [time _DWORD] + [pt _POINT])) (define (short v) (if (zero? (bitwise-and #x8000 v)) diff --git a/collects/mrlib/scribblings/switchable-button.scrbl b/collects/mrlib/scribblings/switchable-button.scrbl index df25e4cb..74d040a2 100644 --- a/collects/mrlib/scribblings/switchable-button.scrbl +++ b/collects/mrlib/scribblings/switchable-button.scrbl @@ -15,7 +15,7 @@ @defconstructor/auto-super[([label string?] [callback (-> (is-a?/c switchable-button%) any/c)] [bitmap (is-a?/c bitmap%)] - [alternate-bitmap (is-a?/c bitmap%) bitmap] + [alternate-bitmap (is-a?/c bitmap%) bitmap] [vertical-tight? boolean? #f])]{ The @racket[callback] is called when the button is pressed. The @racket[string] and @racket[bitmap] are diff --git a/collects/scribblings/framework/splash.scrbl b/collects/scribblings/framework/splash.scrbl index fc61340e..3de13845 100644 --- a/collects/scribblings/framework/splash.scrbl +++ b/collects/scribblings/framework/splash.scrbl @@ -26,7 +26,7 @@ that number to control the gauge along the bottom of the splash screen. [splash-title string?] [width-default exact-nonnegative-integer?] [#:allow-funny? allow-funny? boolean? #f] - [#:frame-icon + [#:frame-icon frame-icon (or/c #f (is-a?/c bitmap%) diff --git a/collects/tests/gracket/mem.rkt b/collects/tests/gracket/mem.rkt index 296104d9..ba7d3407 100644 --- a/collects/tests/gracket/mem.rkt +++ b/collects/tests/gracket/mem.rkt @@ -21,8 +21,8 @@ (define allocated '()) (define (remember tag v) (set! allocated - (cons (cons tag (make-weak-box v)) - allocated)) + (cons (cons tag (make-weak-box v)) + allocated)) v) (define sub-collect-frame @@ -71,163 +71,163 @@ (unless (zero? n) (let ([tag (cons id n)]) (let* ([edit (remember tag (make-object text%))] - [ef (let ([f (make-object frame% "Editor Frame")]) - (send (make-object editor-canvas% f) set-editor edit) - (remember tag f))] - [c (make-custodian)] - [es (parameterize ([current-custodian c]) - (make-eventspace))]) + [ef (let ([f (make-object frame% "Editor Frame")]) + (send (make-object editor-canvas% f) set-editor edit) + (remember tag f))] + [c (make-custodian)] + [es (parameterize ([current-custodian c]) + (make-eventspace))]) - (when edit? - (send ef show #t) - (sleep 0.1)) + (when edit? + (send ef show #t) + (sleep 0.1)) - (parameterize ([current-eventspace es]) - (send (remember - tag - (make-object - (class timer% + (parameterize ([current-eventspace es]) + (send (remember + tag + (make-object + (class timer% (init-rest args) - (override* [notify (lambda () (void))]) + (override* [notify (lambda () (void))]) (apply super-make-object args)))) - start 100)) + start 100)) - (when frame? - (let* ([f (remember tag - (make-object (if (even? n) - frame% - dialog%) - "Tester" #f 200 200))] - [cb (lambda (x y) f)] - [p (remember tag (make-object (get-pane% n) f))]) - (remember tag (make-object canvas% f)) - (when (zero? (modulo n 3)) - (thread (lambda () (send f show #t))) - (let loop () (sleep) (unless (send f is-shown?) (loop)))) - (remember tag (make-object button% "one" p cb)) - (let ([class check-box%]) - (let loop ([m 10]) - (unless (zero? m) - (remember (cons tag m) - (make-object class "another" p cb)) - (loop (sub1 m))))) - (remember tag (make-object check-box% "check" p cb)) - (remember tag (make-object choice% "choice" '("a" "b" "c") p cb)) - (remember tag (make-object list-box% "list" '("apple" "banana" "coconut") - p cb)) - (remember tag (make-object button% "two" p cb)) - (send f show #f))) + (when frame? + (let* ([f (remember tag + (make-object (if (even? n) + frame% + dialog%) + "Tester" #f 200 200))] + [cb (lambda (x y) f)] + [p (remember tag (make-object (get-pane% n) f))]) + (remember tag (make-object canvas% f)) + (when (zero? (modulo n 3)) + (thread (lambda () (send f show #t))) + (let loop () (sleep) (unless (send f is-shown?) (loop)))) + (remember tag (make-object button% "one" p cb)) + (let ([class check-box%]) + (let loop ([m 10]) + (unless (zero? m) + (remember (cons tag m) + (make-object class "another" p cb)) + (loop (sub1 m))))) + (remember tag (make-object check-box% "check" p cb)) + (remember tag (make-object choice% "choice" '("a" "b" "c") p cb)) + (remember tag (make-object list-box% "list" '("apple" "banana" "coconut") + p cb)) + (remember tag (make-object button% "two" p cb)) + (send f show #f))) - (when subwindows? - (let ([p (make-object (get-panel% n) sub-collect-frame)] - [cv (make-object canvas% sub-collect-frame)] - [add-objects - (lambda (p tag hide?) - (let ([b (let* ([x #f] - [bcb (lambda (a b) x)]) - (set! x (make-object button% "one" p bcb)) - x)] - [c (make-object check-box% "check" p void)] - [co (make-object choice% "choice" '("a" "b" "c") p void)] - [cv (make-object canvas% p)] - [lb (make-object list-box% "list" '("apple" "banana" "coconut") p void)]) - (when hide? - (send p delete-child b) - (send p delete-child c) - (send p delete-child cv) - (send p delete-child co) - (send p delete-child lb)) - (remember tag b) - (remember tag c) - (remember tag cv) - (remember tag co) - (remember tag lb)))]) - (add-objects sub-collect-panel (cons 'sc1 tag) #t) - (add-objects p (cons 'sc2 tag) #f) - (remember (cons 'sc0 tag) p) - (remember (cons 'sc0 tag) cv) - (send sub-collect-frame delete-child p) - (send sub-collect-frame delete-child cv))) + (when subwindows? + (let ([p (make-object (get-panel% n) sub-collect-frame)] + [cv (make-object canvas% sub-collect-frame)] + [add-objects + (lambda (p tag hide?) + (let ([b (let* ([x #f] + [bcb (lambda (a b) x)]) + (set! x (make-object button% "one" p bcb)) + x)] + [c (make-object check-box% "check" p void)] + [co (make-object choice% "choice" '("a" "b" "c") p void)] + [cv (make-object canvas% p)] + [lb (make-object list-box% "list" '("apple" "banana" "coconut") p void)]) + (when hide? + (send p delete-child b) + (send p delete-child c) + (send p delete-child cv) + (send p delete-child co) + (send p delete-child lb)) + (remember tag b) + (remember tag c) + (remember tag cv) + (remember tag co) + (remember tag lb)))]) + (add-objects sub-collect-panel (cons 'sc1 tag) #t) + (add-objects p (cons 'sc2 tag) #f) + (remember (cons 'sc0 tag) p) + (remember (cons 'sc0 tag) cv) + (send sub-collect-frame delete-child p) + (send sub-collect-frame delete-child cv))) - (when (and edit? insert?) - (let ([e edit]) + (when (and edit? insert?) + (let ([e edit]) (send e begin-edit-sequence) - (when load-file? - (send e load-file (build-path source-dir "mem.rkt"))) - (let loop ([i 20]) - (send e insert (number->string i)) - (unless (zero? i) - (loop (sub1 i)))) - (let ([s (make-object editor-snip%)]) - (send (send s get-editor) insert "Hello!") - (send e insert s)) - (send e insert #\newline) - (send e insert "done") - (send e set-modified #f) + (when load-file? + (send e load-file (build-path source-dir "mem.rkt"))) + (let loop ([i 20]) + (send e insert (number->string i)) + (unless (zero? i) + (loop (sub1 i)))) + (let ([s (make-object editor-snip%)]) + (send (send s get-editor) insert "Hello!") + (send e insert s)) + (send e insert #\newline) + (send e insert "done") + (send e set-modified #f) (send e end-edit-sequence))) - - (when menus? - (let ([f (remember tag (make-object frame% "MB Frame 0"))]) - (remember tag (make-object menu% "TM1" (remember (cons 'q tag) (make-object menu-bar% f))))) - (let* ([mb (remember tag (make-object menu-bar% ef))] - [m (remember tag (make-object menu% "Ok" mb))]) - (remember tag (make-object menu-item% "Hi" m void)) - (remember tag (make-object menu-item% "There" m void #\t)) - (remember tag - (make-object checkable-menu-item% - "Checkable" - (remember tag (make-object menu% "Hello" m)) - void)) - (let ([i (remember tag (make-object menu-item% "Delete Me" m void))]) - (send i delete))) + + (when menus? + (let ([f (remember tag (make-object frame% "MB Frame 0"))]) + (remember tag (make-object menu% "TM1" (remember (cons 'q tag) (make-object menu-bar% f))))) + (let* ([mb (remember tag (make-object menu-bar% ef))] + [m (remember tag (make-object menu% "Ok" mb))]) + (remember tag (make-object menu-item% "Hi" m void)) + (remember tag (make-object menu-item% "There" m void #\t)) + (remember tag + (make-object checkable-menu-item% + "Checkable" + (remember tag (make-object menu% "Hello" m)) + void)) + (let ([i (remember tag (make-object menu-item% "Delete Me" m void))]) + (send i delete))) - (when subwindows? - (unless permanent-ready? - (semaphore-wait mb-lock) - (unless (send sub-collect-frame get-menu-bar) - (let ([mb (make-object menu-bar% sub-collect-frame)]) - (make-object menu% "Permanent" mb))) - (set! permanent-ready? #t) - (semaphore-post mb-lock)) - (let* ([mb (send sub-collect-frame get-menu-bar)] - [mm (car (send mb get-items))]) - (send (remember (cons 'm tag) (make-object menu-item% "Delete Me" mm void)) delete) - (let ([m (remember tag (make-object menu% "Temporary" mb))]) - (remember (cons 't tag) (make-object menu-item% "Temp Hi" m void)) - (send m delete))))) - - (when atomic? - (let loop ([m 8]) - (unless (zero? m) - (remember (cons tag m) (make-object point% n m)) - (let ([br (make-object brush%)]) - (remember (cons tag m) br) - (hash-set! htw br 'ok)) - (remember (cons tag m) (make-object pen%)) - (loop (sub1 m))))) - - (when offscreen? - (let ([m (remember tag (make-object bitmap-dc%))] - [b0 (remember (cons tag 'f) (make-object bitmap% (get-image n)))] - [b (remember (cons tag 'u) (make-object bitmap% 100 100))] - [b2 (remember (cons tag 'x) (make-object bitmap% 100 100))]) - (unless (send b0 ok?) - (error "bitmap load error")) - (send m set-bitmap b))) - - (when edit? - (send ef show #f)) - - (custodian-shutdown-all c) + (when subwindows? + (unless permanent-ready? + (semaphore-wait mb-lock) + (unless (send sub-collect-frame get-menu-bar) + (let ([mb (make-object menu-bar% sub-collect-frame)]) + (make-object menu% "Permanent" mb))) + (set! permanent-ready? #t) + (semaphore-post mb-lock)) + (let* ([mb (send sub-collect-frame get-menu-bar)] + [mm (car (send mb get-items))]) + (send (remember (cons 'm tag) (make-object menu-item% "Delete Me" mm void)) delete) + (let ([m (remember tag (make-object menu% "Temporary" mb))]) + (remember (cons 't tag) (make-object menu-item% "Temp Hi" m void)) + (send m delete))))) - (collect-garbage) + (when atomic? + (let loop ([m 8]) + (unless (zero? m) + (remember (cons tag m) (make-object point% n m)) + (let ([br (make-object brush%)]) + (remember (cons tag m) br) + (hash-set! htw br 'ok)) + (remember (cons tag m) (make-object pen%)) + (loop (sub1 m))))) + + (when offscreen? + (let ([m (remember tag (make-object bitmap-dc%))] + [b0 (remember (cons tag 'f) (make-object bitmap% (get-image n)))] + [b (remember (cons tag 'u) (make-object bitmap% 100 100))] + [b2 (remember (cons tag 'x) (make-object bitmap% 100 100))]) + (unless (send b0 ok?) + (error "bitmap load error")) + (send m set-bitmap b))) + + (when edit? + (send ef show #f)) + + (custodian-shutdown-all c) - (maker id (sub1 n)))))) + (collect-garbage) + + (maker id (sub1 n)))))) (define (still) (map (lambda (x) - (let ([v (weak-box-value (cdr x))]) - (when v + (let ([v (weak-box-value (cdr x))]) + (when v (printf "~s ~s\n" (car x) v)))) allocated) (void)) @@ -241,29 +241,29 @@ (define (breakable t) (if #f (thread (lambda () - (read) - (printf "breaking\n") - (break-thread t) - (thread-wait t) - (printf "done\n"))) + (read) + (printf "breaking\n") + (break-thread t) + (thread-wait t) + (printf "done\n"))) (void))) (define (do-test) (let ([sema (make-semaphore)]) (let loop ([n num-threads]) (unless (zero? n) - (breakable - (thread (lambda () - (stw (current-thread) n) - (dynamic-wind - void - (lambda () (maker n num-times)) - (lambda () (semaphore-post sema)))))) - (loop (sub1 n)))) + (breakable + (thread (lambda () + (stw (current-thread) n) + (dynamic-wind + void + (lambda () (maker n num-times)) + (lambda () (semaphore-post sema)))))) + (loop (sub1 n)))) (let loop ([n num-threads]) (unless (zero? n) - (yield sema) - (loop (sub1 n))))) + (yield sema) + (loop (sub1 n))))) (collect-garbage) (collect-garbage) @@ -280,4 +280,3 @@ (still))) (do-test) -