...
original commit: 5ce90b885b770c91c010100d69cbc5622263bc65
This commit is contained in:
parent
230c4b5d15
commit
5ebcb7bf53
|
@ -149,14 +149,16 @@
|
|||
|
||||
[do-dir
|
||||
(lambda (choice event)
|
||||
(let ([which (send event get-selection)])
|
||||
(let ([which (send choice get-selection)])
|
||||
(if (< which (length dirs))
|
||||
(set-directory (list-ref dirs which)))))]
|
||||
|
||||
[do-name-list
|
||||
(lambda (list-box _)
|
||||
(when (send list-box get-string-selections)
|
||||
(set-edit)))]
|
||||
(lambda (list-box evt)
|
||||
(if (eq? (send evt get-event-type) 'list-box-dclick)
|
||||
(do-ok)
|
||||
(when (send list-box get-string-selection)
|
||||
(set-edit))))]
|
||||
|
||||
[do-result-list
|
||||
(lambda args #f)]
|
||||
|
@ -328,36 +330,23 @@
|
|||
[left-middle-panel (make-object vertical-panel% middle-panel)]
|
||||
[right-middle-panel (when multi-mode?
|
||||
(make-object vertical-panel% middle-panel))]
|
||||
|
||||
[name-list%
|
||||
|
||||
(class-asi list-box%
|
||||
|
||||
(inherit
|
||||
get-first-visible-item
|
||||
get-string-selection
|
||||
get-string
|
||||
get-selection
|
||||
get-string-selection
|
||||
get-number
|
||||
get-first-visible-item
|
||||
number-of-visible-items
|
||||
set-first-visible-item
|
||||
focus
|
||||
set-selection)
|
||||
|
||||
(public
|
||||
|
||||
[set-selection-and-edit ; set selection, update edit box
|
||||
|
||||
(lambda (pos)
|
||||
(when (> (get-number) 0)
|
||||
(let* ([first-item (get-first-visible-item)]
|
||||
[last-item (sub1 (+ (number-of-visible-items)
|
||||
first-item))])
|
||||
(if (or (< pos first-item) (> pos last-item))
|
||||
(set-first-visible-item pos))
|
||||
(set-selection pos)))
|
||||
(set-edit))]
|
||||
|
||||
[pre-on-char ; set selection according to keystroke
|
||||
(override
|
||||
[on-subwindow-char
|
||||
|
||||
(lambda (_ key)
|
||||
(let ([code (send key get-key-code)]
|
||||
|
@ -370,9 +359,6 @@
|
|||
(equal? code #\return))
|
||||
(do-ok)]
|
||||
|
||||
[(equal? code #\tab)
|
||||
(send directory-field focus)]
|
||||
|
||||
; look for letter at beginning of a filename
|
||||
|
||||
[(char? code)
|
||||
|
@ -415,16 +401,28 @@
|
|||
(< curr-pos (sub1 num-items)))
|
||||
(let* ([num-vis (number-of-visible-items)]
|
||||
[new-first (+ (get-first-visible-item) num-vis)])
|
||||
(set-first-visible-item (min new-first (- (get-number) num-vis)))
|
||||
(set-first-visible-item
|
||||
(min new-first (- (get-number) num-vis)))
|
||||
(set-selection-and-edit
|
||||
(min (sub1 num-items) (+ curr-pos num-vis))))]
|
||||
|
||||
[else #f])))]
|
||||
[else #f])))])
|
||||
|
||||
(public
|
||||
[set-selection-and-edit
|
||||
(lambda (pos)
|
||||
(when (> (get-number) 0)
|
||||
(let* ([first-item (get-first-visible-item)]
|
||||
[last-item (sub1 (+ (number-of-visible-items)
|
||||
first-item))])
|
||||
(if (or (< pos first-item) (> pos last-item))
|
||||
(set-first-visible-item pos))
|
||||
(set-selection pos)))
|
||||
(set-edit))]
|
||||
[on-default-action
|
||||
(lambda ()
|
||||
(when (> (send name-list get-number) 0)
|
||||
(let* ([which (send name-list get-string-selection)]
|
||||
(when (> (get-number) 0)
|
||||
(let* ([which (get-string-selection)]
|
||||
[dir (build-path current-dir
|
||||
(make-relative which))])
|
||||
(if (directory-exists? dir)
|
||||
|
@ -503,10 +501,9 @@
|
|||
top-panel
|
||||
(lambda (button evt) (do-updir)))
|
||||
|
||||
(send dir-choice stretchable-width #t)
|
||||
(send name-list stretchable-width #t)
|
||||
|
||||
(send top-panel stretchable-height #f)
|
||||
|
||||
(send bottom-panel stretchable-height #f)
|
||||
|
||||
(when save-mode?
|
||||
|
@ -536,9 +533,7 @@
|
|||
(private
|
||||
[cancel-button (make-object button% "Cancel" bottom-panel do-cancel)]
|
||||
[ok-button
|
||||
(make-object button%
|
||||
"OK"
|
||||
bottom-panel do-ok)])
|
||||
(make-object button% "OK" bottom-panel do-ok '(border))])
|
||||
(sequence
|
||||
(cond
|
||||
[(and start-dir
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
(unit/sig framework:group^
|
||||
(import mred-interfaces^
|
||||
[exit : framework:exit^]
|
||||
[frame : framework:frame^]
|
||||
[mzlib:function : mzlib:function^]
|
||||
[mzlib:file : mzlib:file^])
|
||||
|
|
|
@ -178,15 +178,21 @@
|
|||
(set! test #f)
|
||||
(semaphore-post s))))))))
|
||||
|
||||
(preferences:set-default 'framework:just-exit-when-no-frames #t boolean?)
|
||||
|
||||
(let ([at-most-one (at-most-one-maker)])
|
||||
(send (group:get-the-frame-group) set-empty-callbacks
|
||||
(lambda ()
|
||||
(if (preferences:get 'framework:just-exit-when-no-frames)
|
||||
(void)
|
||||
(at-most-one (void)
|
||||
(lambda () (exit:exit #t))))
|
||||
(lambda () (exit:exit #t)))))
|
||||
(lambda ()
|
||||
(if (preferences:get 'framework:just-exit-when-no-frames)
|
||||
#t
|
||||
(at-most-one #t
|
||||
(lambda ()
|
||||
(exit:run-callbacks)))))
|
||||
(exit:run-callbacks))))))
|
||||
|
||||
(exit:insert-callback
|
||||
(lambda ()
|
||||
|
|
|
@ -95,6 +95,7 @@
|
|||
(lambda ()
|
||||
(send-sexp-to-mred
|
||||
`(begin
|
||||
(preferences:set 'framework:exit-when-no-frames #f)
|
||||
(preferences:set 'framework:file-dialogs 'common)
|
||||
(send (make-object ,class-expression "test open") show #t)))
|
||||
(wait-for-frame "test open")
|
||||
|
@ -123,7 +124,9 @@
|
|||
t))
|
||||
(wait-for-frame "test open")
|
||||
(send-sexp-to-mred
|
||||
`(test:close-top-level-window (get-top-level-focus-window))))))))
|
||||
`(begin
|
||||
(preferences:set 'framework:exit-when-no-frames #t)
|
||||
(test:close-top-level-window (get-top-level-focus-window)))))))))
|
||||
|
||||
(test-open "frame:editor open" 'frame:text%)
|
||||
(test-open "frame:editor open" 'frame:searchable%)
|
||||
|
|
Loading…
Reference in New Issue
Block a user