.
original commit: 930ccb31824f4c885cfd4ddc6ff14538aa2ad024
This commit is contained in:
parent
7a6624bb07
commit
5a81f9b91c
|
@ -190,6 +190,8 @@
|
|||
(set! enabled? (and b #t))
|
||||
(super-enable b))])
|
||||
(public
|
||||
[eventspace (wx:current-eventspace)]
|
||||
|
||||
[is-enabled?
|
||||
(lambda () enabled?)]
|
||||
|
||||
|
@ -214,12 +216,12 @@
|
|||
(lambda (w)
|
||||
(and w
|
||||
(if (is-a? w wx:editor-canvas%)
|
||||
(let loop ([m (send w get-edit)]
|
||||
(let loop ([m (send w get-editor)]
|
||||
[prev w])
|
||||
(if m
|
||||
(let ([snip (send m get-focus-snip)])
|
||||
(if (and snip (is-a? snip wx:editor-snip%))
|
||||
(loop (send snip get-edit) m)
|
||||
(loop (send snip get-editor) m)
|
||||
m))
|
||||
w))
|
||||
focus)))]
|
||||
|
@ -238,6 +240,8 @@
|
|||
(get-two-int-values get-client-size)])
|
||||
(send panel set-size 0 0 client-w client-h))
|
||||
(self-redraw-request))]
|
||||
|
||||
[area-parent (lambda () #f)]
|
||||
|
||||
[get-top-panel
|
||||
(lambda ()
|
||||
|
@ -578,6 +582,10 @@
|
|||
|
||||
;------------- Mixins for glue to mred classes -----------------
|
||||
|
||||
(define (queue-window-callback w cb)
|
||||
(parameterize ([wx:current-eventspace (ivar (send w get-top-level) eventspace)])
|
||||
(wx:queue-callback cb)))
|
||||
|
||||
(define wx<%> (interface () get-mred))
|
||||
(define wx/proxy<%> (interface (wx<%>) get-proxy))
|
||||
|
||||
|
@ -590,6 +598,7 @@
|
|||
|
||||
(define (make-window-glue% %) ; implies make-glue%
|
||||
(class (make-glue% %) (mred proxy . args)
|
||||
(inherit get-x get-y get-width get-height area-parent)
|
||||
(rename [super-on-size on-size]
|
||||
[super-on-set-focus on-set-focus]
|
||||
[super-on-kill-focus on-kill-focus]
|
||||
|
@ -601,13 +610,34 @@
|
|||
(if (is-a? w wx/proxy<%>)
|
||||
(k (wx->proxy w))
|
||||
(pre-wx->proxy (send w get-parent) k))
|
||||
#f))])
|
||||
#f))]
|
||||
[old-w -1]
|
||||
[old-h -1]
|
||||
[old-x -1]
|
||||
[old-y -1])
|
||||
(override
|
||||
[on-drop-file (lambda (f)
|
||||
(send proxy on-drop-file f))]
|
||||
[on-size (lambda (x y)
|
||||
(super-on-size x y)
|
||||
(and mred (send mred on-size x y)))]
|
||||
[on-size (lambda (w h)
|
||||
(super-on-size w h)
|
||||
; Delay callback to make sure X structures (position) are updated, first
|
||||
(queue-window-callback
|
||||
this
|
||||
(lambda ()
|
||||
(when mred
|
||||
(let* ([w (get-width)]
|
||||
[h (get-height)])
|
||||
(when (not (and (= w old-w) (= h old-h)))
|
||||
(set! old-w w)
|
||||
(set! old-h h)
|
||||
(send mred on-size w h)))
|
||||
(let* ([p (area-parent)]
|
||||
[x (- (get-x) (or (and p (send p dx)) 0))]
|
||||
[y (- (get-y) (or (and p (send p dy)) 0))])
|
||||
(when (not (and (= x old-x) (= y old-y)))
|
||||
(set! old-x x)
|
||||
(set! old-y y)
|
||||
(send mred on-move x y)))))))]
|
||||
[on-set-focus (lambda ()
|
||||
(super-on-set-focus)
|
||||
(send proxy on-focus #t))]
|
||||
|
@ -637,11 +667,10 @@
|
|||
|
||||
(wx:application-file-handler (lambda (f)
|
||||
(when active-frame
|
||||
(let* ([e (send (wx->mred active-frame) get-eventspace)]
|
||||
(let* ([e (ivar active-frame eventspace)]
|
||||
[p (wx:eventspace-parameterization e)])
|
||||
(parameterize ([wx:current-eventspace e])
|
||||
(semaphore-callback
|
||||
(make-semaphore 1)
|
||||
(wx:queue-callback
|
||||
(lambda () (when (ivar active-frame accept-drag?)
|
||||
(send active-frame on-drop-file f)))))))))
|
||||
|
||||
|
@ -690,7 +719,11 @@
|
|||
(super-on-event e)))]
|
||||
[on-scroll (lambda (e)
|
||||
(if mred
|
||||
(send mred on-scroll e)
|
||||
; Delay callback for windows scrollbar grab
|
||||
(queue-window-callback
|
||||
this
|
||||
(lambda ()
|
||||
(send mred on-scroll e)))
|
||||
(super-on-scroll e)))]
|
||||
[on-paint (lambda ()
|
||||
(if mred
|
||||
|
@ -842,10 +875,10 @@
|
|||
|
||||
(define (make-editor-canvas% %)
|
||||
(class % (parent x y w h name style spp init-buffer)
|
||||
(inherit get-edit force-redraw
|
||||
(inherit get-editor force-redraw
|
||||
call-as-primary-owner min-height get-size
|
||||
hard-min-height set-min-height)
|
||||
(rename [super-set-edit set-edit]
|
||||
(rename [super-set-editor set-editor]
|
||||
[super-on-set-focus on-set-focus])
|
||||
(private
|
||||
[fixed-height? #f]
|
||||
|
@ -853,22 +886,22 @@
|
|||
[orig-hard #f])
|
||||
(override
|
||||
[on-container-resize (lambda ()
|
||||
(let ([edit (get-edit)])
|
||||
(let ([edit (get-editor)])
|
||||
(when edit
|
||||
(send edit on-display-size))))]
|
||||
[on-set-focus
|
||||
(lambda ()
|
||||
(super-on-set-focus)
|
||||
(let ([m (get-edit)])
|
||||
(let ([m (get-editor)])
|
||||
(when m
|
||||
(let ([mred (wx->mred this)])
|
||||
(when mred
|
||||
(send m set-active-canvas mred))))))]
|
||||
[set-edit
|
||||
[set-editor
|
||||
(letrec ([l (case-lambda
|
||||
[(edit) (l edit #t)]
|
||||
[(edit redraw?)
|
||||
(super-set-edit edit redraw?)
|
||||
(super-set-editor edit redraw?)
|
||||
|
||||
(let ([mred (wx->mred this)])
|
||||
(when mred
|
||||
|
@ -895,7 +928,7 @@
|
|||
(update-size))]
|
||||
[update-size
|
||||
(lambda ()
|
||||
(let ([edit (get-edit)])
|
||||
(let ([edit (get-editor)])
|
||||
(when (and edit fixed-height?)
|
||||
(let* ([top (send edit line-location 0 #t)]
|
||||
[bottom (send edit line-location 0 #f)]
|
||||
|
@ -1684,7 +1717,7 @@
|
|||
this)]
|
||||
[dy 0])
|
||||
(public
|
||||
[get-edit (lambda () e)]
|
||||
[get-editor (lambda () e)]
|
||||
|
||||
[get-value (lambda () (send e get-text))]
|
||||
[set-value (lambda (v) (send e without-callback
|
||||
|
@ -1715,7 +1748,7 @@
|
|||
(let ([f (get-control-font)]
|
||||
[s (send (send e get-style-list) find-named-style "Standard")])
|
||||
(send s set-delta (font->delta f)))
|
||||
(send c set-edit e)
|
||||
(send c set-editor e)
|
||||
(send c set-line-count (if multi? 3 1))
|
||||
|
||||
(when (and l horiz?)
|
||||
|
@ -1877,7 +1910,7 @@
|
|||
(define window<%>
|
||||
(interface (area<%>)
|
||||
on-focus focus
|
||||
on-size
|
||||
on-size on-move
|
||||
accept-drop-files on-drop-file
|
||||
on-subwindow-char on-subwindow-event
|
||||
client->screen screen->client
|
||||
|
@ -1893,6 +1926,7 @@
|
|||
(public
|
||||
[on-focus void]
|
||||
[on-size void]
|
||||
[on-move void]
|
||||
[on-subwindow-char (lambda (w e) #f)]
|
||||
[on-subwindow-event (lambda (w e) #f)]
|
||||
[on-drop-file void]
|
||||
|
@ -1981,14 +2015,13 @@
|
|||
(lambda (o)
|
||||
(if (is-a? o wx:window%)
|
||||
(wx->proxy o)
|
||||
o))]
|
||||
[eventspace (wx:current-eventspace)])
|
||||
o))])
|
||||
(override
|
||||
[set-label (lambda (l)
|
||||
(send wx set-title (wx:label->plain-label l))
|
||||
(super-set-label l))])
|
||||
(public
|
||||
[get-eventspace (lambda () eventspace)]
|
||||
[get-eventspace (lambda () (ivar wx eventspace))]
|
||||
[can-close? (lambda () #t)]
|
||||
[on-close void]
|
||||
[on-activate void]
|
||||
|
@ -2325,12 +2358,8 @@
|
|||
wx)
|
||||
label parent))))
|
||||
|
||||
(define text-control<%>
|
||||
(interface (control<%>)
|
||||
get-edit get-value set-value))
|
||||
|
||||
(define text-field%
|
||||
(class* basic-control% (text-control<%>) (label parent callback [init-val ""] [style '(single)])
|
||||
(class* basic-control% () (label parent callback [init-val ""] [style '(single)])
|
||||
(sequence
|
||||
(let ([cwho '(constructor-name text-field)])
|
||||
(check-string/false cwho label)
|
||||
|
@ -2341,7 +2370,7 @@
|
|||
(private
|
||||
[wx #f])
|
||||
(public
|
||||
[get-edit (lambda () (send wx get-edit))]
|
||||
[get-editor (lambda () (send wx get-editor))]
|
||||
[get-value (lambda () (send wx get-value))]
|
||||
[set-value (lambda (v)
|
||||
(check-string '(method text-control<%> set-value) v)
|
||||
|
@ -2396,13 +2425,18 @@
|
|||
(lambda (x y) (send wx get-virtual-size x y))))]
|
||||
[get-view-start (lambda () (double-boxed
|
||||
0 0
|
||||
(lambda (x y) (send wx get-view-start x y))))]
|
||||
(lambda (x y) (send wx view-start x y))))]
|
||||
|
||||
[scroll (lambda (x y) (send wx scroll x y))]
|
||||
|
||||
[set-scrollbars (lambda (h-pixels v-pixels x-len y-len x-page y-page x-val y-val man?)
|
||||
(send wx set-scrollbars
|
||||
h-pixels v-pixels x-len y-len x-page y-page x-val y-val man?))]
|
||||
[set-scrollbars (letrec ([set-scrollbars
|
||||
(case-lambda
|
||||
[(h-pixels v-pixels x-len y-len x-page y-page x-val y-val)
|
||||
(set-scrollbars h-pixels v-pixels x-len y-len x-page y-page x-val y-val #f)]
|
||||
[(h-pixels v-pixels x-len y-len x-page y-page x-val y-val man?)
|
||||
(send wx set-scrollbars
|
||||
h-pixels v-pixels x-len y-len x-page y-page x-val y-val man?)])])
|
||||
set-scrollbars)]
|
||||
|
||||
[get-scroll-pos (lambda (d) (send wx get-scroll-pos d))]
|
||||
[set-scroll-pos (lambda (d v) (send wx set-scroll-pos d v))]
|
||||
|
@ -2461,8 +2495,8 @@
|
|||
n))
|
||||
(send wx set-line-count n))]
|
||||
|
||||
[get-edit (lambda () (send wx get-edit))]
|
||||
[set-edit (lambda (m) (send wx set-edit m))])
|
||||
[get-editor (lambda () (send wx get-editor))]
|
||||
[set-editor (lambda (m) (send wx set-editor m))])
|
||||
(private
|
||||
[wx #f])
|
||||
(sequence
|
||||
|
@ -2942,8 +2976,7 @@
|
|||
|
||||
(define (evaluate expr-str)
|
||||
(parameterize ([wx:current-eventspace user-eventspace])
|
||||
(semaphore-callback
|
||||
(make-semaphore 1)
|
||||
(wx:queue-callback
|
||||
(lambda ()
|
||||
(current-parameterization user-parameterization)
|
||||
(dynamic-wind
|
||||
|
@ -2986,7 +3019,7 @@
|
|||
((in-parameterization user-parameterization current-error-port) user-output-port)
|
||||
((in-parameterization user-parameterization current-input-port) (make-input-port (lambda () eof) void void))
|
||||
((in-parameterization user-parameterization current-custodian) user-custodian)
|
||||
(send repl-display-canvas set-edit repl-buffer)
|
||||
(send repl-display-canvas set-editor repl-buffer)
|
||||
(send frame show #t)
|
||||
|
||||
(send repl-display-canvas focus)
|
||||
|
@ -3023,7 +3056,7 @@
|
|||
(send f stretchable-height #f))
|
||||
(let ([m (make-object text-field% #f f void "" '(multiple))])
|
||||
(send m set-value message)
|
||||
(send (send m get-edit) lock #t)))
|
||||
(send (send m get-editor) lock #t)))
|
||||
(let* ([p (make-object horizontal-pane% f)]
|
||||
[mk-button (lambda (title v default?)
|
||||
(let ([b (make-object button% title p (lambda (b e) (set! result v) (send f show #f))
|
||||
|
@ -3410,7 +3443,7 @@
|
|||
[underlined (make-object check-box% "Underlined" p2 refresh-sample)]
|
||||
[size (make-object slider% "Size:" 4 127 p2 refresh-sample 12)]
|
||||
[sample (make-object text-field% "Sample" f void "The quick brown fox jumped over the lazy dog" '(multiple))]
|
||||
[edit (send sample get-edit)]
|
||||
[edit (send sample get-editor)]
|
||||
[done (lambda (ok) (lambda (b e) (set! ok? ok) (send f show #f)))]
|
||||
[get-font (lambda () (let ([face (send face get-string-selection)])
|
||||
(and face
|
||||
|
|
Loading…
Reference in New Issue
Block a user