--- a/KeybdFwd.st Tue Apr 23 21:41:54 1996 +0200
+++ b/KeybdFwd.st Tue Apr 23 21:57:07 1996 +0200
@@ -64,33 +64,36 @@
while general destinations get a #keyXXX:x:y:view: message, with the original
view (the one in which the event occurred) as additional argument.
- Instance Variables:
+ [Instance Variables:]
- destinationView <View> the view which shall receive
- the forwarded keyboard events.
+ destinationView <View> the view which shall receive
+ the forwarded keyboard events.
- destination <Object> the object which shall receive
- the forwarded keyboard events.
+ destination <Object> the object which shall receive
+ the forwarded keyboard events.
- sourceView <ViewOrNil> if non-nil, only events from this
- view are forwarded.
- (currently nowhere used)
+ sourceView <ViewOrNil> if non-nil, only events from this
+ view are forwarded.
+ (currently nowhere used)
- condition <Symbol> an additional condition for forwarding
- currently only #noFocus is implemented.
- The #noFocus condition will only forward
- events if no explicit focus has been
- set in the windowGroup.
+ condition <Symbol> an additional condition for forwarding
+ currently only #noFocus is implemented.
+ The #noFocus condition will only forward
+ events if no explicit focus has been
+ set in the windowGroup.
- <Block> condition block - event is forwarded,
- if it evaluates to true.
- The block gets 3 arguments:
- eventType #keyPress or #keyRelease
- key the key
- view the originating view
+ <Block> condition block - event is forwarded,
+ if it evaluates to true.
+ The block gets 3 arguments:
+ eventType #keyPress or #keyRelease
+ key the key
+ view the originating view
For more info on event handling/forwarding, see the documentation in
WindowSensor, WindowGroup and especially in WindowEvent.
+
+ [see also:]
+ WindowEvent WindowSensor WindowGroup
"
!
@@ -422,5 +425,5 @@
!KeyboardForwarder class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/Attic/KeybdFwd.st,v 1.12 1996-03-04 22:31:36 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/Attic/KeybdFwd.st,v 1.13 1996-04-23 19:56:57 cg Exp $'
! !
--- a/KeybdMap.st Tue Apr 23 21:41:54 1996 +0200
+++ b/KeybdMap.st Tue Apr 23 21:57:07 1996 +0200
@@ -11,10 +11,10 @@
"
IdentityDictionary subclass:#KeyboardMap
- instanceVariableNames:'current'
- classVariableNames:''
- poolDictionaries:''
- category:'Interface-Support'
+ instanceVariableNames:'current'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Support'
!
!KeyboardMap class methodsFor:'documentation'!
@@ -45,17 +45,17 @@
To add a mapping (for example, to attach the logical function 'DoIt' to
the key-combination Cmd-'d'):
- |m|
+ |m|
- m := Display keyboardMap.
- m bindValue:#DoIt to:#Cmdd.
+ m := Display keyboardMap.
+ m bindValue:#DoIt to:#Cmdd.
Key sequences can also be defined (hey emacs fans ;-) as in:
- |m|
+ |m|
- m := Display keyboardMap.
- m bindValue:#DoIt to:#Ctrlx followedBy:#Ctrld
+ m := Display keyboardMap.
+ m bindValue:#DoIt to:#Ctrlx followedBy:#Ctrld
Key prefixes are defined in the DeviceWorkstation>>translateKey: method.
Typical prefixes are Cmd (for Alt or Meta), Ctrl etc.
@@ -66,50 +66,72 @@
To remove a mapping, use the same value for both logical and physical key,
as in:
- |m|
+ |m|
- m := Display keyboardMap.
- m bindValue:#Cmdd to:#Cmdd.
+ m := Display keyboardMap.
+ m bindValue:#Cmdd to:#Cmdd.
+
+ [see also:]
+ WindowEvent WindowSensor WindowGroup
+ View DeviceWorkstation
"
! !
!KeyboardMap methodsFor:'accessing'!
bindValue:logicalKey to:aKey
+ "bind aLogicalKey to a rawKey.
+ The event mechanism uses this to pass logical keyboard events
+ to the application (such as #Copy, #Cut etc.)
+ instead of physical ones (such as #AltC, #AltX)"
+
aKey == logicalKey ifTrue:[
- self removeKey:aKey
+ self removeKey:aKey
] ifFalse:[
- self at:aKey put:logicalKey
+ self at:aKey put:logicalKey
]
+
+ "Modified: 23.4.1996 / 21:54:45 / cg"
!
bindValue:logicalKey to:key1 followedBy:key2
+ "bind aLogicalKey to a sequence of two rawKeys.
+ The event mechanism uses this to pass logical keyboard events
+ to the application (such as #Copy, #Cut etc.)
+ instead of physical ones (such as #AltC, #AltX)"
+
|submap|
submap := self at:key1 ifAbsent:[].
submap isNil ifTrue:[
- submap := KeyboardMap new.
- self at:key1 put:submap.
+ submap := KeyboardMap new.
+ self at:key1 put:submap.
].
submap at:key2 put:logicalKey
+
+ "Modified: 23.4.1996 / 21:55:04 / cg"
!
valueFor:aKey
+ "retrieve a logical key"
+
|where value|
where := (current notNil ifTrue:[current] ifFalse:[self]).
value := where at:aKey ifAbsent:aKey.
(value isMemberOf:KeyboardMap) ifTrue:[
- current := value.
- ^ nil.
+ current := value.
+ ^ nil.
].
current := nil.
^ value
+
+ "Modified: 23.4.1996 / 21:55:22 / cg"
! !
!KeyboardMap class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/Attic/KeybdMap.st,v 1.9 1995-11-23 17:45:09 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/Attic/KeybdMap.st,v 1.10 1996-04-23 19:56:52 cg Exp $'
! !
--- a/KeyboardForwarder.st Tue Apr 23 21:41:54 1996 +0200
+++ b/KeyboardForwarder.st Tue Apr 23 21:57:07 1996 +0200
@@ -64,33 +64,36 @@
while general destinations get a #keyXXX:x:y:view: message, with the original
view (the one in which the event occurred) as additional argument.
- Instance Variables:
+ [Instance Variables:]
- destinationView <View> the view which shall receive
- the forwarded keyboard events.
+ destinationView <View> the view which shall receive
+ the forwarded keyboard events.
- destination <Object> the object which shall receive
- the forwarded keyboard events.
+ destination <Object> the object which shall receive
+ the forwarded keyboard events.
- sourceView <ViewOrNil> if non-nil, only events from this
- view are forwarded.
- (currently nowhere used)
+ sourceView <ViewOrNil> if non-nil, only events from this
+ view are forwarded.
+ (currently nowhere used)
- condition <Symbol> an additional condition for forwarding
- currently only #noFocus is implemented.
- The #noFocus condition will only forward
- events if no explicit focus has been
- set in the windowGroup.
+ condition <Symbol> an additional condition for forwarding
+ currently only #noFocus is implemented.
+ The #noFocus condition will only forward
+ events if no explicit focus has been
+ set in the windowGroup.
- <Block> condition block - event is forwarded,
- if it evaluates to true.
- The block gets 3 arguments:
- eventType #keyPress or #keyRelease
- key the key
- view the originating view
+ <Block> condition block - event is forwarded,
+ if it evaluates to true.
+ The block gets 3 arguments:
+ eventType #keyPress or #keyRelease
+ key the key
+ view the originating view
For more info on event handling/forwarding, see the documentation in
WindowSensor, WindowGroup and especially in WindowEvent.
+
+ [see also:]
+ WindowEvent WindowSensor WindowGroup
"
!
@@ -422,5 +425,5 @@
!KeyboardForwarder class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/KeyboardForwarder.st,v 1.12 1996-03-04 22:31:36 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/KeyboardForwarder.st,v 1.13 1996-04-23 19:56:57 cg Exp $'
! !
--- a/KeyboardMap.st Tue Apr 23 21:41:54 1996 +0200
+++ b/KeyboardMap.st Tue Apr 23 21:57:07 1996 +0200
@@ -11,10 +11,10 @@
"
IdentityDictionary subclass:#KeyboardMap
- instanceVariableNames:'current'
- classVariableNames:''
- poolDictionaries:''
- category:'Interface-Support'
+ instanceVariableNames:'current'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Support'
!
!KeyboardMap class methodsFor:'documentation'!
@@ -45,17 +45,17 @@
To add a mapping (for example, to attach the logical function 'DoIt' to
the key-combination Cmd-'d'):
- |m|
+ |m|
- m := Display keyboardMap.
- m bindValue:#DoIt to:#Cmdd.
+ m := Display keyboardMap.
+ m bindValue:#DoIt to:#Cmdd.
Key sequences can also be defined (hey emacs fans ;-) as in:
- |m|
+ |m|
- m := Display keyboardMap.
- m bindValue:#DoIt to:#Ctrlx followedBy:#Ctrld
+ m := Display keyboardMap.
+ m bindValue:#DoIt to:#Ctrlx followedBy:#Ctrld
Key prefixes are defined in the DeviceWorkstation>>translateKey: method.
Typical prefixes are Cmd (for Alt or Meta), Ctrl etc.
@@ -66,50 +66,72 @@
To remove a mapping, use the same value for both logical and physical key,
as in:
- |m|
+ |m|
- m := Display keyboardMap.
- m bindValue:#Cmdd to:#Cmdd.
+ m := Display keyboardMap.
+ m bindValue:#Cmdd to:#Cmdd.
+
+ [see also:]
+ WindowEvent WindowSensor WindowGroup
+ View DeviceWorkstation
"
! !
!KeyboardMap methodsFor:'accessing'!
bindValue:logicalKey to:aKey
+ "bind aLogicalKey to a rawKey.
+ The event mechanism uses this to pass logical keyboard events
+ to the application (such as #Copy, #Cut etc.)
+ instead of physical ones (such as #AltC, #AltX)"
+
aKey == logicalKey ifTrue:[
- self removeKey:aKey
+ self removeKey:aKey
] ifFalse:[
- self at:aKey put:logicalKey
+ self at:aKey put:logicalKey
]
+
+ "Modified: 23.4.1996 / 21:54:45 / cg"
!
bindValue:logicalKey to:key1 followedBy:key2
+ "bind aLogicalKey to a sequence of two rawKeys.
+ The event mechanism uses this to pass logical keyboard events
+ to the application (such as #Copy, #Cut etc.)
+ instead of physical ones (such as #AltC, #AltX)"
+
|submap|
submap := self at:key1 ifAbsent:[].
submap isNil ifTrue:[
- submap := KeyboardMap new.
- self at:key1 put:submap.
+ submap := KeyboardMap new.
+ self at:key1 put:submap.
].
submap at:key2 put:logicalKey
+
+ "Modified: 23.4.1996 / 21:55:04 / cg"
!
valueFor:aKey
+ "retrieve a logical key"
+
|where value|
where := (current notNil ifTrue:[current] ifFalse:[self]).
value := where at:aKey ifAbsent:aKey.
(value isMemberOf:KeyboardMap) ifTrue:[
- current := value.
- ^ nil.
+ current := value.
+ ^ nil.
].
current := nil.
^ value
+
+ "Modified: 23.4.1996 / 21:55:22 / cg"
! !
!KeyboardMap class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/KeyboardMap.st,v 1.9 1995-11-23 17:45:09 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/KeyboardMap.st,v 1.10 1996-04-23 19:56:52 cg Exp $'
! !
--- a/SWSensor.st Tue Apr 23 21:41:54 1996 +0200
+++ b/SWSensor.st Tue Apr 23 21:57:07 1996 +0200
@@ -11,10 +11,10 @@
"
WindowSensor subclass:#SynchronousWindowSensor
- instanceVariableNames:'device'
- classVariableNames:''
- poolDictionaries:''
- category:'Interface-Support'
+ instanceVariableNames:'device'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Support'
!
!SynchronousWindowSensor class methodsFor:'documentation'!
@@ -330,4 +330,4 @@
!SynchronousWindowSensor class methodsFor:'documentation'!
version
-^ '$Header: /cvs/stx/stx/libview/Attic/SWSensor.st,v 1.3 1995-11-25 11:26:57 cg Exp $'! !
+^ '$Header: /cvs/stx/stx/libview/Attic/SWSensor.st,v 1.4 1996-04-23 19:56:21 cg Exp $'! !
--- a/SynchronousWindowSensor.st Tue Apr 23 21:41:54 1996 +0200
+++ b/SynchronousWindowSensor.st Tue Apr 23 21:57:07 1996 +0200
@@ -11,10 +11,10 @@
"
WindowSensor subclass:#SynchronousWindowSensor
- instanceVariableNames:'device'
- classVariableNames:''
- poolDictionaries:''
- category:'Interface-Support'
+ instanceVariableNames:'device'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Support'
!
!SynchronousWindowSensor class methodsFor:'documentation'!
@@ -330,4 +330,4 @@
!SynchronousWindowSensor class methodsFor:'documentation'!
version
-^ '$Header: /cvs/stx/stx/libview/SynchronousWindowSensor.st,v 1.3 1995-11-25 11:26:57 cg Exp $'! !
+^ '$Header: /cvs/stx/stx/libview/SynchronousWindowSensor.st,v 1.4 1996-04-23 19:56:21 cg Exp $'! !
--- a/WEvent.st Tue Apr 23 21:41:54 1996 +0200
+++ b/WEvent.st Tue Apr 23 21:57:07 1996 +0200
@@ -49,23 +49,23 @@
The algorithm for event dispatching is:
- - if the destination view has a keyboard focus set,
- AND the event is a keyboard event,
- THEN recursively invoke the event dispatching method,
- sending the event to the focus view (or its delegate, as below)
+ - if the destination view has a keyboard focus set,
+ AND the event is a keyboard event,
+ THEN recursively invoke the event dispatching method,
+ sending the event to the focus view (or its delegate, as below)
- - if the destination view has a delegate,
- AND its a keyboard, button or pointer event,
- AND the delegate is interested in that event
- (i.e. implements & responds to #handlesXXX with true)
- THEN send the event to the delegate, passing the original view
- as additional argument
+ - if the destination view has a delegate,
+ AND its a keyboard, button or pointer event,
+ AND the delegate is interested in that event
+ (i.e. implements & responds to #handlesXXX with true)
+ THEN send the event to the delegate, passing the original view
+ as additional argument
- - if the view has a nonNil controller,
- AND its a key, button or pointer event,
- THEN send the event to the controller
+ - if the view has a nonNil controller,
+ AND its a key, button or pointer event,
+ THEN send the event to the controller
- - otherwise send the event to the view
+ - otherwise send the event to the view
If the view has a non-nil transformation, the event is sent as a
@@ -85,29 +85,35 @@
Therefore, for a delegated keyPress messages, the flow is:
- sendEvent
- view has delegate
- ------> ask delegate via 'handlesKeyPress:key inView:view'
- <------ returns true
- ------> 'delegate keyPress:key x:x y:y view:view'
- -----> delegate does whatever it wants to do
- (typically sends the event to some other view)
+ sendEvent
+ view has delegate
+ ------> ask delegate via 'handlesKeyPress:key inView:view'
+ <------ returns true
+ ------> 'delegate keyPress:key x:x y:y view:view'
+ -----> delegate does whatever it wants to do
+ (typically sends the event to some other view)
for an undelegated message:
- sendEvent
- view has delegate
- ------> ask delegate via 'handlesKeyPress:key inView:view'
- <------ returns false
- view has controller
- ------> 'controller keyPress:key x:x y:y'
- view has no controller
- view has transformation
- ----> 'view deviceKeyPress:key x:x y:y'
- inverse transform x/y
- ----> 'self keyPress:key x:xLogical y:yLogical'
- view has no transformation
- ----> 'view keyPress:key x:x y:y'
+ sendEvent
+ view has delegate
+ ------> ask delegate via 'handlesKeyPress:key inView:view'
+ <------ returns false
+ view has controller
+ ------> 'controller keyPress:key x:x y:y'
+ view has no controller
+ view has transformation
+ ----> 'view deviceKeyPress:key x:x y:y'
+ inverse transform x/y
+ ----> 'self keyPress:key x:xLogical y:yLogical'
+ view has no transformation
+ ----> 'view keyPress:key x:x y:y'
+
+ [see also:]
+ WindowGroup WindowSensor
+ DeviceWorkstation View
+ KeyboardMap KeyboardForwarder EventListener
+
"
! !
@@ -499,5 +505,5 @@
!WindowEvent class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/Attic/WEvent.st,v 1.25 1996-03-07 13:59:00 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/Attic/WEvent.st,v 1.26 1996-04-23 19:56:12 cg Exp $'
! !
--- a/WGroup.st Tue Apr 23 21:41:54 1996 +0200
+++ b/WGroup.st Tue Apr 23 21:57:07 1996 +0200
@@ -155,7 +155,8 @@
doc/online directory.
[see also:]
- WindowSensor DeviceWorkstation
+ WindowSensor EventListener KeyboardForwarder
+ DeviceWorkstation
Process ProcessorScheduler
View StandardSystemView
ApplicationModel
@@ -1288,6 +1289,6 @@
!WindowGroup class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/Attic/WGroup.st,v 1.75 1996-04-23 19:40:52 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/Attic/WGroup.st,v 1.76 1996-04-23 19:57:07 cg Exp $'
! !
WindowGroup initialize!
--- a/WSensor.st Tue Apr 23 21:41:54 1996 +0200
+++ b/WSensor.st Tue Apr 23 21:57:07 1996 +0200
@@ -61,9 +61,9 @@
a so-called 'eventListener' to get the event before it is entered into
the queue. There are 3 possible listening hooks available:
- a global EventListener - gets keybd/mouse events for all views
- a per-sensor eventListener - gets only keybd/mouse events for this sensors wGroup
- a per-sensor keyboardListener - only gets keyboard events for this sensors wGroup
+ a global EventListener - gets keybd/mouse events for all views
+ a per-sensor eventListener - gets only keybd/mouse events for this sensors wGroup
+ a per-sensor keyboardListener - only gets keyboard events for this sensors wGroup
(actually, there are two more mechanisms, event delegation which allows
delegation of key- and buttonEvents of a specific view,
@@ -87,85 +87,91 @@
Read the documentation in WindowEvent for more info.
- instance variables:
- eventSemaphore <Semaphore> the semaphore to be signalled when an event
- (or damage) arrives
+ [instance variables:]
+ eventSemaphore <Semaphore> the semaphore to be signalled when an event
+ (or damage) arrives
- damage <Collection> collection of damage events
+ damage <Collection> collection of damage events
- mouseAndKeyboard <Collection> collection of user events
+ mouseAndKeyboard <Collection> collection of user events
- compressMotionEvents <Boolean> if true, multiple motion events are
- compressed to one event. If false, each
- event is handled individual.
- (should be set to false when doing free-hand drawing)
+ compressMotionEvents <Boolean> if true, multiple motion events are
+ compressed to one event. If false, each
+ event is handled individual.
+ (should be set to false when doing free-hand drawing)
- ignoreUserInput <Boolean> if true, key & button events are ignored
- (usually set to true by WindowGroup, while a
- modalbox covers a view)
+ ignoreUserInput <Boolean> if true, key & button events are ignored
+ (usually set to true by WindowGroup, while a
+ modalbox covers a view)
- shiftDown <Boolean> true while shift/meta/control-key is pressed
- metaDown (to support ST-80 style query: sensor shiftDown)
- ctrlDown
- altDown (notice, that on most systems, alt and meta key is
- the same, both reported as #Alt)
+ shiftDown <Boolean> true while shift/meta/control-key is pressed
+ metaDown (to support ST-80 style query: sensor shiftDown)
+ ctrlDown
+ altDown (notice, that on most systems, alt and meta key is
+ the same, both reported as #Alt)
- exposeEventSemaphore <Semaphore> X-special: semaphore to be signalled when
- expose event arrives after a copyArea.
+ exposeEventSemaphore <Semaphore> X-special: semaphore to be signalled when
+ expose event arrives after a copyArea.
- catchExpose <Boolean> true, while waiting for an expose event
- (after a copyArea)
+ catchExpose <Boolean> true, while waiting for an expose event
+ (after a copyArea)
- gotExpose <Boolean> set to true, when an expose event arrives
- (after a copyarea)
+ gotExpose <Boolean> set to true, when an expose event arrives
+ (after a copyarea)
- gotOtherEvent <Boolean> set to true if other events arrive while
- waiting for expose (after a copyarea).
+ gotOtherEvent <Boolean> set to true if other events arrive while
+ waiting for expose (after a copyarea).
- translateKeyboardEvents <Boolean> if true, keyboard events are translated via
- the devices leyboardMap; if false, they
- are reported as raw-keys. Default is true.
+ translateKeyboardEvents <Boolean> if true, keyboard events are translated via
+ the devices leyboardMap; if false, they
+ are reported as raw-keys. Default is true.
- eventListener <Object> if non nil, this one will get all pointer
- and keyboard events for this sensors views first.
- If it returns true, the event is supposed to
- be already handled by the listener and not sent to
- the view. If false, the event is handled as usual.
- This allows applications to catch events for any of
- its views.
+ eventListener <Object> if non nil, this one will get all pointer
+ and keyboard events for this sensors views first.
+ If it returns true, the event is supposed to
+ be already handled by the listener and not sent to
+ the view. If false, the event is handled as usual.
+ This allows applications to catch events for any of
+ its views.
- keyboardListener <Object> if non nil, this one will get all keyboard events
- for this sensors views first (but after the eventListener,
- if any).
- If it returns true, the event is supposed to
- be already handled by the listener and not sent to
- the view. If false, the event is handled as usual.
- This allows applications to catch events for any of
- its views.
- ApplicationModels can catch keyboard input with:
- postOpenWith:aBuilder
- aBuilder window sensor keyboardListener:self
+ keyboardListener <Object> if non nil, this one will get all keyboard events
+ for this sensors views first (but after the eventListener,
+ if any).
+ If it returns true, the event is supposed to
+ be already handled by the listener and not sent to
+ the view. If false, the event is handled as usual.
+ This allows applications to catch events for any of
+ its views.
+ ApplicationModels can catch keyboard input with:
+ postOpenWith:aBuilder
+ aBuilder window sensor keyboardListener:self
- class variables:
+ [class variables:]
- ControlCEnabled <Boolean> if true (which is the default) Control-C
- will interrupt the process handling the
- view.
- For secure stand-alone applications,
- this can be set to false, in which case
- Control-C does NOT interrupt the process.
+ ControlCEnabled <Boolean> if true (which is the default) Control-C
+ will interrupt the process handling the
+ view.
+ For secure stand-alone applications,
+ this can be set to false, in which case
+ Control-C does NOT interrupt the process.
- EventListener <Object> if non nil, this one will get all pointer
- and keyboard events for ALL views first.
- If it returns true, the event is supposed to
- be already handled by the listener and not enqueued.
- If false, the event is handled as usual.
- This allows overall event catchers to be
- installed for example to implement event
- recorders, active help managers etc.
+ EventListener <Object> if non nil, this one will get all pointer
+ and keyboard events for ALL views first.
+ If it returns true, the event is supposed to
+ be already handled by the listener and not enqueued.
+ If false, the event is handled as usual.
+ This allows overall event catchers to be
+ installed for example to implement event
+ recorders, active help managers etc.
- ComposeTable <Array> compose-key translation table
+ ComposeTable <Array> compose-key translation table
+
+
+ [see also:]
+ WindowGroup
+ WindowEvent KeyboardMap KeyboardForwarder EventListener
+ DeviceWorkstation View
"
! !
@@ -1792,6 +1798,6 @@
!WindowSensor class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/Attic/WSensor.st,v 1.51 1996-04-22 14:23:27 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/Attic/WSensor.st,v 1.52 1996-04-23 19:56:32 cg Exp $'
! !
WindowSensor initialize!
--- a/WindowEvent.st Tue Apr 23 21:41:54 1996 +0200
+++ b/WindowEvent.st Tue Apr 23 21:57:07 1996 +0200
@@ -49,23 +49,23 @@
The algorithm for event dispatching is:
- - if the destination view has a keyboard focus set,
- AND the event is a keyboard event,
- THEN recursively invoke the event dispatching method,
- sending the event to the focus view (or its delegate, as below)
+ - if the destination view has a keyboard focus set,
+ AND the event is a keyboard event,
+ THEN recursively invoke the event dispatching method,
+ sending the event to the focus view (or its delegate, as below)
- - if the destination view has a delegate,
- AND its a keyboard, button or pointer event,
- AND the delegate is interested in that event
- (i.e. implements & responds to #handlesXXX with true)
- THEN send the event to the delegate, passing the original view
- as additional argument
+ - if the destination view has a delegate,
+ AND its a keyboard, button or pointer event,
+ AND the delegate is interested in that event
+ (i.e. implements & responds to #handlesXXX with true)
+ THEN send the event to the delegate, passing the original view
+ as additional argument
- - if the view has a nonNil controller,
- AND its a key, button or pointer event,
- THEN send the event to the controller
+ - if the view has a nonNil controller,
+ AND its a key, button or pointer event,
+ THEN send the event to the controller
- - otherwise send the event to the view
+ - otherwise send the event to the view
If the view has a non-nil transformation, the event is sent as a
@@ -85,29 +85,35 @@
Therefore, for a delegated keyPress messages, the flow is:
- sendEvent
- view has delegate
- ------> ask delegate via 'handlesKeyPress:key inView:view'
- <------ returns true
- ------> 'delegate keyPress:key x:x y:y view:view'
- -----> delegate does whatever it wants to do
- (typically sends the event to some other view)
+ sendEvent
+ view has delegate
+ ------> ask delegate via 'handlesKeyPress:key inView:view'
+ <------ returns true
+ ------> 'delegate keyPress:key x:x y:y view:view'
+ -----> delegate does whatever it wants to do
+ (typically sends the event to some other view)
for an undelegated message:
- sendEvent
- view has delegate
- ------> ask delegate via 'handlesKeyPress:key inView:view'
- <------ returns false
- view has controller
- ------> 'controller keyPress:key x:x y:y'
- view has no controller
- view has transformation
- ----> 'view deviceKeyPress:key x:x y:y'
- inverse transform x/y
- ----> 'self keyPress:key x:xLogical y:yLogical'
- view has no transformation
- ----> 'view keyPress:key x:x y:y'
+ sendEvent
+ view has delegate
+ ------> ask delegate via 'handlesKeyPress:key inView:view'
+ <------ returns false
+ view has controller
+ ------> 'controller keyPress:key x:x y:y'
+ view has no controller
+ view has transformation
+ ----> 'view deviceKeyPress:key x:x y:y'
+ inverse transform x/y
+ ----> 'self keyPress:key x:xLogical y:yLogical'
+ view has no transformation
+ ----> 'view keyPress:key x:x y:y'
+
+ [see also:]
+ WindowGroup WindowSensor
+ DeviceWorkstation View
+ KeyboardMap KeyboardForwarder EventListener
+
"
! !
@@ -499,5 +505,5 @@
!WindowEvent class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/WindowEvent.st,v 1.25 1996-03-07 13:59:00 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/WindowEvent.st,v 1.26 1996-04-23 19:56:12 cg Exp $'
! !
--- a/WindowGroup.st Tue Apr 23 21:41:54 1996 +0200
+++ b/WindowGroup.st Tue Apr 23 21:57:07 1996 +0200
@@ -155,7 +155,8 @@
doc/online directory.
[see also:]
- WindowSensor DeviceWorkstation
+ WindowSensor EventListener KeyboardForwarder
+ DeviceWorkstation
Process ProcessorScheduler
View StandardSystemView
ApplicationModel
@@ -1288,6 +1289,6 @@
!WindowGroup class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/WindowGroup.st,v 1.75 1996-04-23 19:40:52 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/WindowGroup.st,v 1.76 1996-04-23 19:57:07 cg Exp $'
! !
WindowGroup initialize!
--- a/WindowSensor.st Tue Apr 23 21:41:54 1996 +0200
+++ b/WindowSensor.st Tue Apr 23 21:57:07 1996 +0200
@@ -61,9 +61,9 @@
a so-called 'eventListener' to get the event before it is entered into
the queue. There are 3 possible listening hooks available:
- a global EventListener - gets keybd/mouse events for all views
- a per-sensor eventListener - gets only keybd/mouse events for this sensors wGroup
- a per-sensor keyboardListener - only gets keyboard events for this sensors wGroup
+ a global EventListener - gets keybd/mouse events for all views
+ a per-sensor eventListener - gets only keybd/mouse events for this sensors wGroup
+ a per-sensor keyboardListener - only gets keyboard events for this sensors wGroup
(actually, there are two more mechanisms, event delegation which allows
delegation of key- and buttonEvents of a specific view,
@@ -87,85 +87,91 @@
Read the documentation in WindowEvent for more info.
- instance variables:
- eventSemaphore <Semaphore> the semaphore to be signalled when an event
- (or damage) arrives
+ [instance variables:]
+ eventSemaphore <Semaphore> the semaphore to be signalled when an event
+ (or damage) arrives
- damage <Collection> collection of damage events
+ damage <Collection> collection of damage events
- mouseAndKeyboard <Collection> collection of user events
+ mouseAndKeyboard <Collection> collection of user events
- compressMotionEvents <Boolean> if true, multiple motion events are
- compressed to one event. If false, each
- event is handled individual.
- (should be set to false when doing free-hand drawing)
+ compressMotionEvents <Boolean> if true, multiple motion events are
+ compressed to one event. If false, each
+ event is handled individual.
+ (should be set to false when doing free-hand drawing)
- ignoreUserInput <Boolean> if true, key & button events are ignored
- (usually set to true by WindowGroup, while a
- modalbox covers a view)
+ ignoreUserInput <Boolean> if true, key & button events are ignored
+ (usually set to true by WindowGroup, while a
+ modalbox covers a view)
- shiftDown <Boolean> true while shift/meta/control-key is pressed
- metaDown (to support ST-80 style query: sensor shiftDown)
- ctrlDown
- altDown (notice, that on most systems, alt and meta key is
- the same, both reported as #Alt)
+ shiftDown <Boolean> true while shift/meta/control-key is pressed
+ metaDown (to support ST-80 style query: sensor shiftDown)
+ ctrlDown
+ altDown (notice, that on most systems, alt and meta key is
+ the same, both reported as #Alt)
- exposeEventSemaphore <Semaphore> X-special: semaphore to be signalled when
- expose event arrives after a copyArea.
+ exposeEventSemaphore <Semaphore> X-special: semaphore to be signalled when
+ expose event arrives after a copyArea.
- catchExpose <Boolean> true, while waiting for an expose event
- (after a copyArea)
+ catchExpose <Boolean> true, while waiting for an expose event
+ (after a copyArea)
- gotExpose <Boolean> set to true, when an expose event arrives
- (after a copyarea)
+ gotExpose <Boolean> set to true, when an expose event arrives
+ (after a copyarea)
- gotOtherEvent <Boolean> set to true if other events arrive while
- waiting for expose (after a copyarea).
+ gotOtherEvent <Boolean> set to true if other events arrive while
+ waiting for expose (after a copyarea).
- translateKeyboardEvents <Boolean> if true, keyboard events are translated via
- the devices leyboardMap; if false, they
- are reported as raw-keys. Default is true.
+ translateKeyboardEvents <Boolean> if true, keyboard events are translated via
+ the devices leyboardMap; if false, they
+ are reported as raw-keys. Default is true.
- eventListener <Object> if non nil, this one will get all pointer
- and keyboard events for this sensors views first.
- If it returns true, the event is supposed to
- be already handled by the listener and not sent to
- the view. If false, the event is handled as usual.
- This allows applications to catch events for any of
- its views.
+ eventListener <Object> if non nil, this one will get all pointer
+ and keyboard events for this sensors views first.
+ If it returns true, the event is supposed to
+ be already handled by the listener and not sent to
+ the view. If false, the event is handled as usual.
+ This allows applications to catch events for any of
+ its views.
- keyboardListener <Object> if non nil, this one will get all keyboard events
- for this sensors views first (but after the eventListener,
- if any).
- If it returns true, the event is supposed to
- be already handled by the listener and not sent to
- the view. If false, the event is handled as usual.
- This allows applications to catch events for any of
- its views.
- ApplicationModels can catch keyboard input with:
- postOpenWith:aBuilder
- aBuilder window sensor keyboardListener:self
+ keyboardListener <Object> if non nil, this one will get all keyboard events
+ for this sensors views first (but after the eventListener,
+ if any).
+ If it returns true, the event is supposed to
+ be already handled by the listener and not sent to
+ the view. If false, the event is handled as usual.
+ This allows applications to catch events for any of
+ its views.
+ ApplicationModels can catch keyboard input with:
+ postOpenWith:aBuilder
+ aBuilder window sensor keyboardListener:self
- class variables:
+ [class variables:]
- ControlCEnabled <Boolean> if true (which is the default) Control-C
- will interrupt the process handling the
- view.
- For secure stand-alone applications,
- this can be set to false, in which case
- Control-C does NOT interrupt the process.
+ ControlCEnabled <Boolean> if true (which is the default) Control-C
+ will interrupt the process handling the
+ view.
+ For secure stand-alone applications,
+ this can be set to false, in which case
+ Control-C does NOT interrupt the process.
- EventListener <Object> if non nil, this one will get all pointer
- and keyboard events for ALL views first.
- If it returns true, the event is supposed to
- be already handled by the listener and not enqueued.
- If false, the event is handled as usual.
- This allows overall event catchers to be
- installed for example to implement event
- recorders, active help managers etc.
+ EventListener <Object> if non nil, this one will get all pointer
+ and keyboard events for ALL views first.
+ If it returns true, the event is supposed to
+ be already handled by the listener and not enqueued.
+ If false, the event is handled as usual.
+ This allows overall event catchers to be
+ installed for example to implement event
+ recorders, active help managers etc.
- ComposeTable <Array> compose-key translation table
+ ComposeTable <Array> compose-key translation table
+
+
+ [see also:]
+ WindowGroup
+ WindowEvent KeyboardMap KeyboardForwarder EventListener
+ DeviceWorkstation View
"
! !
@@ -1792,6 +1798,6 @@
!WindowSensor class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/WindowSensor.st,v 1.51 1996-04-22 14:23:27 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/WindowSensor.st,v 1.52 1996-04-23 19:56:32 cg Exp $'
! !
WindowSensor initialize!