add accept-tab-focus to editor-canvas%
svn: r17929
This commit is contained in:
parent
102b03311e
commit
09ef762e3f
|
@ -946,6 +946,8 @@
|
||||||
|
|
||||||
(send t auto-wrap #t)
|
(send t auto-wrap #t)
|
||||||
(send t lock #t)
|
(send t lock #t)
|
||||||
|
(send c accept-tab-focus #f)
|
||||||
|
(send c allow-tab-exit #t)
|
||||||
c))
|
c))
|
||||||
|
|
||||||
(define (size-discussion-canvas canvas)
|
(define (size-discussion-canvas canvas)
|
||||||
|
|
|
@ -260,6 +260,10 @@
|
||||||
[(on?) (set! force-focus? (and on? #t))
|
[(on?) (set! force-focus? (and on? #t))
|
||||||
(send wx force-display-focus on?)]))]
|
(send wx force-display-focus on?)]))]
|
||||||
|
|
||||||
|
[accept-tab-focus (entry-point
|
||||||
|
(case-lambda
|
||||||
|
[() (send wx get-tab-focus)]
|
||||||
|
[(on?) (send wx set-tab-focus (and on? #t))]))]
|
||||||
[allow-tab-exit (entry-point
|
[allow-tab-exit (entry-point
|
||||||
(case-lambda
|
(case-lambda
|
||||||
[() (send wx is-tabable?)]
|
[() (send wx is-tabable?)]
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
wx-canvas%
|
wx-canvas%
|
||||||
wx-editor-canvas%))
|
wx-editor-canvas%))
|
||||||
|
|
||||||
(define (make-canvas-glue% %) ; implies make-window-glue%
|
(define (make-canvas-glue% default-tabable? %) ; implies make-window-glue%
|
||||||
(class100 (make-window-glue% %) (mred proxy . args)
|
(class100 (make-window-glue% %) (mred proxy . args)
|
||||||
(inherit get-mred get-top-level clear-margins)
|
(inherit get-mred get-top-level clear-margins)
|
||||||
(public
|
(public
|
||||||
|
@ -22,6 +22,22 @@
|
||||||
[do-on-event (lambda (e) (super on-event e))]
|
[do-on-event (lambda (e) (super on-event e))]
|
||||||
[do-on-scroll (lambda (e) (super on-scroll e))]
|
[do-on-scroll (lambda (e) (super on-scroll e))]
|
||||||
[do-on-paint (lambda () (super on-paint))])
|
[do-on-paint (lambda () (super on-paint))])
|
||||||
|
(private-field
|
||||||
|
[tabable? default-tabable?])
|
||||||
|
(public
|
||||||
|
[get-tab-focus (lambda () tabable?)]
|
||||||
|
[set-tab-focus (lambda (v) (set! tabable? v))]
|
||||||
|
[on-tab-in (lambda ()
|
||||||
|
(let ([mred (wx->mred this)])
|
||||||
|
(when mred
|
||||||
|
(send mred on-tab-in))))])
|
||||||
|
(override
|
||||||
|
[gets-focus? (lambda () tabable?)]
|
||||||
|
[handles-key-code
|
||||||
|
(lambda (code alpha? meta?)
|
||||||
|
(if default-tabable?
|
||||||
|
(super handles-key-code code alpha? meta?)
|
||||||
|
(or meta? (not tabable?))))])
|
||||||
(private
|
(private
|
||||||
[clear-and-on-paint
|
[clear-and-on-paint
|
||||||
(lambda (mred)
|
(lambda (mred)
|
||||||
|
@ -68,20 +84,11 @@
|
||||||
|
|
||||||
(define wx-canvas%
|
(define wx-canvas%
|
||||||
(make-canvas-glue%
|
(make-canvas-glue%
|
||||||
|
#f
|
||||||
(class100 (make-control% wx:canvas% 0 0 #t #t) (parent x y w h style gl-config)
|
(class100 (make-control% wx:canvas% 0 0 #t #t) (parent x y w h style gl-config)
|
||||||
(inherit get-top-level)
|
(inherit get-top-level)
|
||||||
(private-field
|
|
||||||
[tabable? #f])
|
|
||||||
(public
|
(public
|
||||||
[clear-margins (lambda () (void))]
|
[clear-margins (lambda () (void))])
|
||||||
[on-tab-in (lambda () (send (wx->mred this) on-tab-in))]
|
|
||||||
[get-tab-focus (lambda () tabable?)]
|
|
||||||
[set-tab-focus (lambda (v) (set! tabable? v))])
|
|
||||||
(override
|
|
||||||
[gets-focus? (lambda () tabable?)]
|
|
||||||
[handles-key-code
|
|
||||||
(lambda (code alpha? meta?)
|
|
||||||
(or meta? (not tabable?)))])
|
|
||||||
(sequence
|
(sequence
|
||||||
(super-init style parent x y w h (cons 'deleted style) "canvas" gl-config)
|
(super-init style parent x y w h (cons 'deleted style) "canvas" gl-config)
|
||||||
(unless (memq 'deleted style)
|
(unless (memq 'deleted style)
|
||||||
|
@ -163,10 +170,6 @@
|
||||||
(public
|
(public
|
||||||
[set-tabable (lambda (on?) (set! tabable? on?))]
|
[set-tabable (lambda (on?) (set! tabable? on?))]
|
||||||
[is-tabable? (lambda () tabable?)]
|
[is-tabable? (lambda () tabable?)]
|
||||||
[on-tab-in (lambda ()
|
|
||||||
(let ([mred (wx->mred this)])
|
|
||||||
(when mred
|
|
||||||
(send mred on-tab-in))))]
|
|
||||||
[set-single-line (lambda () (set! single-line-canvas? #t))]
|
[set-single-line (lambda () (set! single-line-canvas? #t))]
|
||||||
[is-single-line? (lambda () single-line-canvas?)]
|
[is-single-line? (lambda () single-line-canvas?)]
|
||||||
[set-line-count (lambda (n)
|
[set-line-count (lambda (n)
|
||||||
|
@ -220,6 +223,7 @@
|
||||||
|
|
||||||
(define wx-editor-canvas%
|
(define wx-editor-canvas%
|
||||||
(class (make-canvas-glue%
|
(class (make-canvas-glue%
|
||||||
|
#t
|
||||||
(make-editor-canvas% (make-control% wx:editor-canvas%
|
(make-editor-canvas% (make-control% wx:editor-canvas%
|
||||||
0 0 #t #t)))
|
0 0 #t #t)))
|
||||||
(inherit editor-canvas-on-scroll)
|
(inherit editor-canvas-on-scroll)
|
||||||
|
|
|
@ -90,26 +90,6 @@ The @scheme[gl-config] argument determines properties of an OpenGL
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@defmethod*[([(accept-tab-focus)
|
|
||||||
boolean?]
|
|
||||||
[(accept-tab-focus [on? any/c])
|
|
||||||
void?])]{
|
|
||||||
|
|
||||||
@index['("keyboard focus" "navigation")]{Gets} or sets whether
|
|
||||||
tab-focus is enabled for the canvas (assuming that the canvas is
|
|
||||||
not created with the @scheme['no-focus] style). When tab-focus is
|
|
||||||
enabled, the canvas can receive the keyboard focus when the user
|
|
||||||
navigates among a frame or dialog's controls with the Tab and
|
|
||||||
arrow keys. By default, tab-focus is disabled.
|
|
||||||
|
|
||||||
When tab-focus is enabled for a canvas, Tab, arrow, and Enter keyboard
|
|
||||||
events are consumed by a frame's default
|
|
||||||
@method[top-level-window<%> on-traverse-char] method. (In addition, a dialog's default method consumes Escape key
|
|
||||||
events.) Otherwise,
|
|
||||||
@method[top-level-window<%> on-traverse-char] allows the keyboard events to be propagated to the canvas.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@defmethod[(get-scroll-page [which (one-of/c 'horizontal 'vertical)])
|
@defmethod[(get-scroll-page [which (one-of/c 'horizontal 'vertical)])
|
||||||
(integer-in 1 1000000000)]{
|
(integer-in 1 1000000000)]{
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,33 @@ The @scheme[canvas<%>] interface is implemented by two classes:
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@defmethod*[([(accept-tab-focus)
|
||||||
|
boolean?]
|
||||||
|
[(accept-tab-focus [on? any/c])
|
||||||
|
void?])]{
|
||||||
|
|
||||||
|
@index['("keyboard focus" "navigation")]{Gets} or sets whether
|
||||||
|
tab-focus is enabled for the canvas (assuming that the canvas is
|
||||||
|
not created with the @scheme['no-focus] style for @scheme[canvas%]). When tab-focus is
|
||||||
|
enabled, the canvas can receive the keyboard focus when the user
|
||||||
|
navigates among a frame or dialog's controls with the Tab and
|
||||||
|
arrow keys. By default, tab-focus is disabled.
|
||||||
|
|
||||||
|
When tab-focus is enabled for a @scheme[canvas%] object, Tab, arrow,
|
||||||
|
Enter, and Escape keyboard events are consumed by a frame's default
|
||||||
|
@method[top-level-window<%> on-traverse-char] method. (In addition, a
|
||||||
|
dialog's default method consumes Escape key events.) Otherwise,
|
||||||
|
@method[top-level-window<%> on-traverse-char] allows the keyboard
|
||||||
|
events to be propagated to the canvas.
|
||||||
|
|
||||||
|
For an @scheme[editor-canvas%] object, handling of Tab, arrow, Enter,
|
||||||
|
and Escape keyboard events is determined by the
|
||||||
|
@method[editor-canvas% allow-tab-exit] method.
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@defmethod[(get-canvas-background)
|
@defmethod[(get-canvas-background)
|
||||||
(or/c (is-a?/c color%) false/c)]{
|
(or/c (is-a?/c color%) false/c)]{
|
||||||
Returns the color currently used to ``erase'' the canvas content before
|
Returns the color currently used to ``erase'' the canvas content before
|
||||||
|
@ -144,7 +171,7 @@ Called when the keyboard focus enters the canvas via keyboard
|
||||||
@method[window<%> on-focus] is called.
|
@method[window<%> on-focus] is called.
|
||||||
|
|
||||||
See also
|
See also
|
||||||
@xmethod[canvas% accept-tab-focus] and
|
@method[canvas<%> accept-tab-focus] and
|
||||||
@xmethod[top-level-window<%> on-traverse-char] .
|
@xmethod[top-level-window<%> on-traverse-char] .
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,15 +121,16 @@ Enables or disables last-line scrolling, or gets the current enable
|
||||||
@index['("keyboard focus" "navigation")]{Gets} or sets whether
|
@index['("keyboard focus" "navigation")]{Gets} or sets whether
|
||||||
tab-exit is enabled for the editor canvas. When tab-exit is enabled,
|
tab-exit is enabled for the editor canvas. When tab-exit is enabled,
|
||||||
the user can move the keyboard focus out of the editor using the Tab
|
the user can move the keyboard focus out of the editor using the Tab
|
||||||
and arrow keys, or invoke the default button using the Enter/Return
|
and arrow keys, invoke the default button using the Enter/Return key,
|
||||||
key. By default, tab-exit is disabled.
|
or invoke a dialog's close action with Escape. By default, tab-exit
|
||||||
|
is disabled.
|
||||||
|
|
||||||
When tab-exit is enabled for an editor canvas, Tab, arrow, and Enter
|
When tab-exit is enabled for an editor canvas, Tab and Enter keyboard
|
||||||
keyboard events are consumed by a frame's default
|
events are consumed by a frame's default @method[top-level-window<%>
|
||||||
@method[top-level-window<%> on-traverse-char] method. (In addition, a
|
on-traverse-char] method; in addition, a dialog's default method
|
||||||
dialog's default method consumes Escape key events.) Otherwise,
|
consumes Escape key events. Otherwise, @method[top-level-window<%>
|
||||||
@method[top-level-window<%> on-traverse-char] allows the keyboard
|
on-traverse-char] allows the keyboard events to be propagated to the
|
||||||
events to be propagated to the canvas.
|
canvas.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -223,7 +223,7 @@ If the window that currently owns the focus specifically handles the
|
||||||
Meta/Alt events.}
|
Meta/Alt events.}
|
||||||
|
|
||||||
@item{@scheme[canvas%] --- when tab-focus is disabled (see
|
@item{@scheme[canvas%] --- when tab-focus is disabled (see
|
||||||
@method[canvas% accept-tab-focus]): all keyboard events, except alphanumeric key events when the Meta
|
@method[canvas<%> accept-tab-focus]): all keyboard events, except alphanumeric key events when the Meta
|
||||||
(X) or Alt (Windows) key is pressed; when tab-focus is enabled:
|
(X) or Alt (Windows) key is pressed; when tab-focus is enabled:
|
||||||
no key events}
|
no key events}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
Version 4.2.4.1
|
Version 4.2.4.2
|
||||||
|
Added accept-tab-focus method to canvas<%> and editor-canvas%
|
||||||
|
|
||||||
|
Version 4.2.4.1
|
||||||
Changed radio-box% to allow #f as a selection so that no buttons are
|
Changed radio-box% to allow #f as a selection so that no buttons are
|
||||||
selected
|
selected
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user