diff --git a/collects/mred/private/filedialog.ss b/collects/mred/private/filedialog.ss index 45b1dc1d..93e176f9 100644 --- a/collects/mred/private/filedialog.ss +++ b/collects/mred/private/filedialog.ss @@ -47,15 +47,17 @@ (raise-type-error who "list of 2-string lists" filters)) (if (or (eq? (system-type) 'unix) force-unix?) (send (new path-dialog% - [put? put?] - [dir? dir?] - [multi? multi?] - [message message] - [parent parent] - [directory directory] - [filename filename] - ;; implements its own filters - [filters (if (eq? filters default-filters) #t filters)]) + [put? put?] + [dir? dir?] + [multi? multi?] + [message message] + [parent parent] + [directory directory] + [filename filename] + [filters + (cond [(eq? filters default-filters) #t] ; has its own defaults + [dir? #f] + [else filters])]) run) (let ([s (wx:file-selector message directory filename extension diff --git a/collects/mred/private/path-dialog.ss b/collects/mred/private/path-dialog.ss index 7ff659b2..d574248c 100644 --- a/collects/mred/private/path-dialog.ss +++ b/collects/mred/private/path-dialog.ss @@ -66,7 +66,7 @@ ;; (list-of (list filter-name filter-glob)) ;; can use multiple globs with ";" separators ;; #f => disable, #t => use default - [filters default-filters] + [filters #t] ;; predicates are used to filter paths that are shown -- they are ;; applied on the file/dir name (as a string) (either as an ;; absolute path or relative while current-directory is set); @@ -89,12 +89,15 @@ [guard #f] ) - (when (eq? filters #t) (set! filters default-filters)) + (cond [(eq? filters #t) (set! filters default-filters)] + [(null? filters) (set! filters #f)]) (when dir? (if show-file? (error 'path-dialog% "cannot use `show-file?' with `dir?'") - (set! show-file? (lambda (_) #f)))) + (set! show-file? (lambda (_) #f))) + (when filters (error 'path-dialog% "cannot use `filters' with `dir?'"))) + (printf "filters = ~s\n" filters) (define label (if dir?