WindowSensor.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 06 Sep 2017 10:04:18 +0200
branchjv
changeset 8180 25149dfd68e0
parent 7855 46203abe7d57
permissions -rw-r--r--
Build files: removed a bunch of make rules for long-dead unsupported systems ...in order to unify and simplify the build. If a need to support this ancient systems arose, these hacks may ni longer be needed (due to new versions of tools) or the hacks would have to be written again (better) or retrieved from SCM (worse). Time will show.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
     1
"
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
     2
 COPYRIGHT (c) 1993 by Claus Gittinger
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
     3
              All Rights Reserved
26
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
     4
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
     5
 This software is furnished under a license and may be used
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
     6
 only in accordance with the terms of that license and with the
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
     8
 be provided or otherwise made available to, or used by, any
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
     9
 other person.  No title to or ownership of the software is
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
    10
 hereby transferred.
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
    11
"
3199
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    12
"{ Package: 'stx:libview' }"
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    13
6752
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
    14
"{ NameSpace: Smalltalk }"
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
    15
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    16
Object subclass:#WindowSensor
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
    17
	instanceVariableNames:'eventSemaphore damage mouseAndKeyboard compressMotionEvents
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
    18
		ignoreUserInput exposeEventSemaphore catchExpose gotExpose
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
    19
		gotOtherEvent translateKeyboardEvents shiftDown ctrlDown metaDown
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
    20
		altDown leftButtonDown middleButtonDown rightButtonDown
5763
021b6d99feec class definition
Claus Gittinger <cg@exept.de>
parents: 5762
diff changeset
    21
		eventListeners ignoreExposeEvents damageEventAccessLock
6752
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
    22
		userEventAccessLock gotCompose compose1 collectedMouseWheelMotion'
5992
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
    23
	classVariableNames:'ControlCEnabled ControlYEnabled ControlPeriodEnabled ComposeTable
6752
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
    24
		EventListeners MouseWheelThreshold MouseWheelScale'
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
    25
	poolDictionaries:''
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
    26
	category:'Interface-Support-UI'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    27
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    28
1082
44d671491f5e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1063
diff changeset
    29
!WindowSensor class methodsFor:'documentation'!
46
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    30
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    31
copyright
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    32
"
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    33
 COPYRIGHT (c) 1993 by Claus Gittinger
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
    34
              All Rights Reserved
46
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    35
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    36
 This software is furnished under a license and may be used
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    37
 only in accordance with the terms of that license and with the
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    38
 inclusion of the above copyright notice.   This software may not
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    39
 be provided or otherwise made available to, or used by, any
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    40
 other person.  No title to or ownership of the software is
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    41
 hereby transferred.
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    42
"
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    43
!
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    44
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    45
documentation
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
    46
"
72
3e84121988c3 *** empty log message ***
claus
parents: 66
diff changeset
    47
    Instances of this class keep track of events and damage areas for a group of 
3e84121988c3 *** empty log message ***
claus
parents: 66
diff changeset
    48
    views. All incoming expose rectangles and events (from Workstation) are 
144
claus
parents: 140
diff changeset
    49
    collected here, until someone (usually the windowGroup process)
claus
parents: 140
diff changeset
    50
    gets a chance to handle them. 
claus
parents: 140
diff changeset
    51
    In contrast to ST-80 (which has one windowSensor per window), ST/X usually
claus
parents: 140
diff changeset
    52
    only assigns one sensor per windowGroup.
157
claus
parents: 154
diff changeset
    53
    (however, you could manually arrange for per view private sensors
claus
parents: 154
diff changeset
    54
     - at least, theoretically)
144
claus
parents: 140
diff changeset
    55
72
3e84121988c3 *** empty log message ***
claus
parents: 66
diff changeset
    56
    When adding an expose rectangle, WindowSensor tries to merge the rectangle 
3e84121988c3 *** empty log message ***
claus
parents: 66
diff changeset
    57
    with the list of existing damages to minimize redrawing.
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
    58
158
claus
parents: 157
diff changeset
    59
    Processing of compose key sequences is done here; if a Compose
claus
parents: 157
diff changeset
    60
    key event arrives, the following 2 characters are used to search an
claus
parents: 157
diff changeset
    61
    entry in the composeTable, and are replaced by the character found there.
claus
parents: 157
diff changeset
    62
    For example, pressing Compose-a-` gives the french a-accent-grave character;
claus
parents: 157
diff changeset
    63
    pressing Compose-a-e gives the ae ligature.
claus
parents: 157
diff changeset
    64
144
claus
parents: 140
diff changeset
    65
    Beside the above, windowSensors provide facilities (hooks) to allow
3199
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    66
    so-called 'eventListeners' to get the event before it is entered into
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    67
    the queue. There are 4 possible listening hooks available:
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    68
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    69
        global EventListener - get keybd/mouse/focus/enter-leave events for all views and all displays
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    70
        per-display eventListener - gets only keybd/mouse/focus/enter-leave events for one display (see GraphicsDevice)
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    71
        per-sensor eventListener - gets only keybd/mouse/focus/enter-leave events for this sensors windowGroup
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
    72
        per-sensor keyboardListener - only gets keyboard events for this sensors windowGroup
144
claus
parents: 140
diff changeset
    73
172
claus
parents: 158
diff changeset
    74
    (actually, there are two more mechanisms, event delegation which allows
claus
parents: 158
diff changeset
    75
     delegation of key- and buttonEvents of a specific view,
claus
parents: 158
diff changeset
    76
     and per-windowGroup eventHooks)
144
claus
parents: 140
diff changeset
    77
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    78
    Global eventListeners are installed via a class method (addEventListener:) to
144
claus
parents: 140
diff changeset
    79
    the WindowSensor class; local listeners are installed via instance methods.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    80
    A listener may return true to signal that it has handled the event and that the
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    81
    event should NOT be enqueued. 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    82
    Likewise, if it returns false, the event is processed as usual 
7708
b5422dfa6526 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7664
diff changeset
    83
    (i.e. enqueued and forwarded to the view's controller).
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    84
    If there are multiple listeners, all of them get a chance to process the event,
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    85
    but it will not be enqueued, if any returned true.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    86
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    87
    The global listeners are called before any local listener, which are called
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    88
    before any keyboard listeners. 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    89
    If any listener-group has eaten the event, later (local) listeners wont get the event.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    90
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    91
    EventListeners have been added to allow the implementation of event recorders,
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    92
    screen savers or other spy functionality. 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    93
    They also allow hooking up views which otherwise insist on doing things themself.
144
claus
parents: 140
diff changeset
    94
claus
parents: 140
diff changeset
    95
    Notice, that beside event listening, you can also define a delegate for
claus
parents: 140
diff changeset
    96
    a views keyboard and button events. 
claus
parents: 140
diff changeset
    97
    Read the documentation in WindowEvent for more info.
claus
parents: 140
diff changeset
    98
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
    99
    NOTICE: in previous releases, only one listener was allowed, which was notified
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   100
    via #buttonPress/#buttonRelease ... invocations.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   101
    We have changed this to allow multiple handlers, and also to pass the event to a single
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   102
    #handleEvent method.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   103
    The old mechanism is kept for a while for backward compatibility, but will eventually
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   104
    vanish.
144
claus
parents: 140
diff changeset
   105
598
1a2339e902d4 commentary
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   106
    [instance variables:]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   107
        eventSemaphore          <Semaphore>     the semaphore to be signalled when an event
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   108
                                                (or damage) arrives
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   109
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   110
        damage                  <Collection>    collection of damage events
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   111
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   112
        mouseAndKeyboard        <Collection>    collection of user events
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   113
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   114
        compressMotionEvents    <Boolean>       if true, multiple motion events are
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   115
                                                compressed to one event. If false, each
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   116
                                                event is handled individual.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   117
                                                (should be set to false when doing free-hand drawing)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   118
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   119
        ignoreUserInput         <Boolean>       if true, key & button events are ignored
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   120
                                                (usually set to true by WindowGroup, while a
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   121
                                                 modalbox covers a view)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   122
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   123
        shiftDown               <Boolean>       true while shift/meta/control-key is pressed
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   124
        metaDown                                (to support ST-80 style query: sensor shiftDown)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   125
        ctrlDown
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   126
        altDown                                 (notice, that on most systems, alt and meta key is
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   127
                                                 the same, both reported as #Alt)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   128
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   129
        exposeEventSemaphore    <Semaphore>     X-special: semaphore to be signalled when
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   130
                                                expose event arrives after a copyArea.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   131
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   132
        catchExpose             <SetOfView>     if nonEMpty, the drawables which wait for
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   133
                                                an expose/noExpose event.  (after a copyArea)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   134
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   135
        gotExpose               <SetOfView>     the set of drawables which got an expose/noExpose
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   136
                                                event.  (after a copyarea)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   137
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   138
        gotOtherEvent           <SetOfView>     set of drawables which received if other events,
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   139
                                                while waiting for expose (after a copyarea).
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   140
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   141
        translateKeyboardEvents <Boolean>       if true, keyboard events are translated via
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   142
                                                the devices leyboardMap; if false, they
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   143
                                                are reported as raw-keys. Default is true.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   144
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   145
        eventListener           <Object>        if non nil, this one will get all pointer
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   146
        OBSOLETE - will vanish                  and keyboard events for this sensors views first.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   147
                                                If it returns true, the event is supposed to
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   148
                                                be already handled by the listener and not sent to
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   149
                                                the view. If false, the event is handled as usual.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   150
                                                This allows applications to catch events for any of
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   151
                                                its views.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   152
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   153
        keyboardListener        <Object>        if non nil, this one will get all keyboard events 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   154
        OBSOLETE - will vanish                  for this sensors views first (but after the eventListener,
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   155
                                                if any).
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   156
                                                If it returns true, the event is supposed to
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   157
                                                be already handled by the listener and not sent to
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   158
                                                the view. If false, the event is handled as usual.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   159
                                                This allows applications to catch events for any of
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   160
                                                its views.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   161
                                                ApplicationModels can catch keyboard input with:
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   162
                                                    postOpenWith:aBuilder
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   163
                                                        aBuilder window sensor keyboardListener:self
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   164
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   165
        eventListeners          <Collection>    Collection of new event listeners.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   166
                                                Each will be sent a #handleEvent: message.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   167
                                                The event will not be enqueued, if any returns
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   168
                                                true.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   169
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   170
        keyboardListeners       <Collection>    Collection of new event listeners.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   171
                                                Each will be sent a #handleEvent: message.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   172
                                                The event will not be enqueued, if any returns
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   173
                                                true.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   174
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   175
        accessLock              <Semaphore>     controls access to the event queues
140
claus
parents: 133
diff changeset
   176
598
1a2339e902d4 commentary
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   177
    [class variables:]
140
claus
parents: 133
diff changeset
   178
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   179
        ControlCEnabled         <Boolean>       if true (which is the default) Control-C
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   180
                                                will interrupt the process handling the
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   181
                                                view.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   182
                                                For secure stand-alone applications,
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   183
                                                this can be set to false, in which case 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   184
                                                Control-C does NOT interrupt the process.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   185
                                                (actually, Control-C is wrong here; the actual
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   186
                                                 key is #UserInterrupt, which may be mapped onto
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   187
                                                 any key)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   188
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   189
        ControlYEnabled         <Boolean>       if true (which is the default) Control-Y
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   190
                                                will raise the abortSignal in the process 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   191
                                                handling the view.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   192
                                                This can be used to abort a long operation
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   193
                                                (such as a long fileRead in the fileBrowser)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   194
                                                without entering the debugger.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   195
                                                (actually, Control-Y is wrong here; the actual
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   196
                                                 key is #UserAbort, which may be mapped onto
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   197
                                                 any key)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   198
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   199
        EventListener           <Object>        if non nil, this one will get all pointer
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   200
        OBSOLETE - will vanish                  and keyboard events for ALL views first.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   201
                                                If it returns true, the event is supposed to
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   202
                                                be already handled by the listener and not enqueued. 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   203
                                                If false, the event is handled as usual.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   204
                                                This allows overall event catchers to be
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   205
                                                installed for example to implement event
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   206
                                                recorders, active help managers etc.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   207
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   208
        EventListeners          <Collection>    Collection of new event listeners.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   209
                                                Each will be sent a #handleEvent: message.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   210
                                                The event will not be enqueued, if any returns
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   211
                                                true.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   212
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   213
        ComposeTable            <Array>         compose-key translation table
598
1a2339e902d4 commentary
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   214
1a2339e902d4 commentary
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   215
612
8758d0c9933e documentation
Claus Gittinger <cg@exept.de>
parents: 608
diff changeset
   216
    [author:]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   217
        Claus Gittinger
612
8758d0c9933e documentation
Claus Gittinger <cg@exept.de>
parents: 608
diff changeset
   218
598
1a2339e902d4 commentary
Claus Gittinger <cg@exept.de>
parents: 581
diff changeset
   219
    [see also:]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   220
        WindowGroup 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   221
        WindowEvent KeyboardMap KeyboardForwarder EventListener
3199
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
   222
        GraphicsDevice DeviceWorkstation View
46
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
   223
"
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
   224
! !
7b331e9012fd *** empty log message ***
claus
parents: 28
diff changeset
   225
1082
44d671491f5e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1063
diff changeset
   226
!WindowSensor class methodsFor:'initialization'!
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
   227
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
   228
initialize
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   229
    "initialize the classes constants"
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   230
81
4ba554473294 *** empty log message ***
claus
parents: 78
diff changeset
   231
    ControlCEnabled := true.
2123
b2dae4453526 added additional key: #UserAbort (CTRL-y),
Claus Gittinger <cg@exept.de>
parents: 2090
diff changeset
   232
    ControlYEnabled := true.
5992
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   233
    ControlPeriodEnabled := true.
158
claus
parents: 157
diff changeset
   234
386
f9a80cac659e only init once
Claus Gittinger <cg@exept.de>
parents: 371
diff changeset
   235
    ComposeTable isNil ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
   236
        self initializeComposeKeyTable
6752
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   237
    ].
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   238
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   239
    MouseWheelScale := UserPreferences current mouseWheelScale.
157
claus
parents: 154
diff changeset
   240
claus
parents: 154
diff changeset
   241
    "
claus
parents: 154
diff changeset
   242
     WindowSensor initialize
claus
parents: 154
diff changeset
   243
    "
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   244
2123
b2dae4453526 added additional key: #UserAbort (CTRL-y),
Claus Gittinger <cg@exept.de>
parents: 2090
diff changeset
   245
    "Modified: / 20.5.1998 / 14:01:52 / cg"
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   246
!
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   247
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   248
initializeComposeKeyTable
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   249
    "setup the composeKey table"
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   250
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   251
    ComposeTable := #(
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   252
        "/ format is:
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   253
        "/ ( key1 key2 <character or asciiValue> )
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   254
        "/
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   255
        ($+ $+ $#)         "/ number-sign
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   256
        ($A $A $@)         "/ at-sign
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   257
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   258
        ($( $- ${)         "/ left curly brace
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   259
        ($- $( ${)         "/ left curly brace
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   260
        ($) $- $})         "/ right curly brace
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   261
        ($- $) $})         "/ right curly brace
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   262
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   263
        ($!! $!! 16rA1)      "/ !!-inverted       
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   264
        ($| $c 16rA2)      "/ cent-sign 
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   265
        ($c $| 16rA2)      "/ cent-sign 
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   266
        ($| $S $$)         "/ dollar-sign
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   267
        ($S $| $$)         "/ dollar-sign
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   268
        ($= $L 16rA3)      "/ pound-sign     
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   269
        ($L $= 16rA3)      "/ pound-sign     
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   270
        ($= $C 16rA4)      "/ euro-sign (In ISO-8859-15 alias Latin9 alias Latin0)    
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   271
        ($C $= 16rA4)      "/ euro-sign (In ISO-8859-15 alias Latin9 alias Latin0)    
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   272
        ($= $Y 16rA5)      "/ yen-sign                               
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   273
        ($Y $= 16rA5)      "/ yen-sign        
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   274
        ($| $| 16rA6)      "/ broken vertical bar
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   275
        ($!! $^ 16rA6)      "/ broken vertical bar
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   276
        ($^ $!! 16rA6)      "/ broken vertical bar
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   277
        ($!! $s 16rA7)      "/ section-sign    
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   278
        ($s $!! 16rA7)      "/ section-sign    
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   279
        ($" $" 16rA8)      "/ diaresis
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   280
        ($O $C 16rA9)      "/ copyright                        
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   281
        ($C $O 16rA9)      "/ copyright                        
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   282
        ($o $c 16rA9)      "/ copyright                        
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   283
        ($c $o 16rA9)      "/ copyright                        
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   284
        ($< $< 16rAB)      "/ french <<-quotes 
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   285
        ($- $, 16rAC)      "/ logical not       
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   286
        ($, $- 16rAC)      "/ logical not       
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   287
        ($O $R 16rAE)      "/ registered       
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   288
        ($R $O 16rAE)      "/ registered                   
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   289
        ($^ $0 16rB0)      "/ degree sign      
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   290
        ($+ $- 16rB1)      "/ plus-minus       
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   291
        ($- $+ 16rB1)      "/ plus-minus       
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   292
        ($^ $2 16rB2)      "/ superscript-2    
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   293
        ($^ $3 16rB3)      "/ superscript-3    
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   294
        ($/ $u 16rB5)      "/ greek mu                        
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   295
        ($u $/ 16rB5)      "/ greek mu                        
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   296
        ($!! $p 16rB6)      "/ paragraph sign                        
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   297
        ($p $!! 16rB6)      "/ paragraph sign   
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   298
        ($^ $. 16rB7)      "/ middle dot       
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   299
        ($^ $1 16rB9)      "/ superscript-1    
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   300
        ($> $> 16rBB)      "/ french >> quotes 
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   301
        ($1 $4 16rBC)      "/ 1/4              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   302
        ($1 $2 16rBD)      "/ 1/2              
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   303
        ($3 $4 16rBE)      "/ 3/4                          
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   304
        ($? $? 16rBF)      "/ ?-inverted       
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   305
        ($- $: 16rF7)      "/ divide           
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   306
        ($: $- 16rF7)      "/ divide           
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   307
        ($x $x 16rD7)      "/ multiply           
7376
72dd8ef02f7b #FEATURE by mawalch
mawalch
parents: 7329
diff changeset
   308
        ($, $" 16r201E)    "/ german opening quote
72dd8ef02f7b #FEATURE by mawalch
mawalch
parents: 7329
diff changeset
   309
        ($< $" 16r201C)    "/ german closing quote
72dd8ef02f7b #FEATURE by mawalch
mawalch
parents: 7329
diff changeset
   310
"/        ($- $- $. 16r2013) "/ slightly longer dash (double length) 
72dd8ef02f7b #FEATURE by mawalch
mawalch
parents: 7329
diff changeset
   311
"/        ($- $- $- 16r2013) "/ longer dash (fourfold length) 
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   312
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   313
        "/ diacriticals: Compose diacrit character
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   314
        "/ grave
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   315
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   316
        ($A $` 16rC0)      "/ A-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   317
        ($a $` 16rE0)      "/ a-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   318
        ($E $` 16rC8)      "/ E-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   319
        ($e $` 16rE8)      "/ e-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   320
        ($I $` 16rCC)      "/ I-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   321
        ($i $` 16rEC)      "/ i-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   322
        ($O $` 16rD2)      "/ O-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   323
        ($o $` 16rF2)      "/ o-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   324
        ($U $` 16rD9)      "/ U-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   325
        ($u $` 16rF9)      "/ u-`              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   326
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   327
        ($` $A 16rC0)      "/ `-A              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   328
        ($` $a 16rE0)      "/ `-a              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   329
        ($` $E 16rC8)      "/ `-E              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   330
        ($` $e 16rE8)      "/ `-e              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   331
        ($` $I 16rCC)      "/ `-I              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   332
        ($` $i 16rEC)      "/ `-i              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   333
        ($` $O 16rD2)      "/ `-O              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   334
        ($` $o 16rF2)      "/ `-o              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   335
        ($` $U 16rD9)      "/ `-U              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   336
        ($` $u 16rF9)      "/ `-u
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   337
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   338
        "/ acute
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   339
        ($A $' 16rC1)      "/ A-'             
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   340
        ($a $' 16rE1)      "/ a-'             
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   341
        ($E $' 16rC9)      "/ E-'            
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   342
        ($e $' 16rE9)      "/ e-'           
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   343
        ($I $' 16rCD)      "/ I-'          
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   344
        ($i $' 16rED)      "/ i-'         
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   345
        ($O $' 16rD3)      "/ O-'        
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   346
        ($o $' 16rF3)      "/ o-'       
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   347
        ($U $' 16rDA)      "/ U-'      
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   348
        ($u $' 16rFA)      "/ u-'     
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   349
        ($Y $' 16rDD)      "/ Y-'    
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   350
        ($y $' 16rFD)      "/ y-'           
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   351
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   352
        ($' $A 16rC1)      "/ '-A             
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   353
        ($' $a 16rE1)      "/ '-a             
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   354
        ($' $E 16rC9)      "/ '-E            
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   355
        ($' $e 16rE9)      "/ '-e           
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   356
        ($' $I 16rCD)      "/ '-I          
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   357
        ($' $i 16rED)      "/ '-i         
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   358
        ($' $O 16rD3)      "/ '-O        
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   359
        ($' $o 16rF3)      "/ '-o       
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   360
        ($' $U 16rDA)      "/ '-U      
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   361
        ($' $u 16rFA)      "/ '-u     
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   362
        ($' $Y 16rDD)      "/ '-Y    
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   363
        ($' $y 16rFD)      "/ '-y   
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   364
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   365
        "/ circumflex
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   366
        ($A $^ 16rC2)      "/ A-^              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   367
        ($a $^ 16rE2)      "/ a-^             
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   368
        ($E $^ 16rCA)      "/ E-^            
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   369
        ($e $^ 16rEA)      "/ e-^           
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   370
        ($I $^ 16rCE)      "/ I-^          
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   371
        ($i $^ 16rEE)      "/ i-^         
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   372
        ($O $^ 16rD4)      "/ O-^        
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   373
        ($o $^ 16rF4)      "/ o-^       
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   374
        ($U $^ 16rDB)      "/ U-^      
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   375
        ($u $^ 16rFB)      "/ u-^     
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   376
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   377
        ($^ $A 16rC2)      "/ ^-A              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   378
        ($^ $a 16rE2)      "/ ^-a             
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   379
        ($^ $E 16rCA)      "/ ^-E            
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   380
        ($^ $e 16rEA)      "/ ^-e           
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   381
        ($^ $I 16rCE)      "/ ^-I          
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   382
        ($^ $i 16rEE)      "/ ^-i         
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   383
        ($^ $O 16rD4)      "/ ^-O        
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   384
        ($^ $o 16rF4)      "/ ^-o       
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   385
        ($^ $U 16rDB)      "/ ^-U      
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   386
        ($^ $u 16rFB)      "/ ^-u     
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   387
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   388
        "/ tilde
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   389
        ($A $~ 16rC3)      "/ A-~              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   390
        ($a $~ 16rE3)      "/ a-~             
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   391
        ($O $~ 16rD5)      "/ O-~            
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   392
        ($o $~ 16rF5)      "/ o-~           
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   393
        ($N $~ 16rD1)      "/ N-~      
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   394
        ($n $~ 16rF1)      "/ n-~         
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   395
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   396
        ($~ $A 16rC3)      "/ ~-A              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   397
        ($~ $a 16rE3)      "/ ~-a             
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   398
        ($~ $O 16rD5)      "/ ~-O            
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   399
        ($~ $o 16rF5)      "/ ~-o           
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   400
        ($~ $N 16rD1)      "/ ~-N      
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   401
        ($~ $n 16rF1)      "/ ~-n         
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   402
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   403
        "/ ring above
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   404
        ($a $* 16rE5)      "/ a-*              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   405
        ($A $* 16rC5)      "/ A-*             
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   406
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   407
        ($* $a 16rE5)      "/ *-a              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   408
        ($* $A 16rC5)      "/ *-A             
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   409
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   410
        "/ cedille
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   411
        ($C $, 16rC7)      "/ C-,              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   412
        ($c $, 16rE7)      "/ c-,             
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   413
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   414
        ($, $C 16rC7)      "/ ,-C              
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   415
        ($, $c 16rE7)      "/ ,-c             
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   416
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   417
        "/ dieresis
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   418
        ($A $" 16rC4)      "/ A-"              
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   419
        ($a $" 16rE4)      "/ a-"             
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   420
        ($E $" 16rCB)      "/ E-"            
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   421
        ($e $" 16rEB)      "/ e-"           
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   422
        ($I $" 16rCF)      "/ I-"          
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   423
        ($i $" 16rEF)      "/ i-"         
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   424
        ($O $" 16rD6)      "/ O-"        
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   425
        ($o $" 16rF6)      "/ o-"       
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   426
        ($U $" 16rDC)      "/ U-"      
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   427
        ($u $" 16rFC)      "/ u-"     
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   428
        ($y $" 16rFF)      "/ y-"    
4066
0855c2c499c6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4065
diff changeset
   429
        ($Y $" 16r178)     "/ Y-"    
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   430
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   431
        ($" $A 16rC4)      "/ "-A             
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   432
        ($" $a 16rE4)      "/ "-a             
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   433
        ($" $E 16rCB)      "/ "-E            
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   434
        ($" $e 16rEB)      "/ "-e           
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   435
        ($" $I 16rCF)      "/ "-I          
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   436
        ($" $i 16rEF)      "/ "-i         
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   437
        ($" $O 16rD6)      "/ "-O        
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   438
        ($" $o 16rF6)      "/ "-o       
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   439
        ($" $U 16rDC)      "/ "-U      
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   440
        ($" $u 16rFC)      "/ "-u     
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   441
        ($" $y 16rFF)      "/ "-y    
4066
0855c2c499c6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4065
diff changeset
   442
        ($" $Y 16r178)     "/ Y-"    
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   443
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   444
        "/ slashed
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   445
        ($o $/ 16rF8)      "/ o-/        
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   446
        ($O $/ 16rD8)      "/ O-/    
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   447
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   448
        ($/ $o 16rF8)      "/ /-o                                     
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   449
        ($/ $O 16rD8)      "/ /-O  
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   450
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   451
        "/ ligatures
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   452
        ($s $s 16rDF)      "/ german sz        
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
   453
        ($a $e 16rE6)      "/ (french) ae     
4063
67fcc4362f09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4053
diff changeset
   454
        ($A $E 16rC6)      "/ (french) AE
67fcc4362f09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4053
diff changeset
   455
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   456
        "/ latin2 (much more needed here):                                        
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   457
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   458
        ($A $, 16r104)     "/ A-,
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   459
        ($a $, 16r105)     "/ a-,
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   460
        ($E $, 16r118)     "/ E-,
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   461
        ($e $, 16r119)     "/ e-,
4063
67fcc4362f09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4053
diff changeset
   462
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   463
        ($C $' 16r106)     "/ C-'
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   464
        ($c $' 16r107)     "/ c-'
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   465
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   466
        ($a $- 16r101)     "/ a--   (macron - line above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   467
        ($A $- 16r100)     "/ A--   (line above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   468
        ($E $- 16r112)     "/ E--   (line above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   469
        ($e $- 16r113)     "/ e--   (line above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   470
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   471
        ($D $- 16r110)     "/ D--   (strikeout)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   472
        ($d $- 16r111)     "/ d--   (strikeout)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   473
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   474
        ($C $. 16r10A)     "/ C-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   475
        ($c $. 16r10B)     "/ c-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   476
        ($E $. 16r116)     "/ E-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   477
        ($e $. 16r117)     "/ e-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   478
        ($G $. 16r120)     "/ G-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   479
        ($g $. 16r121)     "/ g-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   480
        ($I $. 16r130)     "/ I-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   481
        ($i $. 16r131)     "/ i-.   (missing dot above !!)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   482
        ($Z $. 16r17B)     "/ z-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   483
        ($z $. 16r17C)     "/ z-.   (dot above)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   484
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   485
        ($L $. 16r13F)     "/ L-.   (dot after)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   486
        ($l $. 16r140)     "/ l-.   (dot after)
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   487
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   488
        ($C $^ 16r108)     "/ C-^   (circonflex above)
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   489
        ($c $^ 16r109)     "/ c-^
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   490
        ($G $^ 16r11C)     "/ G-^   
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   491
        ($g $^ 16r11D)     "/ g-^                                
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   492
        ($H $^ 16r124)     "/ H-^                                     
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   493
        ($h $^ 16r125)     "/ h-^
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   494
        ($J $^ 16r134)     "/ J-^   
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   495
        ($j $^ 16r135)     "/ j-^
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   496
        ($S $^ 16r15C)     "/ S-^ 
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   497
        ($s $^ 16r15D)     "/ s-^
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   498
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   499
        ($A $u 16r102)     "/ A-u    breve
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   500
        ($a $u 16r103)     "/ a-u  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   501
        ($E $u 16r114)     "/ E-u  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   502
        ($e $u 16r115)     "/ e-u  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   503
        ($G $u 16r11E)     "/ G-u  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   504
        ($g $u 16r11F)     "/ g-u  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   505
        ($I $u 16r12C)     "/ I-u  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   506
        ($i $u 16r12D)     "/ i-u  
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   507
        ($L $u 16r13D)     "/ L-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   508
        ($l $u 16r13E)     "/ l-u  
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   509
        ($O $u 16r14E)     "/ O-u  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   510
        ($o $u 16r14F)     "/ o-u  
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   511
        ($R $u 16r158)     "/ R-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   512
        ($r $u 16r159)     "/ r-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   513
        ($T $u 16r164)     "/ T-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   514
        ($t $u 16r165)     "/ t-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   515
        ($U $u 16r16C)     "/ U-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   516
        ($u $u 16r16D)     "/ u-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   517
        ($Z $u 16r17D)     "/ Z-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   518
        ($z $u 16r17E)     "/ z-u  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   519
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   520
        ($A $v 16r1CD)     "/ A-v   caron 
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   521
        ($a $v 16r1CE)     "/ a-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   522
        ($C $v 16r10C)     "/ C-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   523
        ($c $v 16r10D)     "/ c-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   524
        ($D $v 16r10E)     "/ D-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   525
        ($d $v 16r10F)     "/ d-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   526
        ($E $v 16r11A)     "/ E-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   527
        ($e $v 16r11B)     "/ e-v  
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   528
        ($G $v 16r1E6)     "/ G-v  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   529
        ($g $v 16r1E7)     "/ g-v  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   530
        ($I $v 16r1CF)     "/ I-v  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   531
        ($i $v 16r1D0)     "/ i-v  
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   532
        ($K $v 16r1E8)     "/ K-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   533
        ($k $v 16r1E9)     "/ k-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   534
        ($L $v 16r13D)     "/ L-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   535
        ($l $v 16r13E)     "/ l-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   536
        ($N $v 16r147)     "/ N-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   537
        ($n $v 16r148)     "/ n-v  
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   538
        ($O $v 16r1D1)     "/ O-v  
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   539
        ($o $v 16r1D2)     "/ o-v  
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   540
        ($R $v 16r158)     "/ R-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   541
        ($r $v 16r159)     "/ r-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   542
        ($S $v 16r160)     "/ S-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   543
        ($s $v 16r161)     "/ s-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   544
        ($T $v 16r164)     "/ T-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   545
        ($t $v 16r165)     "/ t-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   546
        ($U $v 16r1D3)     "/ U-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   547
        ($u $v 16r1D4)     "/ u-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   548
        ($Z $v 16r17D)     "/ Z-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   549
        ($z $v 16r17E)     "/ z-v  
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   550
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   551
        ($O $E 16r152)      "/ (french) OE
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   552
        ($o $e 16r153)      "/ (french) oe     
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   553
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   554
        ($L $J 16r1C7)      "/ (dutch) LJ     
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   555
        ($L $j 16r1C8)      "/ (dutch) Lj     
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   556
        ($l $j 16r1C9)      "/ (dutch) lj
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   557
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   558
        ($N $J 16r1CA)      "/  NJ     
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   559
        ($N $j 16r1CB)      "/  Nj     
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   560
        ($n $j 16r1CC)      "/  nj
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   561
    ).
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   562
5484
957c27765fae changed: #initializeComposeKeyTable
Claus Gittinger <cg@exept.de>
parents: 5365
diff changeset
   563
    ComposeTable := ComposeTable 
957c27765fae changed: #initializeComposeKeyTable
Claus Gittinger <cg@exept.de>
parents: 5365
diff changeset
   564
                        collect:[:eachRow | 
957c27765fae changed: #initializeComposeKeyTable
Claus Gittinger <cg@exept.de>
parents: 5365
diff changeset
   565
                            eachRow collect:[:charOrCode | charOrCode asCharacter]].
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
   566
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
   567
    "                                   
4112
9a9cb393131a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4076
diff changeset
   568
     WindowSensor initializeComposeKeyTable              
3732
0eb1257c8067 more compose sequences
penk
parents: 3682
diff changeset
   569
    "                    
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   570
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   571
    "Created: 22.4.1996 / 14:06:43 / cg"
608
3370e1f983d4 o-slash compose sequence
Claus Gittinger <cg@exept.de>
parents: 598
diff changeset
   572
    "Modified: 24.4.1996 / 16:37:08 / cg"
6752
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   573
!
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   574
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   575
mouseWheelScale
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   576
    "if set, mouse wheel motions are scaled by this number"
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   577
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   578
    ^ MouseWheelScale ? 1
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   579
!
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   580
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   581
mouseWheelScale:aNumber
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   582
    "if set, mouse wheel motions are scaled by this number"
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   583
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   584
    MouseWheelScale := aNumber
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   585
!
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   586
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   587
mouseWheelThreshold
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   588
    "if set, mouse wheel motions are only reported if the scaled amount is above this"
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   589
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
   590
    ^ 10 / MouseWheelScale
140
claus
parents: 133
diff changeset
   591
! !
81
4ba554473294 *** empty log message ***
claus
parents: 78
diff changeset
   592
1082
44d671491f5e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1063
diff changeset
   593
!WindowSensor class methodsFor:'instance creation'!
140
claus
parents: 133
diff changeset
   594
claus
parents: 133
diff changeset
   595
new
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   596
    "return a new initialized instance"
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   597
140
claus
parents: 133
diff changeset
   598
    ^ self basicNew initialize
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   599
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
   600
    "Modified: 22.4.1996 / 16:19:40 / cg"
124
f5b3dd3d38db *** empty log message ***
claus
parents: 118
diff changeset
   601
! !
f5b3dd3d38db *** empty log message ***
claus
parents: 118
diff changeset
   602
1082
44d671491f5e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1063
diff changeset
   603
!WindowSensor class methodsFor:'accessing'!
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
   604
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   605
addEventListener:aListener
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   606
    "add a global eventListener (with new protocol - #handleEvent:)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   607
     This one gets a chance to intercept all events for ANY sensor
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   608
     (i.e. any view on any device).
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   609
     - see documentation for what this can be used for"
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   610
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   611
    EventListeners isNil ifTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   612
        EventListeners := OrderedCollection new:2
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   613
    ].
3488
b6605e20bfde *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3456
diff changeset
   614
    (EventListeners includesIdentical:aListener) ifFalse:[
3017
806f5d65a74b check whether listener already is registered
ca
parents: 3009
diff changeset
   615
        EventListeners add:aListener
806f5d65a74b check whether listener already is registered
ca
parents: 3009
diff changeset
   616
    ]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   617
!
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   618
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   619
composeTable
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   620
    "return the compose-key table.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   621
     Entries consist of 3-element arrays each, where
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   622
     the first two entries (of each entry) are the raw characters,
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   623
     and the third is the resulting composed-key"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   624
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   625
    ^ ComposeTable
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   626
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   627
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   628
composeTable:aTable
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   629
    "set the compose-key table.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   630
     Entries consist of 3-element arrays each, where
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   631
     the first two entries (of each entry) are the raw characters,
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   632
     and the third is the resulting composed-key"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   633
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   634
    ComposeTable := aTable
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   635
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   636
144
claus
parents: 140
diff changeset
   637
controlCEnabled:aBoolean
claus
parents: 140
diff changeset
   638
    "enable/disable Control-C processing. 
claus
parents: 140
diff changeset
   639
     If enabled, pressing CNTL-C in a view will interrupt it and bring
1940
83012f66306a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1873
diff changeset
   640
     its process into the debugger (actually raising a UserInterrupt signal).
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
   641
     Otherwise, CNTL-C is sent to the view like any other key.
144
claus
parents: 140
diff changeset
   642
     The default is true (enabled).
1940
83012f66306a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1873
diff changeset
   643
     Be very careful - only disable CNTL-C handling for well-debugged
83012f66306a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1873
diff changeset
   644
     applications ... however, even if disabled, there still is the CNTL-C
83012f66306a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1873
diff changeset
   645
     key on the startup (x)-terminal window (which can also be disabled).
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
   646
    "
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
   647
144
claus
parents: 140
diff changeset
   648
    ControlCEnabled := aBoolean
1940
83012f66306a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1873
diff changeset
   649
83012f66306a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1873
diff changeset
   650
    "Modified: / 29.10.1997 / 15:48:29 / cg"
124
f5b3dd3d38db *** empty log message ***
claus
parents: 118
diff changeset
   651
!
f5b3dd3d38db *** empty log message ***
claus
parents: 118
diff changeset
   652
5992
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   653
controlPeriodEnabled:aBoolean
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   654
    "enable/disable Control-. processing. 
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   655
     If enabled, pressing CNTL-. is handled like UserInterrupt and will usually interrupt it.
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   656
     Notice, that this flag only controls the translation of CTRL-. to CTRL-C;
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   657
     UserInterrupts may still be disabled by other flags.
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   658
    "
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   659
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   660
    ControlPeriodEnabled := aBoolean
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   661
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   662
    "Modified: / 29.10.1997 / 15:48:29 / cg"
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   663
!
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
   664
6509
df0c6e43e16c class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6503
diff changeset
   665
eventListeners
df0c6e43e16c class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6503
diff changeset
   666
    ^ EventListeners 
df0c6e43e16c class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6503
diff changeset
   667
!
df0c6e43e16c class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6503
diff changeset
   668
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   669
removeEventListener:aListener
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   670
    "remove a global eventListener (with new protocol - #handleEvent:)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   671
     - see documentation for what this can be used for"
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   672
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   673
    EventListeners notNil ifTrue:[
4913
2ac2acd451c6 changed #notifyEventListenersAbout:
Claus Gittinger <cg@exept.de>
parents: 4818
diff changeset
   674
        EventListeners removeIdentical:aListener ifAbsent:nil.
6098
fb2f7854696e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6091
diff changeset
   675
        EventListeners := EventListeners asNilIfEmpty.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   676
    ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   677
! !
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   678
3009
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   679
!WindowSensor class methodsFor:'event processing'!
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   680
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   681
postViewCreateNotification:aView
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   682
    "invoked right before a new view is created.
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   683
     Notify listeners and allow for the origin/extent to be
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   684
     changed. (For example, recorder/playback applications may
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   685
     want to make certain that the playback view is at the same
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   686
     position - or record any origin changes to translate later
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   687
     synthetic events)."
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   688
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
   689
    | ev|
3009
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   690
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   691
"/    "/ backward compatibility ... will vanish
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   692
"/    EventListener notNil ifTrue:[
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   693
"/        EventListener postCreateView:aView.
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   694
"/    ].
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   695
"/
3009
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   696
    "/ new protocol
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   697
    EventListeners size > 0 ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
   698
        ev := WindowEvent postViewCreateNotification:aView.
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   699
        EventListeners copy do:[:aListener |
3009
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   700
            aListener processEvent:ev
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   701
        ]
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   702
    ].
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   703
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   704
    "Modified: / 29-06-2011 / 18:56:05 / cg"
3009
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   705
!
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   706
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   707
preViewCreateNotification:aView
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   708
    "invoked right before a new view is created.
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   709
     Notify listeners and allow for the origin/extent to be
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   710
     changed. (For example, recorder/playback applications may
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   711
     want to make certain that the playback view is at the same
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   712
     position - or record any origin changes to translate later
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   713
     synthetic events)."
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   714
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   715
    |ret ev|
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   716
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   717
"/    "/ backward compatibility ... will vanish
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   718
"/    EventListener notNil ifTrue:[
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   719
"/        ret := EventListener preCreateView:aView origin:aView origin.
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   720
"/        ret isPoint ifTrue:[
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   721
"/            aView setOrigin:ret
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   722
"/        ]
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   723
"/    ].
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   724
"/
3009
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   725
    "/ new protocol
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   726
    EventListeners size > 0 ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
   727
        ev := WindowEvent preViewCreateNotification:aView.
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   728
        EventListeners copy do:[:aListener |
3009
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   729
            aListener processEvent:ev
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   730
        ]
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   731
    ].
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   732
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
   733
    "Modified: / 29-06-2011 / 18:54:57 / cg"
3009
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   734
! !
c370a1079517 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3006
diff changeset
   735
1082
44d671491f5e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1063
diff changeset
   736
!WindowSensor class methodsFor:'queries'!
133
claus
parents: 124
diff changeset
   737
claus
parents: 124
diff changeset
   738
cursorPoint
140
claus
parents: 133
diff changeset
   739
    "ST-80 compatibility: 
4064
37ed1f2d0905 non-utf
Claus Gittinger <cg@exept.de>
parents: 4063
diff changeset
   740
     return the position of the cursor on the current display."
133
claus
parents: 124
diff changeset
   741
153
claus
parents: 152
diff changeset
   742
    ^ Screen current pointerPosition
133
claus
parents: 124
diff changeset
   743
claus
parents: 124
diff changeset
   744
    "
claus
parents: 124
diff changeset
   745
     WindowSensor cursorPoint
claus
parents: 124
diff changeset
   746
    "
claus
parents: 124
diff changeset
   747
! !
claus
parents: 124
diff changeset
   748
3880
c4c8268a2d9f method category rename
Claus Gittinger <cg@exept.de>
parents: 3858
diff changeset
   749
!WindowSensor methodsFor:'Compatibility-ST80'!
1412
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   750
3037
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   751
blueButtonPressed
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   752
    "ST-80 compatibility: return true, if the right mouse button is pressed.
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   753
     You should no use it in 'normal' applications.
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   754
     Instead, keep track of the buttons state in your views or controllers
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   755
     button-event methods."
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   756
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   757
    ^ rightButtonDown
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   758
!
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   759
1412
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   760
eventQuit:event
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   761
    "ST-80 compatibility:
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   762
     push an event for terminating the topViews application"
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   763
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   764
    ^ self pushEvent:(WindowEvent
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
   765
                             for:nil
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
   766
                             type:#quit)
1412
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   767
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   768
    "Modified: 3.3.1997 / 20:15:00 / cg"
3037
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   769
!
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   770
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   771
redButtonPressed
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   772
    "ST-80 compatibility: return true, if the left mouse button is pressed.
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   773
     You should no use it in 'normal' applications.
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   774
     Instead, keep track of the buttons state in your views or controllers
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   775
     button-event methods."
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   776
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   777
    ^ leftButtonDown
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   778
!
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   779
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   780
yellowButtonPressed
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   781
    "ST-80 compatibility: return true, if the middle mouse button is pressed.
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   782
     You should no use it in 'normal' applications.
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   783
     Instead, keep track of the buttons state in your views or controllers
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   784
     button-event methods."
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   785
e71b70ffa90f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3017
diff changeset
   786
    ^ middleButtonDown
1412
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   787
! !
c2553d477315 handle #quit event (ST-80 support)
Claus Gittinger <cg@exept.de>
parents: 1359
diff changeset
   788
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   789
!WindowSensor methodsFor:'accessing'!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   790
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   791
addEventListener:aListener
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   792
    "add a local eventListener (with new protocol - #processEvent:)
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   793
     This one gets a chance to intercept all events for this sensor
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   794
     (i.e. for this windowGroup).
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   795
     - see documentation for what this can be used for"
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   796
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   797
    eventListeners isNil ifTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   798
        eventListeners := OrderedCollection new:2
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   799
    ].
3488
b6605e20bfde *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3456
diff changeset
   800
    (eventListeners includesIdentical:aListener) ifFalse:[
b6605e20bfde *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3456
diff changeset
   801
        eventListeners add:aListener
b6605e20bfde *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3456
diff changeset
   802
    ]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   803
!
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   804
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   805
compressMotionEvents:aBoolean
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   806
    "turn on/off motion event compression.
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   807
     Normally, motion event compression is enabled; however, 
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   808
     applications which want to follow every motion 
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   809
     (i.e. paint-like applications) may want to get them all)"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   810
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   811
    compressMotionEvents := aBoolean
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   812
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   813
    "Modified: / 6.6.1998 / 21:12:57 / cg"
1847
f449f3009e88 need even more protection against process-interrupts
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   814
!
f449f3009e88 need even more protection against process-interrupts
Claus Gittinger <cg@exept.de>
parents: 1806
diff changeset
   815
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   816
eventSemaphore
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   817
    "return the semaphore used to signal event arrival"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   818
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   819
    ^ eventSemaphore
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   820
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   821
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   822
eventSemaphore:aSemaphore
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   823
    "set the semaphore used to signal event arrival"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   824
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   825
    eventSemaphore := aSemaphore
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   826
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   827
703
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
   828
ignoreExposeEvents:aBoolean
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   829
    "turn on/off expose event ignoring"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   830
703
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
   831
    ignoreExposeEvents := aBoolean
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
   832
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   833
    "Created: / 21.5.1996 / 18:21:18 / cg"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   834
    "Modified: / 6.6.1998 / 21:13:14 / cg"
703
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
   835
!
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
   836
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   837
ignoreUserInput
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   838
    "return true, if user events are currently ignored"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   839
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   840
    ^ ignoreUserInput
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   841
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   842
    "Modified: / 6.6.1998 / 21:13:50 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   843
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   844
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   845
ignoreUserInput:aBoolean
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   846
    "turn on/off ignoring of user events processing.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   847
     This can be used to avoid having events queued for a master-view,
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   848
     while a modal dialog is open for it."
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   849
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   850
    ignoreUserInput := aBoolean
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   851
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   852
    "Modified: / 6.6.1998 / 21:14:25 / cg"
140
claus
parents: 133
diff changeset
   853
!
claus
parents: 133
diff changeset
   854
6568
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
   855
removeAllEventListeners
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
   856
    "remove all local eventListeners"
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
   857
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
   858
    eventListeners := nil
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
   859
!
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
   860
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   861
removeEventListener:aListener
3199
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
   862
    "remove a local eventListener (with new protocol - #processEvent:)
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   863
     - see documentation for what this can be used for"
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   864
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   865
    eventListeners notNil ifTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   866
        eventListeners removeIdentical:aListener ifAbsent:nil
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   867
    ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   868
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   869
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   870
! !
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
   871
3263
bd92a12c9316 category changes
Claus Gittinger <cg@exept.de>
parents: 3252
diff changeset
   872
!WindowSensor methodsFor:'accessing-private'!
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   873
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   874
criticalDamageEventQueueAccess:aBlock
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   875
    "perform some action which needs synchronized (exclusive)
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   876
     access to the damage event queue. 
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   877
     (i.e. protected by a critical region)"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   878
4293
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   879
    self criticalEventQueueAccess:damageEventAccessLock do:aBlock.
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   880
!
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   881
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   882
criticalEventQueueAccess:whichLock do:aBlock
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   883
    "perform some action which needs synchronized (exclusive)
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   884
     access to one of the event queues. 
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   885
     (i.e. protected by a critical region)"
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   886
2391
a8a92e36683c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2312
diff changeset
   887
    |wasBlocked p|
a8a92e36683c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2312
diff changeset
   888
a8a92e36683c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2312
diff changeset
   889
    p := Processor activeProcess.
a8a92e36683c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2312
diff changeset
   890
    wasBlocked := p blockInterrupts.
7826
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   891
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   892
    [
7826
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   893
        whichLock critical:aBlock
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   894
    ] on:Error do:[:ex|
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   895
        ('WindowSensor [Warning]: Error in eventQ handling ignored: ' , ex description) errorPrintCR.
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   896
        "/ thisContext fullPrintAll.
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   897
        "/ whichLock printCR.
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   898
        ex return.
3604
e32b5044a59e #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 3593
diff changeset
   899
    ] ensure:[
3336
a9032c458162 ignore errors while adding damage
martin
parents: 3331
diff changeset
   900
        wasBlocked ifFalse:[
a9032c458162 ignore errors while adding damage
martin
parents: 3331
diff changeset
   901
            p unblockInterrupts.
a9032c458162 ignore errors while adding damage
martin
parents: 3331
diff changeset
   902
        ]
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   903
    ]
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   904
7826
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   905
    "Created: / 06-06-1998 / 21:04:02 / cg"
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   906
    "Modified: / 14-10-1998 / 17:17:05 / cg"
ca8d4766615d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7733
diff changeset
   907
    "Modified: / 31-01-2017 / 16:53:08 / stefan"
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   908
!
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   909
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   910
criticalUserEventQueueAccess:aBlock
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   911
    "perform some action which needs synchronized (exclusive)
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   912
     access to the user event queue. 
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   913
     (i.e. protected by a critical region)"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   914
4293
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   915
    self criticalEventQueueAccess:userEventAccessLock do:aBlock.
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   916
!
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   917
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   918
damageEventAccessLock
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   919
    "return the semaphore which controls access to the damage event queue.
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   920
     This should probably not be exposed to the public,
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   921
     so be prepared that this method may vanish."
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   922
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   923
    ^ damageEventAccessLock
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   924
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   925
    "Created: / 6.6.1998 / 21:06:14 / cg"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   926
    "Modified: / 6.6.1998 / 21:16:49 / cg"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   927
!
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   928
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   929
userEventAccessLock
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   930
    "return the semaphore which controls access to the mouse and keyboard event queue.
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   931
     This should probably not be exposed to the public,
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   932
     so be prepared that this method may vanish."
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   933
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   934
    ^ userEventAccessLock
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   935
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   936
    "Created: / 6.6.1998 / 21:05:56 / cg"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   937
    "Modified: / 6.6.1998 / 21:16:57 / cg"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   938
! !
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
   939
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   940
!WindowSensor methodsFor:'event flushing'!
144
claus
parents: 140
diff changeset
   941
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   942
compressKeyPressEventsWithKey:aKey
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   943
    "count and remove multiple pending keyPress events for the
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   944
     same key, aKey. This is currently used in TextViews to compress
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   945
     multiple cursorUp/cursorDown events and do the scroll in one
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   946
     operation. (to avoid run-after-cursor on slow displays)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   947
2022
90d1cebc9a92 fixed compressKeyFor:
Claus Gittinger <cg@exept.de>
parents: 1969
diff changeset
   948
    |n ev evKey|
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   949
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   950
    n := 0.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   951
    ev := self pendingEvent.
2022
90d1cebc9a92 fixed compressKeyFor:
Claus Gittinger <cg@exept.de>
parents: 1969
diff changeset
   952
90d1cebc9a92 fixed compressKeyFor:
Claus Gittinger <cg@exept.de>
parents: 1969
diff changeset
   953
    [ev notNil and:[ev isKeyEvent]] whileTrue:[
2877
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   954
        evKey := ev key.
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   955
        (evKey == aKey) ifTrue:[
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   956
            ev isKeyReleaseEvent ifFalse:[
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   957
                n := n + 1.
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   958
            ].
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   959
            self nextEvent.
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   960
            ev := self pendingEvent.
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   961
        ] ifFalse:[
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   962
            ev := nil
f5a9a55ca76f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2820
diff changeset
   963
        ]
144
claus
parents: 140
diff changeset
   964
    ].
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   965
    ^ n
2022
90d1cebc9a92 fixed compressKeyFor:
Claus Gittinger <cg@exept.de>
parents: 1969
diff changeset
   966
90d1cebc9a92 fixed compressKeyFor:
Claus Gittinger <cg@exept.de>
parents: 1969
diff changeset
   967
    "Modified: / 27.1.1998 / 14:15:00 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   968
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   969
4142
d9d7c11c10cb +flushAllEvents
werner
parents: 4120
diff changeset
   970
flushAllEvents
d9d7c11c10cb +flushAllEvents
werner
parents: 4120
diff changeset
   971
    damage := OrderedCollection new.
d9d7c11c10cb +flushAllEvents
werner
parents: 4120
diff changeset
   972
    mouseAndKeyboard := OrderedCollection new.
d9d7c11c10cb +flushAllEvents
werner
parents: 4120
diff changeset
   973
!
d9d7c11c10cb +flushAllEvents
werner
parents: 4120
diff changeset
   974
5079
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   975
flushButtonEventsFor:aView
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   976
    "throw away all pending mouse button events for aView, 
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   977
     or any view, if the argument is nil." 
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   978
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   979
    self
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   980
        flushEventsFor:aView inQueue:mouseAndKeyboard 
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   981
        where:[:event | event isButtonEvent]
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   982
!
145c5b731024 +flushButtonEventsFor:
Claus Gittinger <cg@exept.de>
parents: 5075
diff changeset
   983
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   984
flushEventsFor:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   985
    "throw away all events for aView, 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   986
     or any view, if the argument is nil."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   987
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   988
    self flushExposeEventsFor:aView.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   989
    self flushUserEventsFor:aView.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   990
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   991
3610
072b9b097c9f better varNames
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
   992
flushEventsFor:aViewOrNil inQueue:anEventQueue where:aCondition
1790
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
   993
    "throw away all pending damage events for aView, 
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
   994
     for which aCondition returns true.
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
   995
     Or any view for which aCondition returns true, if the argument is nil. 
3090
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
   996
     A helper for the various flush entries.
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
   997
     Returns the last flushed event or nil."
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
   998
4293
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
   999
    |lastFlushed whichLock|
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1000
3888
1e06f949dc58 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3885
diff changeset
  1001
    anEventQueue isNil ifTrue:[^ nil].
1e06f949dc58 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3885
diff changeset
  1002
4293
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1003
    whichLock := (anEventQueue == damage) ifTrue:[damageEventAccessLock] ifFalse:[userEventAccessLock].
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1004
    self 
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1005
        criticalEventQueueAccess:whichLock 
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1006
        do:[
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1007
            |nEvent "{ Class: SmallInteger }" 
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1008
             anEvent
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1009
             queue|
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1010
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1011
            queue := anEventQueue.
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1012
            nEvent := queue size.
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1013
            1 to:nEvent do:[:index |
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1014
                anEvent := queue at:index.
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1015
                anEvent notNil ifTrue:[
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1016
                    (aViewOrNil isNil or:[anEvent view == aViewOrNil]) ifTrue:[
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1017
                        (aCondition value:anEvent) ifTrue:[
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1018
                            lastFlushed := anEvent.
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1019
                            queue at:index put:nil.
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1020
                            anEvent isDamage ifTrue:[ anEvent view updateRegion:nil ].
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1021
                        ]
3090
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1022
                    ]
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1023
                ]
4293
b8b64d43d0f6 lock handling slightly refactored
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  1024
            ].
3090
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1025
        ].
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1026
    ^ lastFlushed
1790
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
  1027
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1028
    "Modified: / 6.6.1998 / 21:10:22 / cg"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1029
    "Created: / 6.6.1998 / 21:17:54 / cg"
1790
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
  1030
!
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
  1031
3610
072b9b097c9f better varNames
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
  1032
flushEventsFor:aViewOrNil where:aBlock
3545
7110b2eebc14 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3515
diff changeset
  1033
    "throw away all events for aView, for which aBlock evaluates to true 
7110b2eebc14 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3515
diff changeset
  1034
     or any view, if the argument is nil."
7110b2eebc14 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3515
diff changeset
  1035
3610
072b9b097c9f better varNames
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
  1036
    self flushEventsFor:aViewOrNil inQueue:damage           where:aBlock.
072b9b097c9f better varNames
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
  1037
    self flushEventsFor:aViewOrNil inQueue:mouseAndKeyboard where:aBlock.
3545
7110b2eebc14 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3515
diff changeset
  1038
7110b2eebc14 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3515
diff changeset
  1039
    "Created: / 12.11.2001 / 19:27:07 / cg"
7110b2eebc14 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3515
diff changeset
  1040
!
7110b2eebc14 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3515
diff changeset
  1041
3610
072b9b097c9f better varNames
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
  1042
flushEventsFor:aViewOrNil withType:type
2163
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1043
    "throw away all events for aView, 
2177
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  1044
     (or any view, if the argument is nil) which have a particular type."
2163
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1045
3610
072b9b097c9f better varNames
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
  1046
    self flushEventsFor:aViewOrNil inQueue:damage where:[:event | event type==type].
072b9b097c9f better varNames
Claus Gittinger <cg@exept.de>
parents: 3604
diff changeset
  1047
    self flushEventsFor:aViewOrNil inQueue:mouseAndKeyboard where:[:event | event type==type].
2163
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1048
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1049
    "Created: / 20.6.1998 / 16:41:35 / cg"
2177
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  1050
    "Modified: / 21.7.1998 / 18:16:11 / cg"
2163
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1051
!
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1052
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1053
flushExposeEvents
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1054
    "throw away all pending expose events; this
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1055
     can be done after a full redraw (or in views, which are
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1056
     doing full redraws anly)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1057
3888
1e06f949dc58 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3885
diff changeset
  1058
    self flushEventsFor:nil inQueue:damage where:[:event | event isDamage].
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1059
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1060
    "Modified: / 6.6.1998 / 21:18:03 / cg"
144
claus
parents: 140
diff changeset
  1061
!
claus
parents: 140
diff changeset
  1062
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1063
flushExposeEventsFor:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1064
    "throw away all pending expose events for aView, 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1065
     or any view, if the argument is nil. 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1066
     This can be done after a full redraw 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1067
     (or in views, which are always doing full redraws -
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1068
      instead of drawing the clip-area only)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1069
3888
1e06f949dc58 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3885
diff changeset
  1070
    self flushEventsFor:aView inQueue:damage where:[:event | event isDamage].
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1071
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1072
    "Modified: / 6.6.1998 / 21:18:05 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1073
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1074
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1075
flushKeyboard
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1076
    "ST-80 compatibility: throw away all pending keyboard events"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1077
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1078
    self flushKeyboardFor:nil
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1079
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1080
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1081
flushKeyboardFor:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1082
    "throw away all pending keyboard events for aView, 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1083
     or any view, if the argument is nil." 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1084
1790
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
  1085
    self
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1086
        flushEventsFor:aView inQueue:mouseAndKeyboard 
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1087
        where:[:event | event isKeyEvent]
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1088
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1089
    "Modified: / 6.6.1998 / 21:18:08 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1090
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1091
1731
ca
parents: 1616
diff changeset
  1092
flushMotionEventsFor:aView
ca
parents: 1616
diff changeset
  1093
    "throw away all pending motion events for aView, 
ca
parents: 1616
diff changeset
  1094
     or for any view, if the argument is nil." 
ca
parents: 1616
diff changeset
  1095
1790
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
  1096
    self
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1097
        flushEventsFor:aView inQueue:mouseAndKeyboard 
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1098
        where:[:event | event isButtonMotionEvent]
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1099
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1100
    "Modified: / 6.6.1998 / 21:18:10 / cg"
1731
ca
parents: 1616
diff changeset
  1101
!
ca
parents: 1616
diff changeset
  1102
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1103
flushUserEvents
2163
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1104
    "throw away all pending user events (i.e. key & button stuff)"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1105
3888
1e06f949dc58 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3885
diff changeset
  1106
    self flushUserEventsFor:nil
1159
e5247f8a48f3 do not flush synthetic events in #flushUserEvents
Claus Gittinger <cg@exept.de>
parents: 1155
diff changeset
  1107
2163
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1108
    "Modified: / 20.6.1998 / 16:40:02 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1109
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1110
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1111
flushUserEventsFor:aView
2163
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1112
    "throw away all pending user events for aView (i.e. key & button stuff), 
1159
e5247f8a48f3 do not flush synthetic events in #flushUserEvents
Claus Gittinger <cg@exept.de>
parents: 1155
diff changeset
  1113
     or for any view, if the argument is nil." 
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1114
1790
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
  1115
    self
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1116
        flushEventsFor:aView inQueue:mouseAndKeyboard 
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1117
        where:[:event | event isUserEvent]
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  1118
2163
31383028eec6 more flushing stuff.
Claus Gittinger <cg@exept.de>
parents: 2157
diff changeset
  1119
    "Modified: / 20.6.1998 / 16:40:09 / cg"
2787
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1120
!
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1121
6882
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1122
flushUserEventsFor:aView where:aBlock
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1123
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1124
    "throw away all pending user events (i.e. key & button stuff)
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1125
     for which aBlock returns true.
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1126
     For aView or for any view, if the argument is nil." 
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1127
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1128
    self
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1129
        flushEventsFor:aView inQueue:mouseAndKeyboard 
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1130
        where:aBlock
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1131
!
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  1132
2787
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1133
flushUserEventsFor:aView withType:type
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1134
    "throw away all pending user events with specified type for aView (i.e. key & button stuff), 
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1135
     or for any view, if the argument is nil." 
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1136
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1137
    self
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1138
        flushEventsFor:aView inQueue:mouseAndKeyboard 
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1139
        where:[:event | event type==type]
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1140
99aa802b2de5 added #flushUserEventsFor:withType:
Claus Gittinger <cg@exept.de>
parents: 2734
diff changeset
  1141
    "Modified: / 20.6.1998 / 16:40:09 / cg"
3090
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1142
!
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1143
3381
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1144
flushUserEventsFor:aView withType:type withArguments:args
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1145
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1146
    "throw away all pending user events with specified type for aView (i.e. key & button stuff), 
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1147
     or for any view, if the argument is nil." 
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1148
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1149
    self
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1150
        flushEventsFor:aView inQueue:mouseAndKeyboard 
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1151
        where:[:event | (type == event type)
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1152
                        and:[args = event arguments]]
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1153
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1154
    "Modified: / 20.6.1998 / 16:40:09 / cg"
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1155
!
5deef9b7da86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3361
diff changeset
  1156
3090
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1157
lastMotionEventFor:aView
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1158
    "throw away all pending motion events for aView, 
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1159
     or for any view, if the argument is nil.
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1160
     Returns the very last (valid) motion event." 
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1161
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1162
    ^ self
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1163
        flushEventsFor:aView inQueue:mouseAndKeyboard 
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1164
        where:[:event | event isButtonMotionEvent]
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1165
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1166
    "Modified: / 6.6.1998 / 21:18:10 / cg"
157
claus
parents: 154
diff changeset
  1167
! !
claus
parents: 154
diff changeset
  1168
claus
parents: 154
diff changeset
  1169
!WindowSensor methodsFor:'event processing'!
claus
parents: 154
diff changeset
  1170
3451
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  1171
buttonMotion:buttonAndModifierState x:x y:y view:aView
140
claus
parents: 133
diff changeset
  1172
    "mouse was moved - this is sent from the device (Display)"
claus
parents: 133
diff changeset
  1173
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1174
    |ev ignoreIt buttonState|
2687
de85d8f2f7d0 care for invalid WM_MOUSEMOVE message after an activate in the client area
Claus Gittinger <cg@exept.de>
parents: 2662
diff changeset
  1175
2689
2cbeb733da80 nope - the last one was not good
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
  1176
    "/ update my idea of button and modifier state information
3451
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  1177
    self updateModifierStateFrom:buttonAndModifierState device:(aView graphicsDevice).
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  1178
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  1179
    "/ however, in the following, we are only interested in the buttons (i.e. mask out the modifiers)
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  1180
    buttonState := buttonAndModifierState bitAnd:(aView device anyButtonStateMask).
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  1181
140
claus
parents: 133
diff changeset
  1182
    ignoreUserInput == true ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1183
        ^ self
140
claus
parents: 133
diff changeset
  1184
    ].
claus
parents: 133
diff changeset
  1185
claus
parents: 133
diff changeset
  1186
    compressMotionEvents ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1187
        "
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1188
         merge with last motion
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1189
        "
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1190
        self criticalUserEventQueueAccess:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1191
            |idx args|
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1192
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1193
            idx := mouseAndKeyboard size.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1194
            [idx > 0] whileTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1195
                ev := mouseAndKeyboard at:idx.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1196
                ev notNil ifTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1197
                    ((ev type == #buttonMotion:x:y:) 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1198
                    and:[(ev view == aView)
3451
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  1199
                    and:[(ev arguments at:1) == buttonState]]) ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1200
                        "/ TODO: provide accessor in buttonMotionEvent
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1201
                        args isNil ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1202
                            args := Array with:buttonState with:x with:y.
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1203
                        ].
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1204
                        ev arguments:args.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1205
                        idx := 0.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1206
                        ignoreIt := true
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1207
                    ]
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1208
                ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1209
                idx := idx - 1.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1210
            ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1211
        ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1212
        ignoreIt == true ifTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1213
            ^ self
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1214
        ]
140
claus
parents: 133
diff changeset
  1215
    ].
1861
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1216
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1217
    ev := WindowEvent buttonMotion:buttonState x:x y:y view:aView.
1862
e56d9a7389bb also remember buttonStates in keyEvents.
Claus Gittinger <cg@exept.de>
parents: 1861
diff changeset
  1218
    ev hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
2126
1f108c76dfdb moved event dispatching code to view (where it belongs)
Claus Gittinger <cg@exept.de>
parents: 2123
diff changeset
  1219
       button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1220
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1221
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1222
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
1861
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1223
    self pushEvent:ev.
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1224
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1225
    "Modified: / 29-06-2011 / 18:45:59 / cg"
140
claus
parents: 133
diff changeset
  1226
!
claus
parents: 133
diff changeset
  1227
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1228
buttonMultiPress:button x:x y:y view:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1229
    "mouse button was pressed - this is sent from the device (Display)"
140
claus
parents: 133
diff changeset
  1230
1861
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1231
    |ev|
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1232
1083
6e947cc67324 fixed #anyButtonPressed & setting of buttonDown-flags
Claus Gittinger <cg@exept.de>
parents: 1082
diff changeset
  1233
    self button:button inView:aView state:true.
6e947cc67324 fixed #anyButtonPressed & setting of buttonDown-flags
Claus Gittinger <cg@exept.de>
parents: 1082
diff changeset
  1234
140
claus
parents: 133
diff changeset
  1235
    ignoreUserInput == true ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1236
        ^ self
140
claus
parents: 133
diff changeset
  1237
    ].
1083
6e947cc67324 fixed #anyButtonPressed & setting of buttonDown-flags
Claus Gittinger <cg@exept.de>
parents: 1082
diff changeset
  1238
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1239
    ev := WindowEvent buttonMultiPress:button x:x y:y view:aView.
1862
e56d9a7389bb also remember buttonStates in keyEvents.
Claus Gittinger <cg@exept.de>
parents: 1861
diff changeset
  1240
    ev hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
2126
1f108c76dfdb moved event dispatching code to view (where it belongs)
Claus Gittinger <cg@exept.de>
parents: 2123
diff changeset
  1241
       button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1242
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1243
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1244
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
1861
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1245
    self pushEvent:ev.
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1246
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1247
    "Modified: / 29-06-2011 / 18:46:03 / cg"
140
claus
parents: 133
diff changeset
  1248
!
claus
parents: 133
diff changeset
  1249
claus
parents: 133
diff changeset
  1250
buttonPress:button x:x y:y view:aView
claus
parents: 133
diff changeset
  1251
    "mouse button was pressed - this is sent from the device (Display)"
claus
parents: 133
diff changeset
  1252
1861
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1253
    |ev|
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1254
157
claus
parents: 154
diff changeset
  1255
    self button:button inView:aView state:true.
claus
parents: 154
diff changeset
  1256
140
claus
parents: 133
diff changeset
  1257
    ignoreUserInput == true ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1258
        ^ self
140
claus
parents: 133
diff changeset
  1259
    ].
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1260
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1261
    ev := WindowEvent buttonPress:button x:x y:y view:aView.
1862
e56d9a7389bb also remember buttonStates in keyEvents.
Claus Gittinger <cg@exept.de>
parents: 1861
diff changeset
  1262
    ev hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
2126
1f108c76dfdb moved event dispatching code to view (where it belongs)
Claus Gittinger <cg@exept.de>
parents: 2123
diff changeset
  1263
       button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1264
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1265
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1266
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
1861
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1267
    self pushEvent:ev.
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1268
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1269
    "Modified: / 29-06-2011 / 18:46:07 / cg"
140
claus
parents: 133
diff changeset
  1270
!
claus
parents: 133
diff changeset
  1271
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1272
buttonRelease:button x:x y:y view:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1273
    "mouse button was released- this is sent from the device (Display)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1274
1861
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1275
    |ev|
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1276
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1277
    self button:button inView:aView state:false.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1278
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1279
    ignoreUserInput == true ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1280
        ^ self
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1281
    ].
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1282
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1283
    ev := WindowEvent buttonRelease:button x:x y:y view:aView.
1862
e56d9a7389bb also remember buttonStates in keyEvents.
Claus Gittinger <cg@exept.de>
parents: 1861
diff changeset
  1284
    ev hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
2126
1f108c76dfdb moved event dispatching code to view (where it belongs)
Claus Gittinger <cg@exept.de>
parents: 2123
diff changeset
  1285
       button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1286
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1287
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1288
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
1861
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1289
    self pushEvent:ev.
1b1e49147380 remember shift,meta,alt & ctrl state in buttonEvents
Claus Gittinger <cg@exept.de>
parents: 1852
diff changeset
  1290
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1291
    "Modified: / 29-06-2011 / 18:46:11 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1292
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1293
1545
f821b3870502 client- and drop messages
Claus Gittinger <cg@exept.de>
parents: 1529
diff changeset
  1294
clientMessage:type format:format eventData:data view:aView
5002
7a1fb85e25b2 hooks for client and copyData events
Claus Gittinger <cg@exept.de>
parents: 5001
diff changeset
  1295
    "some other process has sent data to a view.
7a1fb85e25b2 hooks for client and copyData events
Claus Gittinger <cg@exept.de>
parents: 5001
diff changeset
  1296
     This is an X-specific event. (see copyDataEvent for win32 variant)"
1545
f821b3870502 client- and drop messages
Claus Gittinger <cg@exept.de>
parents: 1529
diff changeset
  1297
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1298
    self pushEvent:(WindowEvent clientMessageEvent:type format:format eventData:data view:aView).
1545
f821b3870502 client- and drop messages
Claus Gittinger <cg@exept.de>
parents: 1529
diff changeset
  1299
2126
1f108c76dfdb moved event dispatching code to view (where it belongs)
Claus Gittinger <cg@exept.de>
parents: 2123
diff changeset
  1300
    "Created: / 4.4.1997 / 17:51:08 / cg"
2708
855835147902 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2704
diff changeset
  1301
    "Modified: / 21.5.1999 / 19:46:43 / cg"
1545
f821b3870502 client- and drop messages
Claus Gittinger <cg@exept.de>
parents: 1529
diff changeset
  1302
!
f821b3870502 client- and drop messages
Claus Gittinger <cg@exept.de>
parents: 1529
diff changeset
  1303
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1304
configureX:x y:y width:w height:h view:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1305
    "a views size or position has changed - this is sent from the device (Display)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1306
1108
748f9e5c5b1e ignore configureEvents for subviews.
Claus Gittinger <cg@exept.de>
parents: 1100
diff changeset
  1307
    aView superView notNil ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1308
        "/ this is a configure event for a subView
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1309
        "/ I guess, this resulted from a resize of
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1310
        "/ myself (are there any windowManagers which resize subviews ?)
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1311
        "/ Therefore, ignore it here.
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1312
        "/ This also fixed problems due to late-arriving configure events,
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1313
        "/ in case of a resized view, which was resized before.
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1314
        "/ Without the return below, we need a flushConfigureEvents entry here,
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1315
        "/ to be invoked whenever a subview is resized / repositioned.
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1316
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1317
        "/ A kludge-workaround had to be added to children of
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1318
        "/ external top views - since the external view does not get any
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1319
        "/ events delivered, we must react upon changes of the
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1320
        "/ child. (sigh).
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1321
        aView superView isExternalTopView ifFalse:[
2429
c54c8e30fe13 support for external topViews.
Claus Gittinger <cg@exept.de>
parents: 2421
diff changeset
  1322
"/            'ignored configure for: ' print. aView class printCR.
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1323
            ^ self
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1324
        ]
1969
d2d7073b7c56 experimental: only enqueue last configure event
Claus Gittinger <cg@exept.de>
parents: 1940
diff changeset
  1325
    ].
d2d7073b7c56 experimental: only enqueue last configure event
Claus Gittinger <cg@exept.de>
parents: 1940
diff changeset
  1326
d2d7073b7c56 experimental: only enqueue last configure event
Claus Gittinger <cg@exept.de>
parents: 1940
diff changeset
  1327
    "/
2612
a9376094c600 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2611
diff changeset
  1328
    "/ remove any old configure event (WIN32 speedup)
1969
d2d7073b7c56 experimental: only enqueue last configure event
Claus Gittinger <cg@exept.de>
parents: 1940
diff changeset
  1329
    "/
d2d7073b7c56 experimental: only enqueue last configure event
Claus Gittinger <cg@exept.de>
parents: 1940
diff changeset
  1330
    damage size ~~ 0 ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1331
        damage keysAndValuesDo:[:idx :aDamage |
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1332
            (aDamage notNil 
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1333
            and:[aDamage type == #configureX:y:width:height:
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1334
            and:[aDamage view == aView]]) ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1335
                damage at:idx put:nil.
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1336
            ].
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1337
        ]
1108
748f9e5c5b1e ignore configureEvents for subviews.
Claus Gittinger <cg@exept.de>
parents: 1100
diff changeset
  1338
    ].
748f9e5c5b1e ignore configureEvents for subviews.
Claus Gittinger <cg@exept.de>
parents: 1100
diff changeset
  1339
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1340
    self pushDamageEvent:(WindowEvent configureX:x y:y width:w height:h view:aView).
2611
0d6fbbb92448 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2518
diff changeset
  1341
2612
a9376094c600 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2611
diff changeset
  1342
    "Modified: / 29.4.1999 / 10:06:47 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1343
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1344
5019
3b099af62423 changed #copyDataEvent:eventData:view:
Claus Gittinger <cg@exept.de>
parents: 5002
diff changeset
  1345
copyDataEvent:parameter eventData:data view:aView
5002
7a1fb85e25b2 hooks for client and copyData events
Claus Gittinger <cg@exept.de>
parents: 5001
diff changeset
  1346
    "some other process has sent data to a view.
7a1fb85e25b2 hooks for client and copyData events
Claus Gittinger <cg@exept.de>
parents: 5001
diff changeset
  1347
     This is a Win32-specific event. (see clientMessage for x-windows variant)"
5001
2f7a3b0eea9f hooks for client and copyData events
Claus Gittinger <cg@exept.de>
parents: 4987
diff changeset
  1348
5019
3b099af62423 changed #copyDataEvent:eventData:view:
Claus Gittinger <cg@exept.de>
parents: 5002
diff changeset
  1349
    self pushEvent:(WindowEvent copyDataEvent:parameter eventData:data view:aView).
5001
2f7a3b0eea9f hooks for client and copyData events
Claus Gittinger <cg@exept.de>
parents: 4987
diff changeset
  1350
!
2f7a3b0eea9f hooks for client and copyData events
Claus Gittinger <cg@exept.de>
parents: 4987
diff changeset
  1351
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1352
coveredBy:coveringSiblingView view:coveredView
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1353
    "aView was covered by one of its siblings - this is sent from the device (Display)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1354
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1355
    self pushDamageEvent:(WindowEvent coveredBy:coveringSiblingView view:coveredView)
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1356
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1357
    "Modified: 18.1.1997 / 14:18:32 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1358
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1359
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1360
createWindow:view x:x y:y width:w height:h    
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1361
    "A window has been created in a view.
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1362
     This is a synthetic event, useful for some event recorders"
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1363
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1364
    self pushEvent:(WindowEvent createWindow:view x:x y:y width:w height:h).
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1365
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1366
    "Created: / 30-05-2011 / 19:01:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1367
    "Modified: / 01-06-2011 / 12:50:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1368
    "Modified: / 29-06-2011 / 18:46:15 / cg"
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1369
!
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1370
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1371
destroyedView:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1372
    "view was destroyed (from window manager) - this is sent from the device (Display)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1373
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1374
    "at this time, the view is already gone; remove
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1375
     all pending events for this one ..."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1376
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1377
    self flushEventsFor:aView.
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1378
    self pushDamageEvent:(WindowEvent destroyedView:aView).
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1379
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1380
    "Modified: 18.1.1997 / 14:18:19 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1381
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1382
4459
8b13d9f5d3b5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4458
diff changeset
  1383
dropFiles:files view:view position:dropPositionOrNil handle:dropHandleOrNil
8b13d9f5d3b5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4458
diff changeset
  1384
    self pushEvent:(WindowEvent dropFiles:files view:view position:dropPositionOrNil handle:dropHandleOrNil)
1545
f821b3870502 client- and drop messages
Claus Gittinger <cg@exept.de>
parents: 1529
diff changeset
  1385
!
f821b3870502 client- and drop messages
Claus Gittinger <cg@exept.de>
parents: 1529
diff changeset
  1386
4529
01c76306553c new: #dropMessage:data:view:position:handle:
Stefan Vogel <sv@exept.de>
parents: 4493
diff changeset
  1387
dropMessage:dropType data:dropValue view:targetView position:dropPositionOrNil handle:dropHandleOrNil
01c76306553c new: #dropMessage:data:view:position:handle:
Stefan Vogel <sv@exept.de>
parents: 4493
diff changeset
  1388
    self pushEvent:(WindowEvent dropMessage:dropType data:dropValue view:targetView position:dropPositionOrNil handle:dropHandleOrNil)
01c76306553c new: #dropMessage:data:view:position:handle:
Stefan Vogel <sv@exept.de>
parents: 4493
diff changeset
  1389
!
01c76306553c new: #dropMessage:data:view:position:handle:
Stefan Vogel <sv@exept.de>
parents: 4493
diff changeset
  1390
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1391
exposeX:left y:top width:width height:height view:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1392
    "an expose event arrived - this is sent from the device (Display)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1393
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1394
    ignoreExposeEvents == true ifTrue:[
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1395
        'ignored expose' infoPrintCR.
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1396
        ^ self.
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1397
    ].
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1398
    self 
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1399
        addDamage:(Rectangle left:left top:top width:width height:height) 
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1400
        view:aView
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1401
        wakeup:true.
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1402
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1403
    "Modified: / 29-06-2011 / 18:29:47 / cg"
140
claus
parents: 133
diff changeset
  1404
!
claus
parents: 133
diff changeset
  1405
claus
parents: 133
diff changeset
  1406
focusInView:aView
claus
parents: 133
diff changeset
  1407
    "view got input focus - this is sent from the device (Display)"
claus
parents: 133
diff changeset
  1408
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1409
    self pushEvent:(WindowEvent focusInView:aView).
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1410
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1411
    "Modified: / 29-06-2011 / 18:46:18 / cg"
140
claus
parents: 133
diff changeset
  1412
!
claus
parents: 133
diff changeset
  1413
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1414
focusOutView:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1415
    "view lost input focus - this is sent from the device (Display)"
140
claus
parents: 133
diff changeset
  1416
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1417
    self pushEvent:(WindowEvent focusOutView:aView).
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1418
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1419
    "Modified: / 29-06-2011 / 18:46:21 / cg"
140
claus
parents: 133
diff changeset
  1420
!
claus
parents: 133
diff changeset
  1421
1295
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  1422
graphicsExposeX:left y:top width:width height:height final:final view:aView
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1423
    "a graphic expose event arrived - this is sent from the device (Display)"
140
claus
parents: 133
diff changeset
  1424
1243
0c33cb7f8458 hopefully fixed the 'lost expose' bug
Claus Gittinger <cg@exept.de>
parents: 1242
diff changeset
  1425
    "/ this is also a possible response to a scroll operation
0c33cb7f8458 hopefully fixed the 'lost expose' bug
Claus Gittinger <cg@exept.de>
parents: 1242
diff changeset
  1426
    "/ (if an expose is pending)
0c33cb7f8458 hopefully fixed the 'lost expose' bug
Claus Gittinger <cg@exept.de>
parents: 1242
diff changeset
  1427
3819
165c1d2ec85a *** empty log message ***
tm
parents: 3783
diff changeset
  1428
    self addDamage:(Rectangle left:left top:top width:width height:height) view:aView wakeup:false.
1295
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  1429
    final ifTrue:[
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  1430
        (catchExpose includes:aView) ifTrue:[
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  1431
            gotExpose add:aView.
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  1432
            exposeEventSemaphore notNil ifTrue:[
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  1433
                exposeEventSemaphore signalForAll
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  1434
            ]
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  1435
        ] ifFalse:[
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  1436
            'WSensor [warning]: got exposeEvent for non-catching view:' infoPrint. aView infoPrintCR
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  1437
        ]
1243
0c33cb7f8458 hopefully fixed the 'lost expose' bug
Claus Gittinger <cg@exept.de>
parents: 1242
diff changeset
  1438
    ].
0c33cb7f8458 hopefully fixed the 'lost expose' bug
Claus Gittinger <cg@exept.de>
parents: 1242
diff changeset
  1439
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  1440
    "Modified: / 14.12.1999 / 20:55:38 / cg"
140
claus
parents: 133
diff changeset
  1441
!
claus
parents: 133
diff changeset
  1442
5963
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1443
hotkeyWithId:aHotkeyId key:aKey view:aView
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1444
    "hotkey was pressed - this is sent from the device (Display)."
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1445
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1446
    |ev|
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1447
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1448
    ev := WindowEvent 
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1449
            hotkeyWithId:aHotkeyId
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1450
            rawKey:aKey
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1451
              view:aView.
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1452
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1453
    self pushEvent:ev.
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1454
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1455
    "Modified: / 04-10-2011 / 19:34:46 / cg"
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1456
!
a182a718f398 support of hotkeys event
ab
parents: 5839
diff changeset
  1457
140
claus
parents: 133
diff changeset
  1458
keyPress:key x:x y:y view:aView
claus
parents: 133
diff changeset
  1459
    "key was pressed - this is sent from the device (Display).
claus
parents: 133
diff changeset
  1460
     beside the keyboard translation, CntlC processing is done here."
claus
parents: 133
diff changeset
  1461
510
c0c7a04317a9 resources
Claus Gittinger <cg@exept.de>
parents: 488
diff changeset
  1462
    <resource: #keyboard ( #Compose #DestroyView #DestroyTopView #FlushInput
5995
cf7a95545e18 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5992
diff changeset
  1463
                           #UserInterrupt #UserAbort #'CTRL.') >
1528
78c64c132593 started to separate into distinct event classes;
Claus Gittinger <cg@exept.de>
parents: 1512
diff changeset
  1464
4945
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  1465
    |xlatedKey keyWithModifier group process ev device|
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  1466
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  1467
    device := aView graphicsDevice.
140
claus
parents: 133
diff changeset
  1468
144
claus
parents: 140
diff changeset
  1469
    self key:key state:true. 
6512
54a7f7e0195e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6509
diff changeset
  1470
    "/ 'key: ' print. key storeString printCR.    
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1471
3090
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1472
    "/ bail out of a popUpView with ctrl-shift-escape
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1473
    "/ (useful to avoid total lock of system with non-functioning grabbing popUpView)
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1474
    (key = #Escape) ifTrue:[
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1475
        (ctrlDown and:[shiftDown]) ifTrue:[
4945
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  1476
            device ungrabPointer.
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  1477
            device ungrabKeyboard.
3090
a051f6c87eba added helper #lastMotionEventFor: to allow manual motionEvent
ca
parents: 3042
diff changeset
  1478
            ^ self
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1479
        ]
2413
08e6fadff67d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
  1480
    ].
08e6fadff67d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
  1481
4945
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  1482
    keyWithModifier := device prependModifierToKey:key.
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  1483
140
claus
parents: 133
diff changeset
  1484
    translateKeyboardEvents ifTrue:[
4945
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  1485
        xlatedKey := device translateKey:key forView:aView.
140
claus
parents: 133
diff changeset
  1486
    ] ifFalse:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1487
        xlatedKey := key.
140
claus
parents: 133
diff changeset
  1488
    ].
6512
54a7f7e0195e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6509
diff changeset
  1489
    "/ xlatedKey printCR.
54a7f7e0195e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6509
diff changeset
  1490
54a7f7e0195e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6509
diff changeset
  1491
    "/ 'key: ' print. key storeString printCR.
54a7f7e0195e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6509
diff changeset
  1492
    "/ 'xlatedKey: ' print. xlatedKey storeString printCR.    
54a7f7e0195e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6509
diff changeset
  1493
    "/ 'keyWithModifier: ' print. keyWithModifier storeString printCR.    
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1494
5109
561fab737849 comment
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
  1495
    xlatedKey isNil ifTrue:[^ self].
561fab737849 comment
Claus Gittinger <cg@exept.de>
parents: 5079
diff changeset
  1496
4072
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1497
    "/ a special hook, allowing a screen hardCopy.
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1498
    xlatedKey == #Hardcopy ifTrue:[
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1499
        (Transcript notNil and:[Transcript isStream not]) ifTrue:[
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1500
            [
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1501
                Transcript topView application
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1502
                    saveScreenImage:(Image fromView:(aView topView) "inset:0" grab:true) defaultName:'hardcopy'.
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1503
            ] forkAt:Processor userSchedulingPriority + 1.
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1504
        ].
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1505
        ^ self.
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1506
    ].
76ad0a958b16 more (latin2) compose key sequences
Claus Gittinger <cg@exept.de>
parents: 4066
diff changeset
  1507
157
claus
parents: 154
diff changeset
  1508
    (xlatedKey == #Compose) ifTrue:[
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  1509
        gotCompose := true. compose1 := nil.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1510
        ^ self
157
claus
parents: 154
diff changeset
  1511
    ].
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  1512
    gotCompose == true ifTrue:[
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  1513
        compose1 isNil ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1514
            (self isModifierKey:xlatedKey) ifFalse:[
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  1515
                compose1 := xlatedKey. 
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1516
            ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1517
            ^ self
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1518
        ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1519
        (self isModifierKey:xlatedKey) ifFalse:[
3252
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  1520
            xlatedKey  := self compose:compose1 with:xlatedKey.
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  1521
            compose1 := nil. gotCompose := false.
f9d3d0926ff5 oops - compose-state was held in a classvariable
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  1522
        ].
157
claus
parents: 154
diff changeset
  1523
    ].
claus
parents: 154
diff changeset
  1524
claus
parents: 154
diff changeset
  1525
    (xlatedKey == #CmdCtrlV) ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1526
        'Smalltalk/X ' errorPrint. 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1527
        Smalltalk versionString errorPrint. ' of ' errorPrint.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1528
        Smalltalk versionDate errorPrintCR.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1529
        Smalltalk copyrightString errorPrintCR.
140
claus
parents: 133
diff changeset
  1530
    ].
claus
parents: 133
diff changeset
  1531
157
claus
parents: 154
diff changeset
  1532
    (xlatedKey == #DestroyView) ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1533
        aView closeRequest.
157
claus
parents: 154
diff changeset
  1534
    ].
claus
parents: 154
diff changeset
  1535
    (xlatedKey == #DestroyTopView) ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1536
        aView topView closeRequest.
157
claus
parents: 154
diff changeset
  1537
    ].
claus
parents: 154
diff changeset
  1538
152
claus
parents: 144
diff changeset
  1539
    (xlatedKey == #FlushInput) ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1540
        "this removes any enqueued user events -
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1541
         helps, if you pressed DoIt too often, and want to flush those
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1542
        "
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1543
        self flushUserEvents.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1544
        ^ self
152
claus
parents: 144
diff changeset
  1545
    ].
5992
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  1546
    (ControlPeriodEnabled and:[ xlatedKey == #'Ctrl.']) ifTrue:[ xlatedKey := #UserInterrupt ].
152
claus
parents: 144
diff changeset
  1547
2123
b2dae4453526 added additional key: #UserAbort (CTRL-y),
Claus Gittinger <cg@exept.de>
parents: 2090
diff changeset
  1548
    (((xlatedKey == #UserInterrupt) and:[ControlCEnabled])
b2dae4453526 added additional key: #UserAbort (CTRL-y),
Claus Gittinger <cg@exept.de>
parents: 2090
diff changeset
  1549
    or:[((xlatedKey == #UserAbort) and:[ControlYEnabled])]) ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1550
        "
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1551
         Special handling for 
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1552
            Ctrl-C: interrupt the underlying process.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1553
         and:
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1554
            Ctrl-Y: raise abortSignal the underlying process.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1555
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1556
         cannot halt here (this would stop the event-dispatcher),
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1557
         but instead interrupt the underlying process and have it
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1558
         perform the userInterrupt in the interrupt-method.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1559
        "
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1560
        group := aView windowGroup.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1561
        group notNil ifTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1562
            process := group process.
3780
69a0a7142c48 remember process which created a modal group,
Claus Gittinger <cg@exept.de>
parents: 3772
diff changeset
  1563
            process isNil ifTrue:[
69a0a7142c48 remember process which created a modal group,
Claus Gittinger <cg@exept.de>
parents: 3772
diff changeset
  1564
                process := group creatingProcess
69a0a7142c48 remember process which created a modal group,
Claus Gittinger <cg@exept.de>
parents: 3772
diff changeset
  1565
            ].
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1566
            process notNil ifTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1567
                (xlatedKey == #UserAbort) ifTrue:[
4219
28de0357d45f use class based exceptions
Stefan Vogel <sv@exept.de>
parents: 4211
diff changeset
  1568
                    process interruptWith:[:where | AbortOperationRequest raise]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1569
                ] ifFalse:[
7394
bd4d6165fdff #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7376
diff changeset
  1570
                    process interruptWith:[:where | process userInterruptIn:where from:aView]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1571
                ]
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1572
            ]
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1573
        ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1574
        ^ self
140
claus
parents: 133
diff changeset
  1575
    ].
claus
parents: 133
diff changeset
  1576
claus
parents: 133
diff changeset
  1577
    ignoreUserInput == true ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1578
        ^ self
140
claus
parents: 133
diff changeset
  1579
    ].
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1580
6512
54a7f7e0195e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6509
diff changeset
  1581
    "/ 'shift: ' print. shiftDown printCR.
54a7f7e0195e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6509
diff changeset
  1582
    "/ 'ctrl: ' print. ctrlDown printCR.
4211
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1583
    ev := WindowEvent 
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1584
            keyPress:xlatedKey
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1585
            rawKey:keyWithModifier
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1586
            hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1587
            button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1588
            x:x y:y view:aView.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1589
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1590
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1591
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
1528
78c64c132593 started to separate into distinct event classes;
Claus Gittinger <cg@exept.de>
parents: 1512
diff changeset
  1592
    self pushEvent:ev.
78c64c132593 started to separate into distinct event classes;
Claus Gittinger <cg@exept.de>
parents: 1512
diff changeset
  1593
5829
e6755cd564a2 comment/format in: #keyPress:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 5763
diff changeset
  1594
    "Modified: / 04-10-2011 / 19:34:46 / cg"
140
claus
parents: 133
diff changeset
  1595
!
claus
parents: 133
diff changeset
  1596
claus
parents: 133
diff changeset
  1597
keyRelease:key x:x y:y view:aView
claus
parents: 133
diff changeset
  1598
    "key was released - this is sent from the device (Display)."
claus
parents: 133
diff changeset
  1599
1528
78c64c132593 started to separate into distinct event classes;
Claus Gittinger <cg@exept.de>
parents: 1512
diff changeset
  1600
    |xlatedKey ev|
140
claus
parents: 133
diff changeset
  1601
144
claus
parents: 140
diff changeset
  1602
    self key:key state:false. 
claus
parents: 140
diff changeset
  1603
140
claus
parents: 133
diff changeset
  1604
    ignoreUserInput == true ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1605
        ^ self
140
claus
parents: 133
diff changeset
  1606
    ].
claus
parents: 133
diff changeset
  1607
    translateKeyboardEvents ifTrue:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1608
        xlatedKey := aView graphicsDevice translateKey:key forView:aView.
140
claus
parents: 133
diff changeset
  1609
    ] ifFalse:[
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1610
        xlatedKey := key.
140
claus
parents: 133
diff changeset
  1611
    ].
claus
parents: 133
diff changeset
  1612
    xlatedKey isNil ifTrue:[^ self].
claus
parents: 133
diff changeset
  1613
4211
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1614
    ev := WindowEvent
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1615
            keyRelease:xlatedKey
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1616
            rawKey:key
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1617
            hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1618
            button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown
eb8d1eb73520 Fix typo in selector (old EventListener)
Stefan Vogel <sv@exept.de>
parents: 4144
diff changeset
  1619
            x:x y:y view:aView.
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1620
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1621
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1622
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
1528
78c64c132593 started to separate into distinct event classes;
Claus Gittinger <cg@exept.de>
parents: 1512
diff changeset
  1623
    self pushEvent:ev.
78c64c132593 started to separate into distinct event classes;
Claus Gittinger <cg@exept.de>
parents: 1512
diff changeset
  1624
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1625
    "Modified: / 29-06-2011 / 18:46:46 / cg"
140
claus
parents: 133
diff changeset
  1626
!
claus
parents: 133
diff changeset
  1627
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1628
mappedView:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1629
    "view was mapped (from window manager) - this is sent from the device (Display)"
140
claus
parents: 133
diff changeset
  1630
2058
59a52789086a fixed (I hope) redraw bug in debugView
Claus Gittinger <cg@exept.de>
parents: 2052
diff changeset
  1631
    self flushExposeEventsFor:aView.
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  1632
    self pushDamageEvent:(WindowEvent mappedView:aView).
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1633
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1634
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2731
diff changeset
  1635
mouseWheelMotion:state x:x y:y amount:amount deltaTime:dTime view:aView
2699
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1636
    "mouse-wheel was turned - this is sent from the device (Display)"
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1637
4395
2dc5d4730cac Fix when SynchronousWindowSensor does not have a windowGroup
Stefan Vogel <sv@exept.de>
parents: 4293
diff changeset
  1638
    |ev affectedView windowGroup|
2699
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1639
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1640
    "/ update my idea of button and modifier state information
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1641
    self updateModifierStateFrom:state device:(aView graphicsDevice).
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1642
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1643
    ignoreUserInput == true ifTrue:[
2734
13a72f215666 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  1644
        ^ self
2699
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1645
    ].
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1646
3331
7ba9f66c2a22 Comment
Stefan Vogel <sv@exept.de>
parents: 3318
diff changeset
  1647
    "Do we really want the focusView here?
3456
248088c444ec Mouse wheel: chck for nil focusView.
Stefan Vogel <sv@exept.de>
parents: 3451
diff changeset
  1648
     We currently do it, because a unexpected (wrong) view may scroll, 
248088c444ec Mouse wheel: chck for nil focusView.
Stefan Vogel <sv@exept.de>
parents: 3451
diff changeset
  1649
     when the mouse is over a scrollbar!! But horizontal scrolling on
248088c444ec Mouse wheel: chck for nil focusView.
Stefan Vogel <sv@exept.de>
parents: 3451
diff changeset
  1650
     horizontal scrollbars does not work"
4395
2dc5d4730cac Fix when SynchronousWindowSensor does not have a windowGroup
Stefan Vogel <sv@exept.de>
parents: 4293
diff changeset
  1651
5073
2f5d5eb79960 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 5019
diff changeset
  1652
"/    windowGroup := aView windowGroup.
2f5d5eb79960 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 5019
diff changeset
  1653
"/    windowGroup notNil ifTrue:[
2f5d5eb79960 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 5019
diff changeset
  1654
"/        affectedView := windowGroup focusView.
2f5d5eb79960 Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 5019
diff changeset
  1655
"/    ].
4395
2dc5d4730cac Fix when SynchronousWindowSensor does not have a windowGroup
Stefan Vogel <sv@exept.de>
parents: 4293
diff changeset
  1656
    affectedView isNil ifTrue:[
2dc5d4730cac Fix when SynchronousWindowSensor does not have a windowGroup
Stefan Vogel <sv@exept.de>
parents: 4293
diff changeset
  1657
        affectedView := aView
2dc5d4730cac Fix when SynchronousWindowSensor does not have a windowGroup
Stefan Vogel <sv@exept.de>
parents: 4293
diff changeset
  1658
    ].
2699
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1659
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1660
    ev := WindowEvent mouseWheelMotion:state x:x y:y amount:amount deltaTime:dTime view:affectedView.
2699
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1661
    ev hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1662
       button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown.
3331
7ba9f66c2a22 Comment
Stefan Vogel <sv@exept.de>
parents: 3318
diff changeset
  1663
7ba9f66c2a22 Comment
Stefan Vogel <sv@exept.de>
parents: 3318
diff changeset
  1664
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1665
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
2699
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1666
    self pushEvent:ev.
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1667
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1668
    "Created: / 21-05-1999 / 13:05:18 / cg"
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1669
    "Modified: / 29-06-2011 / 18:46:54 / cg"
2699
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1670
!
01594e76fc92 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2689
diff changeset
  1671
4233
088575f01a8a native stuff
ca
parents: 4219
diff changeset
  1672
nativeWidgetCommand:command arguments:argVector view:aView
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1673
    "native widget action - this is sent from the device (Display).
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1674
     These are only delivered if native widgets are enabled under win32"
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1675
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1676
    self pushEvent:(WindowEvent nativeWidgetCommand:command arguments:argVector view:aView).
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1677
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1678
    "Modified: / 29-06-2011 / 18:31:20 / cg"
4144
42b7f6e01565 preps for native widgets
ca
parents: 4142
diff changeset
  1679
!
42b7f6e01565 preps for native widgets
ca
parents: 4142
diff changeset
  1680
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1681
noExposeView:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1682
    "an noexpose event arrived - this is sent from the device (Display)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1683
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1684
    (catchExpose includes:aView) ifFalse:[
7459
fe14f2cd05fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7442
diff changeset
  1685
        Logger info:'noExpose but not catching: %1' with:aView.
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1686
        ^ self.
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1687
    ].
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1688
    gotExpose add:aView.
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1689
    exposeEventSemaphore notNil ifTrue:[
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1690
        exposeEventSemaphore signalForAll
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1691
    ]
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  1692
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1693
    "Modified: / 29-06-2011 / 18:31:54 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1694
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1695
1340
f028f125f606 pasteFromClipBoard: must go through the sensor
Claus Gittinger <cg@exept.de>
parents: 1331
diff changeset
  1696
pasteFromClipBoard:something view:aView
f028f125f606 pasteFromClipBoard: must go through the sensor
Claus Gittinger <cg@exept.de>
parents: 1331
diff changeset
  1697
    "a clipboard paste - this is handled like a user event"
f028f125f606 pasteFromClipBoard: must go through the sensor
Claus Gittinger <cg@exept.de>
parents: 1331
diff changeset
  1698
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1699
    self pushEvent:(WindowEvent pasteFromClipBoard:something view:aView).
1340
f028f125f606 pasteFromClipBoard: must go through the sensor
Claus Gittinger <cg@exept.de>
parents: 1331
diff changeset
  1700
f028f125f606 pasteFromClipBoard: must go through the sensor
Claus Gittinger <cg@exept.de>
parents: 1331
diff changeset
  1701
    "Modified: 18.1.1997 / 14:07:25 / cg"
f028f125f606 pasteFromClipBoard: must go through the sensor
Claus Gittinger <cg@exept.de>
parents: 1331
diff changeset
  1702
    "Created: 13.2.1997 / 13:40:24 / cg"
f028f125f606 pasteFromClipBoard: must go through the sensor
Claus Gittinger <cg@exept.de>
parents: 1331
diff changeset
  1703
!
f028f125f606 pasteFromClipBoard: must go through the sensor
Claus Gittinger <cg@exept.de>
parents: 1331
diff changeset
  1704
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1705
pointerEnter:state x:x y:y view:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1706
    "mouse cursor was moved into the view - this is sent from the device (Display)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1707
1864
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1708
    |ev|
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1709
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  1710
    "/ update my idea of shift/alt/ctrl pressed information
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  1711
    self updateModifierStateFrom:state device:(aView graphicsDevice).
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  1712
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1713
    ev := WindowEvent pointerEnter:state x:x y:y view:aView.
1864
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1714
    ev hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1715
                          button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1716
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1717
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1718
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
1864
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1719
    self pushEvent:ev.
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1720
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1721
    "Modified: / 29-06-2011 / 18:47:05 / cg"
1864
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1722
!
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1723
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1724
pointerLeave:state view:aView
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1725
    "mouse cursor was moved out of the view - this is sent from the device (Display)"
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1726
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1727
    |ev|
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1728
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1729
    "/ update my idea of shift/alt/ctrl pressed information
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1730
    self updateModifierStateFrom:state device:(aView graphicsDevice).
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1731
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1732
    ev := WindowEvent pointerLeave:state view:aView.
1864
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1733
    ev hasShift:shiftDown ctrl:ctrlDown alt:altDown meta:metaDown
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1734
                          button1:leftButtonDown button2:middleButtonDown button3:rightButtonDown.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1735
    "/ any eventListener
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  1736
    "/ (self notifyEventListenersAbout:ev) ifTrue:[^ self].
1864
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1737
    self pushEvent:ev.
4aeff6edaab6 remember modifiers in pointerEnter/Leave events
Claus Gittinger <cg@exept.de>
parents: 1862
diff changeset
  1738
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1739
    "Modified: / 29-06-2011 / 18:47:09 / cg"
140
claus
parents: 133
diff changeset
  1740
!
claus
parents: 133
diff changeset
  1741
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1742
preViewCreateNotification:aView
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1743
    "invoked right before a new view is created.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1744
     Notify listeners and allow for the origin/extent to be
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1745
     changed. (For example, recorder/playback applications may
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1746
     want to make certain that the playback view is at the same
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1747
     position - or record any origin changes to translate later
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1748
     synthetic events)."
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1749
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1750
    |ret|
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1751
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1752
    "/ be prepared that a listener removes itself while we iterate...
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1753
    EventListeners copy do:[:aListener |
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1754
        ret := EventListener preCreateView:aView origin:aView origin.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1755
        ret isPoint ifTrue:[
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1756
            aView setOrigin:ret
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1757
        ]
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1758
    ]
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1759
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1760
    "Modified: / 29-06-2011 / 18:51:17 / cg"
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1761
!
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1762
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1763
propertyChange:aView property:propertyId state:aSymbol time:time
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1764
    "A window has been created in a view"
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1765
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1766
    self pushEvent:(WindowEvent propertyChange:aView property:propertyId state:aSymbol time:time).
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1767
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1768
    "Created: / 01-06-2011 / 13:35:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  1769
    "Modified: / 29-06-2011 / 18:47:21 / cg"
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1770
!
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1771
140
claus
parents: 133
diff changeset
  1772
saveAndTerminateView:aView
claus
parents: 133
diff changeset
  1773
    "view should save & terminate (from window manager) - this is sent from the device (Display)"
claus
parents: 133
diff changeset
  1774
claus
parents: 133
diff changeset
  1775
    self flushEventsFor:aView.
3772
33d21f28fb08 do not push terminate requests onto the damage queue.
Claus Gittinger <cg@exept.de>
parents: 3758
diff changeset
  1776
    self pushEvent: "pushDamageEvent:"(WindowEvent saveAndTerminateView:aView)
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1777
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1778
    "Modified: 18.1.1997 / 14:17:37 / cg"
140
claus
parents: 133
diff changeset
  1779
!
claus
parents: 133
diff changeset
  1780
3758
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1781
selectionClear:selectionID time:time view:aView
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1782
    "the selection owner has changed (someone else has the selection)"
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1783
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1784
    self pushEvent:(WindowEvent::SelectionClearEvent new 
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1785
                        for:aView 
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1786
                        type:#selectionClear: 
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1787
                        arguments:(Array with:selectionID))
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1788
!
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  1789
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1790
terminateView:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1791
    "view should terminate (from window manager) - this is sent from the device (Display)"
140
claus
parents: 133
diff changeset
  1792
2731
8bec6c7db9b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1793
    |wg|
8bec6c7db9b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1794
140
claus
parents: 133
diff changeset
  1795
    self flushEventsFor:aView.
2731
8bec6c7db9b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1796
8bec6c7db9b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1797
    ((wg := aView windowGroup) notNil
5220
7a1e6a830924 When terminating a modal dialog, which does not have a windowGroup process,
Stefan Vogel <sv@exept.de>
parents: 5109
diff changeset
  1798
     and:[wg process isNil or:[wg process isDead]]) ifTrue:[
7a1e6a830924 When terminating a modal dialog, which does not have a windowGroup process,
Stefan Vogel <sv@exept.de>
parents: 5109
diff changeset
  1799
        'WindowSensor [warning]: destroying view for nil/dead windowGroup' infoPrintCR.
7a1e6a830924 When terminating a modal dialog, which does not have a windowGroup process,
Stefan Vogel <sv@exept.de>
parents: 5109
diff changeset
  1800
        aView topView terminate.
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1801
        ^ self
2731
8bec6c7db9b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1802
    ].
5220
7a1e6a830924 When terminating a modal dialog, which does not have a windowGroup process,
Stefan Vogel <sv@exept.de>
parents: 5109
diff changeset
  1803
    "/ don't do it as damage - think of modalBox being open
3772
33d21f28fb08 do not push terminate requests onto the damage queue.
Claus Gittinger <cg@exept.de>
parents: 3758
diff changeset
  1804
    self pushEvent: "pushDamageEvent:" (WindowEvent terminateView:aView).
2731
8bec6c7db9b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1805
8bec6c7db9b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1806
    "Modified: / 25.5.1999 / 15:52:20 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1807
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1808
4818
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1809
trayAction:command arguments:argVector view:aView
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1810
    "native widget action - this is sent from the device (Display)"
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1811
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1812
    |ev|
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1813
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1814
    ev := WindowEvent trayAction:command arguments:argVector view:aView.
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1815
    self pushEvent:ev.
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1816
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1817
    "Created: / 31-10-2007 / 01:22:08 / cg"
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1818
!
a56e2ee474ce trayEvents
Claus Gittinger <cg@exept.de>
parents: 4741
diff changeset
  1819
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1820
unmappedView:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1821
    "view was unmapped (from window manager) - this is sent from the device (Display)"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  1822
2058
59a52789086a fixed (I hope) redraw bug in debugView
Claus Gittinger <cg@exept.de>
parents: 2052
diff changeset
  1823
    self flushExposeEventsFor:aView.
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1824
    self pushDamageEvent:(WindowEvent unmappedView:aView).
2058
59a52789086a fixed (I hope) redraw bug in debugView
Claus Gittinger <cg@exept.de>
parents: 2052
diff changeset
  1825
59a52789086a fixed (I hope) redraw bug in debugView
Claus Gittinger <cg@exept.de>
parents: 2052
diff changeset
  1826
    "Modified: / 16.2.1998 / 13:20:37 / cg"
5839
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1827
!
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1828
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1829
visibilityOf:aView changedTo:how
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1830
    "view was mapped (from window manager) - this is sent from the device (Display)"
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1831
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1832
    "/ self flushExposeEventsFor:aView.
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1833
    self pushDamageEvent:(WindowEvent visibilityOf:aView changedTo:how).
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1834
a763b3fed5eb added: #visibilityOf:changedTo:
Claus Gittinger <cg@exept.de>
parents: 5829
diff changeset
  1835
    "Created: / 23-01-2012 / 09:49:13 / cg"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1836
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1837
3885
f00086641b23 method category rename
Claus Gittinger <cg@exept.de>
parents: 3880
diff changeset
  1838
!WindowSensor methodsFor:'event processing-private'!
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1839
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1840
button:button inView:aView state:onOrOff
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1841
    "update the state of the xxxButtonDown flags"
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1842
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1843
    |physicalButton|
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1844
743
64c9b71b3cc4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 708
diff changeset
  1845
    physicalButton := aView graphicsDevice buttonTranslation keyAtValue:button ifAbsent:button.
1084
9c433066e960 oops - leftover debugPrint
Claus Gittinger <cg@exept.de>
parents: 1083
diff changeset
  1846
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1847
    (physicalButton == 1) ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1848
        leftButtonDown := onOrOff.
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1849
        ^ self
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1850
    ].
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1851
    (physicalButton == 2) ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1852
        middleButtonDown := onOrOff.
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1853
        ^ self
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1854
    ].
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1855
    (physicalButton == 3) ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1856
        rightButtonDown := onOrOff.
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1857
        ^ self
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1858
    ].
743
64c9b71b3cc4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 708
diff changeset
  1859
1084
9c433066e960 oops - leftover debugPrint
Claus Gittinger <cg@exept.de>
parents: 1083
diff changeset
  1860
    "Modified: 21.10.1996 / 11:47:35 / cg"
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1861
!
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1862
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1863
compose:key1 with:key2
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1864
    "compose a 2-character sequence into a composed key"
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1865
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1866
    ComposeTable do:[:entry |
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
  1867
        ((key1 == (entry at:1)) and:[key2 == (entry at:2)]) ifTrue:[
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
  1868
            ^ entry at:3.
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
  1869
        ]
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1870
    ].
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1871
    "/
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1872
    "/ for illegal sequence, return 2nd key
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1873
    "/
3318
2ba64af7dfc6 Add reverse compose keys ("u for ü) and Euro-Support (C=)
Stefan Vogel <sv@exept.de>
parents: 3298
diff changeset
  1874
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1875
    ^ key2
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1876
!
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1877
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1878
isModifierKey:key
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1879
    "return true if key is a modifier (Alt, Shift, Ctrl or Meta)"
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1880
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1881
    (key == #Shift
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1882
    or:[key == #'Shift_R' 
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1883
    or:[key == #'Shift_L']]) ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1884
        ^ true
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1885
    ].
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1886
    (key == #Alt
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1887
    or:[key == #'Alt_R' or:[key == #'Alt_L']])  ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1888
        ^ true
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1889
    ].
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1890
    (key == #Meta
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1891
    or:[key == #'Meta_R' or:[key == #'Meta_L']]) ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1892
        ^ true
2262
c97df93c1781 Ctrl is handled like Control (WinWorkstation bug workaround)
Claus Gittinger <cg@exept.de>
parents: 2177
diff changeset
  1893
    ].
c97df93c1781 Ctrl is handled like Control (WinWorkstation bug workaround)
Claus Gittinger <cg@exept.de>
parents: 2177
diff changeset
  1894
    (key == #Ctrl
c97df93c1781 Ctrl is handled like Control (WinWorkstation bug workaround)
Claus Gittinger <cg@exept.de>
parents: 2177
diff changeset
  1895
    or:[key == #'Ctrl_R' or:[key == #'Ctrl_L']]) ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1896
        ^ true
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1897
    ].
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1898
    (key == #Control
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1899
    or:[key == #'Control_R' or:[key == #'Control_L']]) ifTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  1900
        ^ true
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1901
    ].
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1902
    ^ false
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1903
2262
c97df93c1781 Ctrl is handled like Control (WinWorkstation bug workaround)
Claus Gittinger <cg@exept.de>
parents: 2177
diff changeset
  1904
    "Modified: / 22.8.1998 / 02:33:46 / cg"
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1905
!
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1906
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1907
key:key state:onOrOff
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1908
    "update the state of the shiftDown/metaDown and ctrlDown
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1909
     flags"
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1910
5365
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  1911
    (key == #Shift
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  1912
    or:[key == #'Shift_R' 
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  1913
    or:[key == #'Shift_L']]) ifTrue:[
4065
215515cb52df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4064
diff changeset
  1914
        shiftDown := onOrOff.
215515cb52df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4064
diff changeset
  1915
        ^ self
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1916
    ].
5365
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  1917
    (key == #Alt
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  1918
    or:[key == #'Alt_R' or:[key == #'Alt_L']])  ifTrue:[
4065
215515cb52df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4064
diff changeset
  1919
        altDown := onOrOff.
215515cb52df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4064
diff changeset
  1920
        ^ self
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1921
    ].
5365
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  1922
    (key == #Meta
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  1923
    or:[key == #'Meta_R' or:[key == #'Meta_L']]) ifTrue:[
4065
215515cb52df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4064
diff changeset
  1924
        metaDown := onOrOff.
215515cb52df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4064
diff changeset
  1925
        ^ self
2262
c97df93c1781 Ctrl is handled like Control (WinWorkstation bug workaround)
Claus Gittinger <cg@exept.de>
parents: 2177
diff changeset
  1926
    ].
6000
dccaf35c390a class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5995
diff changeset
  1927
    (key == #Cmd) ifTrue:[
dccaf35c390a class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5995
diff changeset
  1928
        metaDown := onOrOff.
dccaf35c390a class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5995
diff changeset
  1929
        ^ self
dccaf35c390a class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5995
diff changeset
  1930
    ].
dccaf35c390a class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5995
diff changeset
  1931
    (key == #Menu) ifTrue:[
dccaf35c390a class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5995
diff changeset
  1932
        metaDown := onOrOff.
dccaf35c390a class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5995
diff changeset
  1933
        ^ self
dccaf35c390a class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5995
diff changeset
  1934
    ].
5365
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  1935
    (key == #Ctrl
6124
2a132679c3a1 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6112
diff changeset
  1936
    or:[ key == #'Ctrl_R' or:[key == #'Ctrl_L'
2a132679c3a1 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6112
diff changeset
  1937
    or:[ key == #Control
2a132679c3a1 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6112
diff changeset
  1938
    or:[ key == #'Control_R' or:[key == #'Control_L']]]]]) ifTrue:[
4065
215515cb52df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4064
diff changeset
  1939
        ctrlDown := onOrOff.
215515cb52df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4064
diff changeset
  1940
        ^ self
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1941
    ].
2262
c97df93c1781 Ctrl is handled like Control (WinWorkstation bug workaround)
Claus Gittinger <cg@exept.de>
parents: 2177
diff changeset
  1942
6124
2a132679c3a1 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6112
diff changeset
  1943
    "Modified: / 29-08-2013 / 16:29:32 / cg"
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1944
!
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1945
7326
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1946
notifyEventArrival:anEventOrNil
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1947
    "an event arrived - if there is an eventSemaphore,
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1948
     signal it, to wake up any windowGroup process"
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1949
7326
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1950
    |evView wgProcess|
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1951
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1952
    anEventOrNil notNil ifTrue:[
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1953
        evView := anEventOrNil view.
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1954
        (evView notNil and:[catchExpose includesIdentical:evView]) ifTrue:[
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1955
            "/ don't signal sema, if we are currently waiting for an expose
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1956
            "/ (confirmation of a scroll operation).
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1957
            "/ instead, remember that any event arrived for this view.
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1958
            gotOtherEvent add:evView.
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1959
            ^ self
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1960
        ].
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1961
    ].
7329
72f93ee8904e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7327
diff changeset
  1962
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1963
    eventSemaphore notNil ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1964
        "/ can get along with a single trigger;
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  1965
        "/ because processEvents will read all events
7326
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1966
        eventSemaphore signalOnce.
7329
72f93ee8904e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7327
diff changeset
  1967
7326
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1968
        "/ a little kludge:
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1969
        "/ if this is a mouse-click, AND more than one event is already in the queue
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1970
        "/ AND the windowGroup process is being debugged,
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1971
        "/ then raise the debugger.
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1972
        evView notNil ifTrue:[
7327
c9b7921e8134 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7326
diff changeset
  1973
            (anEventOrNil isButtonPressEvent 
c9b7921e8134 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7326
diff changeset
  1974
            or:[ anEventOrNil isKeyPressEvent]) ifTrue:[
7326
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1975
                mouseAndKeyboard size > 1 ifTrue:[
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1976
                    evView windowGroup notNil ifTrue:[
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1977
                        (wgProcess := evView windowGroup process) notNil ifTrue:[
7329
72f93ee8904e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7327
diff changeset
  1978
                            wgProcess isDebugged ifTrue:[
72f93ee8904e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7327
diff changeset
  1979
                                "/ but not for debuggers inside debuggers
7733
2b19dc622ad8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7708
diff changeset
  1980
                                (evView topView isDebugView) ifFalse:[
7329
72f93ee8904e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7327
diff changeset
  1981
                                    DebugView allInstances do:[:dbg |
72f93ee8904e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7327
diff changeset
  1982
                                        dbg inspectedProcess == wgProcess ifTrue:[
72f93ee8904e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7327
diff changeset
  1983
                                            dbg window topView raiseDeiconified
72f93ee8904e #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7327
diff changeset
  1984
                                        ].    
7326
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1985
                                    ].    
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1986
                                ].    
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1987
                            ].    
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1988
                        ].    
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1989
                    ].    
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1990
                ].        
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1991
            ].        
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  1992
        ].        
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1993
    ]
1184
1372bad824af single trigger on the eventSemaphore is ok
Claus Gittinger <cg@exept.de>
parents: 1179
diff changeset
  1994
1312
92570edec99c try again with single wakeUp (#signalIf);
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  1995
    "Modified: 8.2.1997 / 12:01:48 / cg"
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1996
!
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  1997
3199
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
  1998
notifyEventListenersAbout:anEvent
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  1999
    "notify all eventHandlers about an incoming event.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2000
     If any returns true, it is assumed to be eaten by the handler and not
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2001
     enqueued (i.e. not passed to the windowGroup process)"
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2002
3199
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
  2003
    |anyListenerReturnedTrue v|
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2004
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2005
    anyListenerReturnedTrue := false.
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2006
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2007
    "/ global listeners...
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2008
    EventListeners notNil ifTrue:[
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2009
        "/ be prepared that a listener removes itself while we iterate...
4913
2ac2acd451c6 changed #notifyEventListenersAbout:
Claus Gittinger <cg@exept.de>
parents: 4818
diff changeset
  2010
        EventListeners copy do:[:aListener |
3390
b56e17e785c7 oops - some eventListeners seem not to return aBoolean (make sure that
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
  2011
            (aListener processEvent:anEvent) == true ifTrue:[
b56e17e785c7 oops - some eventListeners seem not to return aBoolean (make sure that
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
  2012
                 anyListenerReturnedTrue := true
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2013
            ]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2014
        ]
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2015
    ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2016
3199
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
  2017
    "/ per device listeners
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
  2018
    "/ KLUDGE: change this as soon as DeviceWorkstation creates WindowEvents.
7442
4d3a7e94ff48 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 7394
diff changeset
  2019
    ((v := anEvent view) notNil and:[v device notNil]) ifTrue:[
3390
b56e17e785c7 oops - some eventListeners seem not to return aBoolean (make sure that
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
  2020
        (v device notifyEventListenersAbout:anEvent) == true ifTrue:[
b56e17e785c7 oops - some eventListeners seem not to return aBoolean (make sure that
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
  2021
            anyListenerReturnedTrue := true
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2022
        ]
3199
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
  2023
    ].
924df06de152 Forwrd events to per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 3140
diff changeset
  2024
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2025
    "/ local listeners ...
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2026
    eventListeners notNil ifTrue:[
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2027
        "/ be prepared that a listener removes itself while we iterate...
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2028
        eventListeners copy do:[:aListener |
7203
Stefan Vogel <sv@exept.de>
parents: 7091
diff changeset
  2029
            "SV 2016-03-08: I got a nil listener - work around"
Stefan Vogel <sv@exept.de>
parents: 7091
diff changeset
  2030
            (aListener notNil and:[(aListener processEvent:anEvent) == true]) ifTrue:[
3390
b56e17e785c7 oops - some eventListeners seem not to return aBoolean (make sure that
Claus Gittinger <cg@exept.de>
parents: 3381
diff changeset
  2031
                anyListenerReturnedTrue := true
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2032
            ]
3006
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2033
        ]
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2034
    ].
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2035
e394075f9fec generalized eventListener mechanism
Stefan Vogel <sv@exept.de>
parents: 2939
diff changeset
  2036
    ^ anyListenerReturnedTrue.
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2037
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2038
    "Modified: / 29-06-2011 / 18:50:25 / cg"
5075
2d90ae78fd5c added #setShiftDown:
fm
parents: 5073
diff changeset
  2039
!
2d90ae78fd5c added #setShiftDown:
fm
parents: 5073
diff changeset
  2040
2d90ae78fd5c added #setShiftDown:
fm
parents: 5073
diff changeset
  2041
setCtrlDown:aBoolean
2d90ae78fd5c added #setShiftDown:
fm
parents: 5073
diff changeset
  2042
    ctrlDown := aBoolean.
2d90ae78fd5c added #setShiftDown:
fm
parents: 5073
diff changeset
  2043
!
2d90ae78fd5c added #setShiftDown:
fm
parents: 5073
diff changeset
  2044
2d90ae78fd5c added #setShiftDown:
fm
parents: 5073
diff changeset
  2045
setShiftDown:aBoolean
2d90ae78fd5c added #setShiftDown:
fm
parents: 5073
diff changeset
  2046
    shiftDown := aBoolean.
5365
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2047
!
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2048
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2049
updateModifierStatesFrom:anotherSensor
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2050
    "update the state of the shiftDown, metaDown and ctrlDown flags
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2051
     from another window sensor"
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2052
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2053
    shiftDown := anotherSensor shiftDown.
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2054
    altDown := anotherSensor altDown.
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2055
    metaDown := anotherSensor metaDown.
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  2056
    ctrlDown := anotherSensor ctrlDown.
581
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  2057
! !
23dc2352dce9 commentary
Claus Gittinger <cg@exept.de>
parents: 547
diff changeset
  2058
140
claus
parents: 133
diff changeset
  2059
!WindowSensor methodsFor:'event queue'!
claus
parents: 133
diff changeset
  2060
144
claus
parents: 140
diff changeset
  2061
addDamage:aRectangle view:aView
1318
5810dfc3137a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1317
diff changeset
  2062
    "{ Pragma: +optSpeed }"
5810dfc3137a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1317
diff changeset
  2063
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2064
    "Add aRectangle to the damage list.
144
claus
parents: 140
diff changeset
  2065
     Try to merge incoming rectangles with the existing damage rectangles.
claus
parents: 140
diff changeset
  2066
     Incoming rectangles which are completely contained in any existing damage rect are ignored,
claus
parents: 140
diff changeset
  2067
     any existing damage rectangle which is completely contained in the incoming rectangle
2469
faf22c6b0746 rectangle merging simplified.
Claus Gittinger <cg@exept.de>
parents: 2441
diff changeset
  2068
     is replaced."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2069
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2070
    self addDamage:aRectangle view:aView wakeup:true
751
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2071
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2072
    "Modified: 28.5.1996 / 21:52:47 / cg"
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2073
!
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2074
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2075
addDamage:aRectangle view:aView wakeup:doWakeup
1317
e1bd3b4aee72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1312
diff changeset
  2076
    "{ Pragma: +optSpeed }"
e1bd3b4aee72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1312
diff changeset
  2077
751
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2078
    "Add aRectangle to the damage list.
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2079
     Try to merge incoming rectangles with the existing damage rectangles.
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2080
     Incoming rectangles which are completely contained in any existing damage rect are ignored,
043bbbd431e6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 743
diff changeset
  2081
     any existing damage rectangle which is completely contained in the incoming rectangle
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2082
     is replaced."
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2083
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2084
    |didAddNewDamage|
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2085
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2086
    self criticalDamageEventQueueAccess:[
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2087
        didAddNewDamage := self basicAddDamage:aRectangle view:aView.
3042
1b5c59eb369a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3037
diff changeset
  2088
    ].
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2089
    didAddNewDamage ifTrue:[
3042
1b5c59eb369a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3037
diff changeset
  2090
        doWakeup ifTrue:[
7326
086645312963 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7258
diff changeset
  2091
            self notifyEventArrival:nil.
3042
1b5c59eb369a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3037
diff changeset
  2092
        ].
1312
92570edec99c try again with single wakeUp (#signalIf);
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  2093
    ].
92570edec99c try again with single wakeUp (#signalIf);
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  2094
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2095
    "Created: / 28.5.1996 / 21:51:16 / cg"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2096
    "Modified: / 6.6.1998 / 21:09:06 / cg"
1312
92570edec99c try again with single wakeUp (#signalIf);
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  2097
!
92570edec99c try again with single wakeUp (#signalIf);
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  2098
4050
f8ba83a13a08 new damage scheme
Claus Gittinger <cg@exept.de>
parents: 4048
diff changeset
  2099
basicAddDamage:newRectangle view:aView
1317
e1bd3b4aee72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1312
diff changeset
  2100
    "{ Pragma: +optSpeed }"
e1bd3b4aee72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1312
diff changeset
  2101
7708
b5422dfa6526 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7664
diff changeset
  2102
    "Add newRectangle to the view's update region.
4052
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2103
     Must be careful, if the damage queue contains an event pattern such as:
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2104
        damage  map     
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2105
     in this case, a new damage event is required to be added AFTER the map event,
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2106
     otherwise, the newRectangle will be processed in a state where the map has not yet been
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2107
     processed and the view thinks it can be ignored.
6134
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2108
     In this case, the damage event is re-added at the end of the queue.
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2109
     Attention: this methid MUST be called in a critical region, controlling the damage queue access"
4052
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2110
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2111
    |sz  "{ Class: SmallInteger }" 
5677
dbb889d98fe7 changed: #basicAddDamage:view:
Claus Gittinger <cg@exept.de>
parents: 5544
diff changeset
  2112
     aDamageEvent oldDamageEvent oldDamageEventIndex anyOtherEventPending lastNilIndex
dbb889d98fe7 changed: #basicAddDamage:view:
Claus Gittinger <cg@exept.de>
parents: 5544
diff changeset
  2113
     ev "badGuy"|
4045
e0fd6269e2a2 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 3888
diff changeset
  2114
e0fd6269e2a2 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 3888
diff changeset
  2115
    "/ NEWDAMAGE handling - experimental;
e0fd6269e2a2 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 3888
diff changeset
  2116
    "/ comment these lines if you encounter trouble.
2469
faf22c6b0746 rectangle merging simplified.
Claus Gittinger <cg@exept.de>
parents: 2441
diff changeset
  2117
    sz := damage size.
4412
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2118
    (sz > 100) ifTrue:[
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2119
        damage := damage select:[:d | d notNil].
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2120
        sz := damage size.
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2121
    ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2122
6134
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2123
    "/ find any other damage for this view,
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2124
    "/ and as a side effect, find the index of the last empty damage queue slot (nil index)
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2125
    oldDamageEventIndex := nil.
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2126
    anyOtherEventPending := false.
2469
faf22c6b0746 rectangle merging simplified.
Claus Gittinger <cg@exept.de>
parents: 2441
diff changeset
  2127
    1 to:sz do:[:idx |
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2128
        aDamageEvent := damage at:idx.
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2129
        aDamageEvent notNil ifTrue:[
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2130
            (aDamageEvent isDamageForView:aView) ifTrue:[
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2131
                oldDamageEvent := aDamageEvent.
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2132
                oldDamageEventIndex := idx.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2133
            ] ifFalse:[
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2134
                anyOtherEventPending := true.
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2135
            ]
4412
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2136
        ] ifFalse:[
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2137
            lastNilIndex := idx
3217
c174ecb8dd3b limit amount of damage events in sensor-queue
Claus Gittinger <cg@exept.de>
parents: 3199
diff changeset
  2138
        ].
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2139
    ].
4053
fa961bb998de *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4052
diff changeset
  2140
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2141
    oldDamageEventIndex notNil ifTrue:[
6134
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2142
        "/ there is already a damage for this view in the queue
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2143
        "/ (which will wake up the WG, if currently sleeping).
7708
b5422dfa6526 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7664
diff changeset
  2144
        "/ so all we have to do is to add the reactangle to the view's updateRegion.
6134
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2145
        "/ However, if the view was unmapped, and there is
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2146
        "/ a mapped event AFTER the expose, we MUST perform the expose
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2147
        "/ after we have handled the mapped event.
7708
b5422dfa6526 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7664
diff changeset
  2148
        "/ (otherwise, the expose-rect would be added to the view's expose region,
6134
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2149
        "/  and handed at a time when the view thinks it's still unmapped and therefore
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2150
        "/  ignore the exposes.)
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2151
        "/ Therefore, clear the old damage event and add a new one at the end,
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2152
        "/ so that the damages will be processed AFTER the mapEvent has been processed.
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2153
        anyOtherEventPending ifFalse:[
4052
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2154
            ^ aView addUpdateRectangle:newRectangle.
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2155
        ].
6134
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2156
4412
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2157
        (oldDamageEventIndex > (sz-30)) ifTrue:[
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2158
            damage removeIndex:oldDamageEventIndex.
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2159
        ] ifFalse:[
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2160
            damage at:oldDamageEventIndex put:nil.
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2161
            (lastNilIndex notNil and:[lastNilIndex > (sz-30)]) ifTrue:[
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2162
                damage removeIndex:lastNilIndex.
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2163
            ].
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2164
        ].
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2165
        damage add:oldDamageEvent.
4052
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2166
        aView addUpdateRectangle:newRectangle.
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2167
        ^ true
2470
0a7b3943ce90 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2168
    ].
0a7b3943ce90 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2469
diff changeset
  2169
4412
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2170
    (lastNilIndex notNil and:[lastNilIndex > (sz-30)]) ifTrue:[
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2171
        damage removeIndex:lastNilIndex.
f8a032c5e53d damage queue compression
Claus Gittinger <cg@exept.de>
parents: 4395
diff changeset
  2172
    ].
5677
dbb889d98fe7 changed: #basicAddDamage:view:
Claus Gittinger <cg@exept.de>
parents: 5544
diff changeset
  2173
6134
9884d39f0239 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6124
diff changeset
  2174
    aView addUpdateRectangle:newRectangle.
5677
dbb889d98fe7 changed: #basicAddDamage:view:
Claus Gittinger <cg@exept.de>
parents: 5544
diff changeset
  2175
    ev := WindowEvent newDamageFor:aView.
dbb889d98fe7 changed: #basicAddDamage:view:
Claus Gittinger <cg@exept.de>
parents: 5544
diff changeset
  2176
    damage add:ev.
2469
faf22c6b0746 rectangle merging simplified.
Claus Gittinger <cg@exept.de>
parents: 2441
diff changeset
  2177
    ^ true.
faf22c6b0746 rectangle merging simplified.
Claus Gittinger <cg@exept.de>
parents: 2441
diff changeset
  2178
4052
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2179
"/    |newEvent r fullRedraw aDamageEvent 
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2180
"/     nDamagesForView bounds areaOfIndividualRects thisRectangle
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2181
"/     mergedLeft mergedRight mergedTop mergedBottom
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2182
"/     sz                "{ Class: SmallInteger }"
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2183
"/     updateRegion oldDamageEvent oldDamageEventIndex anyOtherEventPending|
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2184
"/
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2185
"/    "Add newRectangle to the damage list.
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2186
"/     Try to merge incoming rectangles with the existing damage rectangles.
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2187
"/     Incoming rectangles which are completely contained in any existing damage rect are ignored,
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2188
"/     any existing damage rectangle which is completely contained in the incoming rectangle is replaced.
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2189
"/     Returns true, if a new event has been added to the queue, false if it was optimized away."
5cd7eef42703 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4051
diff changeset
  2190
"/
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2191
"/    "/ OLDDAMAGE handling
4050
f8ba83a13a08 new damage scheme
Claus Gittinger <cg@exept.de>
parents: 4048
diff changeset
  2192
"/    r := newRectangle.
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2193
"/    ((fullRedraw := aView redrawsFull) 
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2194
"/    or:[sz > 200]) ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2195
"/        r := 0@0 corner:9999@9999.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2196
"/        newEvent := WindowEvent damageFor:aView rectangle:r.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2197
"/        damage add:newEvent.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2198
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2199
"/        "/ remove all other damages for this view ...
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2200
"/        1 to:sz do:[:idx |
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2201
"/            aDamageEvent := damage at:idx.
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2202
"/            aDamageEvent notNil ifTrue:[
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2203
"/                (aDamageEvent isDamageForView:aView) ifTrue:[
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2204
"/                    damage at:idx put:nil
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2205
"/                ]
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2206
"/            ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2207
"/        ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2208
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2209
"/        ^ true
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2210
"/    ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2211
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2212
"/    "/ remove other damages which are contained in this rectangle
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2213
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2214
"/    nDamagesForView := 0.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2215
"/    bounds := r.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2216
"/    areaOfIndividualRects := r area.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2217
"/    1 to:sz do:[:idx |
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2218
"/        aDamageEvent := damage at:idx.
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2219
"/        aDamageEvent notNil ifTrue:[
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2220
"/            (aDamageEvent isDamageForView:aView) ifTrue:[
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2221
"/                thisRectangle := aDamageEvent rectangle.
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2222
"/                (r contains:thisRectangle) ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2223
"/                    "/ the new rectangle contains that old damage
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2224
"/                    damage at:idx put:nil
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2225
"/                ] ifFalse:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2226
"/                    "/ the old damage contains the new rectangle    
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2227
"/                    (thisRectangle contains:r) ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2228
"/                        ^ false
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2229
"/                    ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2230
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2231
"/                    "/ try to merge at left/right    
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2232
"/                    r top == thisRectangle top ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2233
"/                        r height == thisRectangle height ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2234
"/                            mergedLeft := (r left min:thisRectangle left).
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2235
"/                            mergedRight := (r right max:thisRectangle right).
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2236
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2237
"/                            "/ only merge, if the merged area is not larger than 150% of the sum of the individual areas
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2238
"/                            (r width + thisRectangle width) * 1.5 > (mergedRight - mergedLeft) ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2239
"/                                thisRectangle left:mergedLeft.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2240
"/                                thisRectangle right:mergedRight.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2241
"/                                ^ false
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2242
"/                            ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2243
"/                        ]
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2244
"/                    ] ifFalse:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2245
"/                        "/ try to merge at top/bottom    
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2246
"/                        r left == thisRectangle left ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2247
"/                            r width == thisRectangle width ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2248
"/                                mergedTop := (r top min:thisRectangle top).
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2249
"/                                mergedBottom := (r bottom max:thisRectangle bottom).
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2250
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2251
"/                                "/ only merge, if the merged area is not larger than 150% of the sum of the individual areas
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2252
"/                                (r height + thisRectangle height) * 1.5 > (mergedBottom - mergedTop) ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2253
"/                                    thisRectangle top:mergedTop.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2254
"/                                    thisRectangle bottom:mergedBottom.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2255
"/                                    ^ false
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2256
"/                                ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2257
"/                            ]
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2258
"/                        ]
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2259
"/                    ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2260
"/                    nDamagesForView := nDamagesForView + 1.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2261
"/                    bounds := bounds merge:thisRectangle.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2262
"/                    areaOfIndividualRects := areaOfIndividualRects + thisRectangle area.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2263
"/                ]
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2264
"/            ]
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2265
"/        ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2266
"/    ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2267
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2268
"/    "/ if there are many rectangles for this view,
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2269
"/    "/ or the bounding rectangles area is not too much
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2270
"/    "/ bigger, replace by a single rectangle
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2271
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2272
"/    (nDamagesForView > 20
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2273
"/    or:[bounds notNil 
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2274
"/        and:[(areaOfIndividualRects * 1.5) > bounds area]])  ifTrue:[
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2275
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2276
"/        "/ remove all other damages for this view ...
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2277
"/        1 to:sz do:[:idx |
4051
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2278
"/            aDamageEvent := damage at:idx.
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2279
"/            aDamageEvent notNil ifTrue:[
be45b140e486 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4050
diff changeset
  2280
"/                (aDamageEvent isDamageForView:aView) ifTrue:[
4048
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2281
"/                    damage at:idx put:nil
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2282
"/                ]
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2283
"/            ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2284
"/        ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2285
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2286
"/        r := bounds.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2287
"/    ].
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2288
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2289
"/    "/ add the new damage
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2290
"/    newEvent := WindowEvent damageFor:aView rectangle:r.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2291
"/    damage add:newEvent.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2292
"/
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2293
"/    ^ true.
f62ed7060056 newDamage handling
Claus Gittinger <cg@exept.de>
parents: 4045
diff changeset
  2294
5677
dbb889d98fe7 changed: #basicAddDamage:view:
Claus Gittinger <cg@exept.de>
parents: 5544
diff changeset
  2295
    "Modified: / 20-01-2011 / 22:41:50 / cg"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2296
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2297
6568
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2298
basicPushEvent:anEvent
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2299
    "intenral basic event queueing"
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2300
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2301
    self criticalUserEventQueueAccess:[
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2302
        mouseAndKeyboard addLast:anEvent.
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2303
    ].
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2304
    self notifyEventArrival:anEvent
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2305
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2306
    "Created: / 18-09-1995 / 22:37:57 / claus"
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2307
    "Modified: / 29-06-2011 / 18:57:19 / cg"
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2308
!
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2309
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2310
nextDamage
703
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
  2311
    "retrieve the next damage (either expose or resize event)
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
  2312
     or nil, if there is none. Remove it from the queue."
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2313
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2314
    |d|
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2315
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2316
    damage size == 0 ifTrue:[^ nil].
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2317
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2318
    "
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2319
     be careful: events are inserted at higher prio ...
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2320
    "
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2321
    self criticalDamageEventQueueAccess:[
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2322
        |foundOne|
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2323
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2324
        foundOne := false.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2325
        [foundOne] whileFalse:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2326
            damage size == 0 ifTrue:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2327
                foundOne := true
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2328
            ] ifFalse:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2329
                d := damage removeFirst.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2330
                foundOne := d notNil.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2331
            ]
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2332
        ]
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2333
    ].
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2334
    ^ d
476
cc4848695a66 care to reenable interrupts
Claus Gittinger <cg@exept.de>
parents: 470
diff changeset
  2335
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2336
    "Modified: / 6.6.1998 / 21:10:27 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2337
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2338
2408
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2339
nextDamageEventFor:aViewOrNil
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2340
    "retrieve the next damage event for aView (or any view if nil).
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2341
     Return if there are no damage events.
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2342
     Remove it from the queue."
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2343
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2344
    |theEvent|
2431
4304b047a42f oops - damage queue grew over time (slowing down event handling)
Claus Gittinger <cg@exept.de>
parents: 2429
diff changeset
  2345
2408
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2346
    damage size == 0 ifTrue:[^ nil].
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2347
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2348
    "
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2349
     be careful: events are inserted at higher prio ...
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2350
    "
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2351
    self criticalDamageEventQueueAccess:[
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2352
        |anEvent idx damageSize firstNonNilIndex|
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2353
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2354
        idx := 1.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2355
        damageSize := damage size.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2356
        [idx <= damageSize] whileTrue:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2357
            anEvent := damage at:idx.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2358
            anEvent notNil ifTrue:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2359
                firstNonNilIndex isNil ifTrue:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2360
                    firstNonNilIndex := idx
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2361
                ].
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2362
                (aViewOrNil isNil or:[anEvent view == aViewOrNil]) ifTrue:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2363
                    damage at:idx put:nil.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2364
                    theEvent := anEvent.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2365
                    idx := damageSize.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2366
                ].
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2367
            ].
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2368
            idx := idx + 1.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2369
        ].
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2370
        firstNonNilIndex isNil ifTrue:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2371
            damage removeAll
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2372
        ] ifFalse:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2373
            firstNonNilIndex ~~ 1 ifTrue:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2374
                damage removeFromIndex:1 toIndex:(firstNonNilIndex-1)
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2375
            ]
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2376
        ]
2408
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2377
    ].
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2378
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2379
    ^ theEvent
2408
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2380
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2381
    "Created: / 3.12.1998 / 13:41:49 / cg"
2439
358644786358 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2437
diff changeset
  2382
    "Modified: / 5.2.1999 / 20:58:20 / cg"
2408
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2383
!
dd4371ba92e1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2397
diff changeset
  2384
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2385
nextEvent
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2386
    "retrieve the next event or nil, if there is none.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2387
     Remove it from the queue."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2388
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2389
    |e|
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2390
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2391
    mouseAndKeyboard size == 0 ifTrue:[^ nil].
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2392
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2393
    "
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2394
     be careful: events are inserted at higher prio ...
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2395
    "
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2396
    self criticalUserEventQueueAccess:[
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2397
        |foundOne|
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2398
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2399
        foundOne := false.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2400
        [foundOne] whileFalse:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2401
            mouseAndKeyboard size == 0 ifTrue:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2402
                foundOne := true
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2403
            ] ifFalse:[
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2404
                e := mouseAndKeyboard removeFirst.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2405
                foundOne := e notNil.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2406
            ]
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3237
diff changeset
  2407
        ]
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2408
    ].
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2409
    ^ e
476
cc4848695a66 care to reenable interrupts
Claus Gittinger <cg@exept.de>
parents: 470
diff changeset
  2410
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2411
    "Modified: / 6.6.1998 / 21:10:39 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2412
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2413
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2414
nextExposeEventFor:aViewOrNil
1806
16c958be35d8 fixed no-deviceID error with destroy arriving while waiting for
Claus Gittinger <cg@exept.de>
parents: 1791
diff changeset
  2415
    "retrieve the next expose event for aView (or any view if nil).
16c958be35d8 fixed no-deviceID error with destroy arriving while waiting for
Claus Gittinger <cg@exept.de>
parents: 1791
diff changeset
  2416
     Return if there are no expose events.
703
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
  2417
     Remove it from the queue."
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
  2418
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2419
    |theEvent|
2432
d4daad924fbf checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2431
diff changeset
  2420
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2421
    damage size == 0 ifTrue:[^ nil].
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2422
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2423
    "
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2424
     be careful: events are inserted at higher prio ...
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2425
    "
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2426
    self criticalDamageEventQueueAccess:[
2810
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2427
        |firstNonNilIndex anEvent idx damageSize|
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2428
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2429
        idx := 1.
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2430
        damageSize := damage size.
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2431
        [idx <= damageSize] whileTrue:[
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2432
            anEvent := damage at:idx.
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2433
            anEvent notNil ifTrue:[
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2434
                firstNonNilIndex isNil ifTrue:[
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2435
                    firstNonNilIndex := idx
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2436
                ].
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2731
diff changeset
  2437
                
2810
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2438
                anEvent isConfigureEvent ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2439
                    (aViewOrNil isNil or:[anEvent view == aViewOrNil]) ifTrue:[
2810
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2440
                        ^ nil
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2441
                    ]   
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2442
                ].
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2443
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2444
                anEvent isDamage ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2445
                    (aViewOrNil isNil or:[anEvent view == aViewOrNil]) ifTrue:[
2810
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2446
                        theEvent := anEvent.
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2447
                        damage at:idx put:nil.
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2448
                        idx := damageSize.
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2449
                    ]
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2450
                ].
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2451
            ].
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2452
            idx := idx + 1.
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2453
        ].
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2454
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2455
        firstNonNilIndex isNil ifTrue:[
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2456
            damage removeAll
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2457
        ] ifFalse:[
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2458
            firstNonNilIndex ~~ 1 ifTrue:[
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2459
                damage removeFromIndex:1 toIndex:(firstNonNilIndex-1)
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2460
            ]
f2a85b827478 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2787
diff changeset
  2461
        ].
703
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
  2462
    ].
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2463
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2464
    ^ theEvent
703
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
  2465
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2466
    "Created: / 21.5.1996 / 17:20:54 / cg"
2439
358644786358 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2437
diff changeset
  2467
    "Modified: / 5.2.1999 / 20:58:28 / cg"
703
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
  2468
!
4324ab5e3630 added facility to lock expose event queue (temporary kludge ?)
Claus Gittinger <cg@exept.de>
parents: 612
diff changeset
  2469
140
claus
parents: 133
diff changeset
  2470
pendingEvent
152
claus
parents: 144
diff changeset
  2471
    "retrieve the next pending user (i.e. non-damage) event.
claus
parents: 144
diff changeset
  2472
     Return nil, if there is none pending.
140
claus
parents: 133
diff changeset
  2473
     Do not remove it from the queue."
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
  2474
1063
ba1bf8091bc1 unused variable cleanup
Claus Gittinger <cg@exept.de>
parents: 1027
diff changeset
  2475
    |e|
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
  2476
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2477
    mouseAndKeyboard size == 0 ifTrue:[^ nil].
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2478
2437
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2479
    "
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2480
     be careful: events are inserted at higher prio ...
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2481
    "
2058aceaed41 tuning - do not return from a valueOnOnWindDo block if possible.
Claus Gittinger <cg@exept.de>
parents: 2432
diff changeset
  2482
    self criticalUserEventQueueAccess:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2483
        [e isNil] whileTrue:[
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2484
            mouseAndKeyboard size == 0 ifTrue:[^ nil].
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2485
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2486
            e := mouseAndKeyboard first.
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2487
            e isNil ifTrue:[
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2488
                mouseAndKeyboard removeFirst
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2489
            ].
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2490
        ]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2491
    ].
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
  2492
    ^ e
476
cc4848695a66 care to reenable interrupts
Claus Gittinger <cg@exept.de>
parents: 470
diff changeset
  2493
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2494
    "Modified: / 6.6.1998 / 21:10:51 / cg"
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2495
!
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2496
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2497
pushDamageEvent:anEvent
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2498
    "put an event into the damage queue
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2499
     - this is not meant for public use"
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2500
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2501
    self criticalDamageEventQueueAccess:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2502
        damage addLast:anEvent.
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2503
    ].
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2504
    self notifyEventArrival:anEvent
1851
6a6225647696 fixes for expose-event-lost after re-map
Claus Gittinger <cg@exept.de>
parents: 1847
diff changeset
  2505
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2506
    "Created: / 18.1.1997 / 14:16:45 / cg"
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2507
    "Modified: / 6.6.1998 / 21:10:56 / cg"
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2508
!
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2509
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2510
pushEvent:anEvent
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2511
    "put an event into the queue - this can also be sent by
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2512
     applications and allows simulation of events 
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2513
     (implementation of recorders & playback)
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2514
     or asynchronous communication between view applications
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2515
     (by sending arbitrary events, which leads to a message sent,
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2516
      when the target windowGroups process is rescheduled)."
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2517
4741
c5c2db6f830a set timeStamp during pushEvent
ca
parents: 4538
diff changeset
  2518
    anEvent timeStamp isNil ifTrue:[
7091
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2519
        anEvent timeStamp:Timestamp now.
4741
c5c2db6f830a set timeStamp during pushEvent
ca
parents: 4538
diff changeset
  2520
    ].
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  2521
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2522
    "/ inform all local and global eventListeners ?
7091
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2523
    (self notifyEventListenersAbout:anEvent) ifTrue:[
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2524
        "/ event was eaten
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2525
        ^ self
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  2526
    ].
6568
d4565bb9746d class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6512
diff changeset
  2527
    self basicPushEvent:anEvent.
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2528
7091
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2529
    "
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2530
     |b|
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2531
     b := Button label:'test'.
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2532
     b action:[Transcript showCR:'hallo'].
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2533
     b open.
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2534
     (Delay forSeconds:5) wait.
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2535
     b sensor pushEvent:(WindowEvent pointerEnter:0 x:1 y:1 view:b).
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2536
     (Delay forSeconds:1) wait.
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2537
     b sensor pushEvent:(WindowEvent buttonPress:1 x:1 y:1 view:b).
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2538
     (Delay forSeconds:2) wait.
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2539
     b sensor pushEvent:(WindowEvent buttonRelease:1 x:1 y:1 view:b).
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2540
     (Delay forSeconds:1) wait.
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2541
     b sensor pushEvent:(WindowEvent pointerLeave:0 view:b).
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2542
    "
ec9a7cdd2967 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7087
diff changeset
  2543
5761
3d38c776004a changed:19 methods
Claus Gittinger <cg@exept.de>
parents: 5750
diff changeset
  2544
    "Created: / 18-09-1995 / 22:37:57 / claus"
5762
e084426afbdb removed eventListener, keyboardListener and EventListener.
Claus Gittinger <cg@exept.de>
parents: 5761
diff changeset
  2545
    "Modified: / 29-06-2011 / 18:57:19 / cg"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2546
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  2547
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2548
!WindowSensor methodsFor:'event simulation'!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2549
6816
998999d0bad6 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6760
diff changeset
  2550
enqueueMessage:selector for:someone arguments:argList
7087
faf0d73f0dcc #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6882
diff changeset
  2551
    "if such a message is already in the queue, ignore it.
faf0d73f0dcc #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6882
diff changeset
  2552
     Otherwise push it as an event, to be handled when my thread is
faf0d73f0dcc #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6882
diff changeset
  2553
     back in the event loop."
faf0d73f0dcc #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6882
diff changeset
  2554
     
6816
998999d0bad6 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6760
diff changeset
  2555
    self criticalUserEventQueueAccess:[
998999d0bad6 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6760
diff changeset
  2556
        (self hasUserEvent:selector for:someone withArguments:argList) ifFalse:[
998999d0bad6 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6760
diff changeset
  2557
            self pushUserEvent:selector for:someone withArguments:argList
998999d0bad6 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6760
diff changeset
  2558
        ].
998999d0bad6 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6760
diff changeset
  2559
    ].
998999d0bad6 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6760
diff changeset
  2560
!
998999d0bad6 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6760
diff changeset
  2561
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2562
forwardKeyEventsTo:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2563
    "remove all keyboard events and send them to aViews sensor instead"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2564
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2565
    1 to:mouseAndKeyboard size do:[:i |
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2566
        |anEvent|
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2567
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2568
        anEvent := mouseAndKeyboard at:i.
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2569
        anEvent notNil ifTrue:[
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2570
            anEvent isKeyEvent ifTrue:[
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2571
                anEvent view:aView.
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2572
                aView sensor pushEvent:anEvent.
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2573
                mouseAndKeyboard at:i put:nil
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2574
            ]
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2575
        ]
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2576
    ].
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2577
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2578
    "Modified: 18.1.1997 / 14:05:02 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2579
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2580
5544
b5ce770dc79f added: #pushAction:
Claus Gittinger <cg@exept.de>
parents: 5484
diff changeset
  2581
pushAction:aBlock
6503
ea594b27663e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6366
diff changeset
  2582
    "enqueue an action into my event queue.
5544
b5ce770dc79f added: #pushAction:
Claus Gittinger <cg@exept.de>
parents: 5484
diff changeset
  2583
     The underlying window process will evaluate aBlock in its event loop
b5ce770dc79f added: #pushAction:
Claus Gittinger <cg@exept.de>
parents: 5484
diff changeset
  2584
     (i.e. syncronously). Use this to present the result of an asyncronous background
b5ce770dc79f added: #pushAction:
Claus Gittinger <cg@exept.de>
parents: 5484
diff changeset
  2585
     computation"
b5ce770dc79f added: #pushAction:
Claus Gittinger <cg@exept.de>
parents: 5484
diff changeset
  2586
b5ce770dc79f added: #pushAction:
Claus Gittinger <cg@exept.de>
parents: 5484
diff changeset
  2587
     self pushUserEvent:#value for:aBlock withArguments:#() 
b5ce770dc79f added: #pushAction:
Claus Gittinger <cg@exept.de>
parents: 5484
diff changeset
  2588
!
b5ce770dc79f added: #pushAction:
Claus Gittinger <cg@exept.de>
parents: 5484
diff changeset
  2589
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2590
pushUserEvent:aSelector for:aView
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2591
    "manually put an event into the queue - this allows
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2592
     simulation of events (implementation of recorders & playback)
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2593
     or asynchronous communication between view applications.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2594
     The view will perform a method as specified by aSelector,
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2595
     when it performs event processing; this is different than sending
7708
b5422dfa6526 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7664
diff changeset
  2596
     this message directly, since the execution is done by the view's process,
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2597
     not by the current process (which is especially worthwhile, if that method 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2598
     shows a modal box or similar)."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2599
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2600
     self pushUserEvent:aSelector for:aView withArguments:#() 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2601
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2602
    "Modified: 18.9.1995 / 22:40:12 / claus"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2603
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2604
3593
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2605
pushUserEvent:aSelector for:anyObject withArgument:argument
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2606
    "manually put an event into the queue - this allows
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2607
     simulation of events (implementation of recorders & playback)
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2608
     or asynchronous communication between view applications.
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2609
     anyObject will perform a method as specified by aSelector,
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2610
     when the windogroup dispatches this event. This is different than sending
7708
b5422dfa6526 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7664
diff changeset
  2611
     this message directly, since the execution is done by the view's process,
3593
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2612
     not by the current process (which is especially worthwhile, if that method 
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2613
     shows a modal box or similar)."
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2614
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2615
    self pushUserEvent:aSelector for:anyObject withArguments:(Array with:argument).
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2616
!
e365228368ab checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3587
diff changeset
  2617
3298
88ac22e6a249 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3296
diff changeset
  2618
pushUserEvent:aSelector for:anyObject withArguments:arguments
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2619
    "manually put an event into the queue - this allows
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2620
     simulation of events (implementation of recorders & playback)
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2621
     or asynchronous communication between view applications.
3298
88ac22e6a249 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3296
diff changeset
  2622
     anyObject will perform a method as specified by aSelector,
88ac22e6a249 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3296
diff changeset
  2623
     when the windogroup dispatches this event. This is different than sending
7708
b5422dfa6526 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7664
diff changeset
  2624
     this message directly, since the execution is done by the view's process,
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2625
     not by the current process (which is especially worthwhile, if that method 
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2626
     shows a modal box or similar)."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2627
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2628
    self pushEvent:(WindowEvent messageSend:anyObject selector:aSelector arguments:arguments).
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2629
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2630
    "
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2631
     |b|
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2632
     b := Button label:'test'.
1155
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2633
     b open.
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2634
     (Delay forSeconds:5) wait.
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2635
     b sensor pushUserEvent:#fooBar for:b withArguments:#().
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2636
    "
1155
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2637
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2638
    "
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2639
     |b|
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2640
     b := Button label:'test'.
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2641
     b open.
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2642
     (Delay forSeconds:3) wait.
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2643
     b sensor pushUserEvent:#disable for:b withArguments:#().
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2644
    "
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2645
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2646
    "Modified: 4.1.1997 / 13:53:01 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2647
! !
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2648
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2649
!WindowSensor methodsFor:'initialization'!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2650
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2651
initialize
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2652
    "initialize the event queues to empty"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2653
4472
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2654
    self initializeState.
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2655
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2656
    compressMotionEvents := translateKeyboardEvents := true.
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2657
    ignoreUserInput := false.
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2658
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2659
    "Modified: / 14.12.1999 / 21:15:03 / cg"
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2660
!
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2661
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2662
initializeState
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2663
    "initialize the event queues to empty"
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2664
6286
3591f0aee115 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6140
diff changeset
  2665
    damageEventAccessLock := RecursionLock new.
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2666
    damageEventAccessLock name:'WSensor ev-q damageEventAccessLock'.
6286
3591f0aee115 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6140
diff changeset
  2667
    userEventAccessLock := RecursionLock new.
2137
cec979de294c now use two semaphores (one for each queue).
Claus Gittinger <cg@exept.de>
parents: 2126
diff changeset
  2668
    userEventAccessLock name:'WSensor ev-q userEventAccessLock'.
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  2669
6112
840a09e52b65 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6098
diff changeset
  2670
    damage := OrderedCollection new.
840a09e52b65 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6098
diff changeset
  2671
    mouseAndKeyboard := OrderedCollection new.
1295
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  2672
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  2673
    gotExpose := IdentitySet new.
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  2674
    catchExpose := IdentitySet new.
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  2675
    gotOtherEvent := IdentitySet new.
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  2676
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2677
    shiftDown := ctrlDown := altDown := metaDown := false.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2678
    leftButtonDown := middleButtonDown := rightButtonDown := false.
6752
a407ac7e4d0e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6591
diff changeset
  2679
    collectedMouseWheelMotion := 0.
6112
840a09e52b65 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6098
diff changeset
  2680
840a09e52b65 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6098
diff changeset
  2681
    "Modified: / 30-07-2013 / 19:27:46 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2682
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2683
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2684
reinitialize
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2685
    "called when an image is restarted;
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2686
     reinitialize the event queues to empty; leave other setup as-is"
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2687
4472
181a494fb08b (re)initialization
Claus Gittinger <cg@exept.de>
parents: 4459
diff changeset
  2688
    self initializeState.
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2689
! !
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  2690
3451
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2691
!WindowSensor methodsFor:'others'!
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2692
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2693
updateModifierStateFrom:stateIn device:aDevice
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2694
    "this updates the modifier key-states.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2695
     Called privately when pointer enters a view."
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2696
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2697
    |state|
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2698
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2699
    "/ Prevents wrong behavior in the following scenario:
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2700
    "/    ctrl is pressed in a view
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2701
    "/    pointer is moved out of view
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2702
    "/    ctrl is released
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2703
    "/    pointer moved back into view
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2704
    "/    popup-menu still thinks that ctrl is pressed"
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2705
    "/ state := aDevice buttonStates.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2706
    state := stateIn.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2707
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2708
    shiftDown := (state bitAnd:(aDevice shiftModifierMask)) ~~ 0.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2709
    ctrlDown := (state bitAnd:(aDevice ctrlModifierMask)) ~~ 0.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2710
    metaDown := (state bitAnd:(aDevice metaModifierMask)) ~~ 0.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2711
    altDown := (state bitAnd:(aDevice altModifierMask)) ~~ 0.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2712
4945
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  2713
"/Transcript show:'meta:'; showCR:metaDown.
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  2714
"/Transcript show:'alt:'; showCR:altDown.
4af604a27d8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4931
diff changeset
  2715
3451
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2716
    leftButtonDown := (state bitAnd:(aDevice leftButtonStateMask)) ~~ 0.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2717
    middleButtonDown := (state bitAnd:(aDevice middleButtonStateMask)) ~~ 0.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2718
    rightButtonDown := (state bitAnd:(aDevice rightButtonStateMask)) ~~ 0.
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2719
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2720
    "Created: / 27.2.1996 / 14:54:38 / cg"
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2721
    "Modified: / 8.9.1998 / 15:11:44 / cg"
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2722
! !
9c0ea45f78c7 no longer pass modifiers with #buttonPress:x:y:
Claus Gittinger <cg@exept.de>
parents: 3437
diff changeset
  2723
3266
4db6dd90cc17 category change
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
  2724
!WindowSensor methodsFor:'queries-event queue'!
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2725
2085
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2726
damageCount 
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2727
    "return the number of pending damage events (i.e. expose or resize)"
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2728
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2729
    ^ damage size
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2730
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2731
    "Modified: / 2.4.1997 / 14:14:01 / cg"
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2732
    "Created: / 5.4.1998 / 11:35:04 / cg"
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2733
!
908c3baa4a56 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  2734
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2735
eventPending
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2736
    "return true, if either damage or events are pending"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2737
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2738
    mouseAndKeyboard size ~~ 0 ifTrue:[^ true].
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2739
    ^ damage size ~~ 0
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2740
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2741
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2742
hasButtonEventFor:aView 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2743
    "return true, if any button events are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2744
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2745
     view (i.e. is there a button event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2746
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2747
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2748
    (self hasButtonMotionEventFor:aView) ifTrue:[^ true].
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2749
    (self hasButtonPressEventFor:aView) ifTrue:[^ true].
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2750
    ^ (self hasButtonReleaseEventFor:aView)
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2751
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2752
    "Created: 1.11.1996 / 17:02:23 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2753
    "Modified: 1.11.1996 / 17:12:03 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2754
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2755
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2756
hasButtonMotionEventFor:aView 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2757
    "return true, if any buttonMotion events are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2758
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2759
     view (i.e. is there a motion event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2760
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2761
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2762
    ^ self hasEvent:#buttonMotion:x:y: orPendingDeviceEvent:#buttonMotion for:aView
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2763
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2764
    "Created: 1.11.1996 / 17:04:01 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2765
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2766
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2767
hasButtonPressEventFor:aView 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2768
    "return true, if any buttonPress events are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2769
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2770
     view (i.e. is there a buttonPress event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2771
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2772
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2773
    ^ self hasEvent:#buttonPress:x:y: orPendingDeviceEvent:#buttonPress for:aView
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2774
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2775
    "Created: 1.11.1996 / 17:05:10 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2776
    "Modified: 1.11.1996 / 17:11:09 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2777
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2778
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2779
hasButtonReleaseEventFor:aView 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2780
    "return true, if any buttonRelease events are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2781
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2782
     view (i.e. is there a buttonrelease event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2783
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2784
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2785
    ^ self hasEvent:#buttonRelease:x:y: orPendingDeviceEvent:#buttonRelease for:aView
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2786
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2787
    "Created: 1.11.1996 / 17:05:26 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2788
    "Modified: 1.11.1996 / 17:11:18 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2789
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2790
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2791
hasConfigureEventFor:aView 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2792
    "return true, if any resize/position events are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2793
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2794
     view (i.e. is there a configure event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2795
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2796
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2797
    ^ self hasEvent:#configureX:y:width:height: orPendingDeviceEvent:#structureNotify for:aView
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2798
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2799
    "Modified: 1.11.1996 / 17:11:27 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2800
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2801
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2802
hasDamage 
1512
489ff9d103a0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1505
diff changeset
  2803
    "return true, if any damage events (i.e. expose or resize) are pending.
489ff9d103a0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1505
diff changeset
  2804
     Since this is often invoked by ST-80 classes to poll the sensor,
489ff9d103a0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1505
diff changeset
  2805
     a yield is done here to avoid a busy wait blocking other processes."
489ff9d103a0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1505
diff changeset
  2806
489ff9d103a0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1505
diff changeset
  2807
    Processor yield.
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2808
    ^ damage size ~~ 0
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2809
1512
489ff9d103a0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1505
diff changeset
  2810
    "Modified: 2.4.1997 / 14:14:01 / cg"
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2811
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2812
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2813
hasDamageFor:aViewOrNil 
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2814
    "return true, if any damage events (i.e. expose or resize)
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2815
     are pending for aViewOrNil. If nil, returns true if any damage is 
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2816
     pending for this windowGroup."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2817
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2818
    damage size ~~ 0 ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2819
        damage do:[:aDamage |
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2820
            aDamage notNil ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2821
                (aViewOrNil isNil or:[aDamage view == aViewOrNil]) ifTrue:[^ true]
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2822
            ].
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2823
        ]
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2824
    ].
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2825
    ^ false
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2826
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2827
    "Modified: 21.5.1996 / 17:15:09 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2828
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2829
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2830
hasEvent:type for:aReceiverOrNil
2144
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2831
    "return true, if a specific event is pending in my queues.
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2832
     Type is the type of event, dType the corresponding device event.
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2833
     If the argument, aReceiverOrNil is nil, the information is regarding any
2144
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2834
     view (i.e. is there an event for any of my views);
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2835
     otherwise, the information is regarding to that specific view."
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2836
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2837
    mouseAndKeyboard size ~~ 0 ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2838
        (self hasUserEvent:type for:aReceiverOrNil) ifTrue:[^ true].
2144
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2839
    ].
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2840
    damage size ~~ 0 ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2841
        damage do:[:anEvent |
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2842
            anEvent notNil ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2843
                (aReceiverOrNil isNil or:[anEvent receiver == aReceiverOrNil]) ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2844
                    (type isNil or:[anEvent type == type]) ifTrue:[^ true].
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2845
                ]
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2846
            ].
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2847
        ]
2144
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2848
    ].
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2849
    ^ false
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2850
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2851
    "Created: / 10.6.1998 / 17:33:46 / cg"
2157
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  2852
    "Modified: / 18.6.1998 / 09:29:18 / cg"
2144
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2853
!
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2854
6759
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  2855
hasEvent:type for:aView withArguments:argsOrNil 
1155
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2856
    "return true, if a specific event is pending in my queues.
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2857
     Type is the type of event, args are the arguments.
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2858
     If the argument, aView is nil, the information is regarding any
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2859
     view (i.e. is there an event for any of my views);
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2860
     otherwise, the information is regarding to that specific view."
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2861
6759
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  2862
    |args|
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  2863
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  2864
    args := argsOrNil ? #().
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2865
    ^ self
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2866
        hasEvent:type 
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2867
        for:aView 
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  2868
        withMatchingArguments:[:evArgs | evArgs = args]
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2869
!
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2870
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2871
hasEvent:type for:aReceiverOrNil withMatchingArguments:argMatchBlock 
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2872
    "return true, if a matching event is pending in my queues.
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2873
     Type is the type of event, matchBlock is a block which gets the event args
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2874
     and should return true.
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2875
     If the argument, aReceiverOrNil is nil, the information is regarding any
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2876
     view (i.e. is there an event for any of my views);
3235
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2877
     otherwise, the information is regarding to that specific view.
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2878
     If the type-argument is nil, any event matches, otherwise only events with
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2879
     that type are matched."
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2880
1155
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2881
    mouseAndKeyboard size ~~ 0 ifTrue:[
3235
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2882
        mouseAndKeyboard do:[:anEvent |
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2883
            anEvent notNil ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2884
                (aReceiverOrNil isNil or:[anEvent receiver == aReceiverOrNil]) ifTrue:[
3235
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2885
                    (type isNil or:[anEvent type == type]) ifTrue:[
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2886
                        (argMatchBlock value:anEvent arguments) ifTrue:[
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2887
                            ^ true
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2888
                        ].
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2889
                    ]
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2890
                ]
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2891
            ].
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2892
        ]
1155
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2893
    ].
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2894
    damage size ~~ 0 ifTrue:[
3235
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2895
        damage do:[:anEvent |
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2896
            anEvent notNil ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2897
                (aReceiverOrNil isNil or:[anEvent receiver == aReceiverOrNil]) ifTrue:[
3235
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2898
                    (type isNil or:[anEvent type == type]) ifTrue:[
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2899
                        (argMatchBlock value:anEvent arguments) ifTrue:[
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2900
                            ^ true
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2901
                        ]
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2902
                    ].
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2903
                ]
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2904
            ].
aed8c7fa8999 better #hasEvent matching
Claus Gittinger <cg@exept.de>
parents: 3217
diff changeset
  2905
        ]
1155
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2906
    ].
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2907
    ^ false
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2908
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2909
    "Modified: 1.11.1996 / 17:11:47 / cg"
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2910
    "Created: 4.1.1997 / 14:00:29 / cg"
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2911
!
e8b6f0e8484e added query for event with args for view pending
Claus Gittinger <cg@exept.de>
parents: 1108
diff changeset
  2912
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2913
hasEvent:type orPendingDeviceEvent:dType for:aView
2144
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2914
    "return true, if a specific event is pending in a queue
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2915
     or in the devices event queue.
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2916
     Type is the type of event, dType the corresponding device event.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2917
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2918
     view (i.e. is there an event for any of my views);
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2919
     otherwise, the information is regarding to that specific view."
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2920
7508
f581795812b9 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7468
diff changeset
  2921
    |device|
f581795812b9 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7468
diff changeset
  2922
2144
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2923
    "/ look in my queues
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2924
    (self hasEvent:type for:aView) ifTrue:[^ true].
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2925
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2926
    aView notNil ifTrue:[
7508
f581795812b9 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7468
diff changeset
  2927
        (device := aView graphicsDevice) notNil ifTrue:[
f581795812b9 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7468
diff changeset
  2928
            "/ ask the device if it has something pending
f581795812b9 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7468
diff changeset
  2929
            ^ device eventPending:dType for:aView id
f581795812b9 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 7468
diff changeset
  2930
        ].
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2931
    ].
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2932
    ^ false
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2933
2144
c3bd3dfe592a another event pending query added
Claus Gittinger <cg@exept.de>
parents: 2141
diff changeset
  2934
    "Modified: / 10.6.1998 / 17:34:51 / cg"
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2935
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2936
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2937
hasEvents 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2938
    "return true, if any mouse/keyboard events are pending"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2939
2441
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  2940
    mouseAndKeyboard size ~~ 0 ifTrue:[^ true].
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  2941
    ^ damage size ~~ 0
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  2942
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  2943
    "Modified: / 5.2.1999 / 22:30:23 / cg"
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2944
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2945
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2946
hasExposeEventFor:aViewOrNil 
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2947
    "return true, if any exposure events are pending for aView.
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2948
     If aViewOrNil is nil, return true if any exposure event for any view
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2949
     in my windowGroup is pending"
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2950
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2951
    damage size ~~ 0 ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2952
        damage do:[:aDamage |
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2953
            aDamage notNil ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2954
                aDamage isDamage ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2955
                    (aViewOrNil isNil or:[aDamage view == aViewOrNil]) ifTrue:[^ true].
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2956
                ]
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2957
            ].
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  2958
        ]
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2959
    ].
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2960
    ^ false
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2961
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2962
    "Modified: 21.5.1996 / 17:13:09 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2963
    "Created: 1.11.1996 / 17:05:41 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2964
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2965
4415
be0fa075e4c4 comment
Claus Gittinger <cg@exept.de>
parents: 4412
diff changeset
  2966
hasKeyEventFor:aViewOrNil 
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2967
    "return true, if any key (press or release) events are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2968
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2969
     view (i.e. is there a key event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2970
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2971
4415
be0fa075e4c4 comment
Claus Gittinger <cg@exept.de>
parents: 4412
diff changeset
  2972
    (self hasKeyPressEventFor:aViewOrNil) ifTrue:[^ true].
be0fa075e4c4 comment
Claus Gittinger <cg@exept.de>
parents: 4412
diff changeset
  2973
    ^ self hasKeyReleaseEventFor:aViewOrNil
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2974
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2975
    "Created: 1.11.1996 / 17:08:03 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2976
    "Modified: 1.11.1996 / 17:11:55 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2977
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2978
4415
be0fa075e4c4 comment
Claus Gittinger <cg@exept.de>
parents: 4412
diff changeset
  2979
hasKeyPressEventFor:aViewOrNil 
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2980
    "return true, if any keyPress events are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2981
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2982
     view (i.e. is there a keyPress event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2983
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2984
4415
be0fa075e4c4 comment
Claus Gittinger <cg@exept.de>
parents: 4412
diff changeset
  2985
    ^ self hasEvent:#keyPress:x:y: orPendingDeviceEvent:#keyPress for:aViewOrNil
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2986
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2987
    "Created: 1.11.1996 / 17:05:58 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2988
    "Modified: 1.11.1996 / 17:12:10 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2989
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2990
4415
be0fa075e4c4 comment
Claus Gittinger <cg@exept.de>
parents: 4412
diff changeset
  2991
hasKeyReleaseEventFor:aViewOrNil 
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2992
    "return true, if any keyRelease events are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2993
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2994
     view (i.e. is there a keyRelease event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  2995
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2996
4415
be0fa075e4c4 comment
Claus Gittinger <cg@exept.de>
parents: 4412
diff changeset
  2997
    ^ self hasEvent:#keyRelease:x:y: orPendingDeviceEvent:#keyRelease for:aViewOrNil
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2998
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  2999
    "Created: 1.11.1996 / 17:06:34 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3000
    "Modified: 1.11.1996 / 17:12:15 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3001
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3002
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3003
hasUserEvent:type for:aReceiverOrNil
2157
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3004
    "return true, if a specific event is pending in my user event queue.
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3005
     Type is the type of event, dType the corresponding device event.
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3006
     If the argument, aReceiverOrNil is nil, the information is regarding any
2157
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3007
     view (i.e. is there an event for any of my views);
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3008
     otherwise, the information is regarding to that specific view."
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3009
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3010
    mouseAndKeyboard size ~~ 0 ifTrue:[
3682
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3011
        mouseAndKeyboard do:[:anEvent |
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3012
            anEvent notNil ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3013
                (aReceiverOrNil isNil or:[anEvent receiver == aReceiverOrNil]) ifTrue:[
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3014
                    (type isNil or:[anEvent type == type]) ifTrue:[^ true].
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3015
                ]
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3016
            ].
d756fdb95712 evenTypes - private to windowEvent
ca
parents: 3636
diff changeset
  3017
        ]
2157
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3018
    ].
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3019
    ^ false
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3020
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3021
    "Created: / 17.6.1998 / 12:55:54 / cg"
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3022
    "Modified: / 18.6.1998 / 08:57:00 / cg"
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3023
!
9572f0dd369d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2144
diff changeset
  3024
6760
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3025
hasUserEvent:type for:aView withArguments:argsOrNil 
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3026
    "return true, if a specific user event (non damage) is pending in my queues.
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3027
     Type is the type of event, args are the arguments.
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3028
     If the argument, aView is nil, the information is regarding any
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3029
     view (i.e. is there an event for any of my views);
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3030
     otherwise, the information is regarding to that specific view."
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3031
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3032
    |args|
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3033
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3034
    args := argsOrNil ? #().
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3035
    ^ self
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3036
        hasUserEvent:type 
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3037
        for:aView 
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3038
        withMatchingArguments:[:evArgs | evArgs = args]
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3039
!
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3040
6759
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3041
hasUserEvent:type for:aReceiverOrNil withMatchingArguments:argMatchBlock
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3042
    "return true, if a specific event is pending in my user event queue.
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3043
     Type is the type of event, dType the corresponding device event.
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3044
     If the argument, aReceiverOrNil is nil, the information is regarding any
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3045
     view (i.e. is there an event for any of my views);
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3046
     otherwise, the information is regarding to that specific view."
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3047
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3048
    mouseAndKeyboard size ~~ 0 ifTrue:[
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3049
        mouseAndKeyboard do:[:anEvent |
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3050
            anEvent notNil ifTrue:[
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3051
                (aReceiverOrNil isNil or:[anEvent receiver == aReceiverOrNil]) ifTrue:[
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3052
                    (type isNil or:[anEvent type == type]) ifTrue:[
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3053
                        (argMatchBlock value:anEvent arguments) ifTrue:[
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3054
                            ^ true
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3055
                        ].
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3056
                    ].
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3057
                ]
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3058
            ].
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3059
        ]
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3060
    ].
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3061
    ^ false
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3062
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3063
    "Created: / 17.6.1998 / 12:55:54 / cg"
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3064
    "Modified: / 18.6.1998 / 08:57:00 / cg"
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3065
!
5ffd4f28370e class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6752
diff changeset
  3066
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3067
hasUserEventFor:aView 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3068
    "return true, if any user event (i.e. key or button events) are pending.
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3069
     If the argument, aView is nil, the information is regarding any
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3070
     view (i.e. is there a user event for any of my views);
1505
e9682a002469 checkin from browser
ca
parents: 1492
diff changeset
  3071
     otherwise, the information is regarding that specific view."
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3072
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3073
    (self hasKeyEventFor:aView) ifTrue:[^ true].
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3074
    ^ (self hasButtonEventFor:aView)
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3075
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3076
    "Created: 1.11.1996 / 17:08:50 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3077
    "Modified: 1.11.1996 / 17:12:21 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3078
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3079
2441
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  3080
hasUserEvents 
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  3081
    "return true, if any mouse/keyboard events are pending"
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  3082
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  3083
    ^ mouseAndKeyboard size ~~ 0
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  3084
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  3085
    "Created: / 5.2.1999 / 22:29:11 / cg"
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  3086
!
6925d83b717e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2439
diff changeset
  3087
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3088
motionEventPending 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3089
    "return true, if any buttonMotion events are pending."
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3090
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3091
    ^ self hasButtonMotionEventFor:nil
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3092
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3093
    "Created: 24.3.1996 / 20:09:55 / cg"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3094
    "Modified: 1.11.1996 / 17:04:43 / cg"
2177
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3095
!
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3096
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3097
userEventCount 
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3098
    "return the number of pending user events"
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3099
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3100
    ^ mouseAndKeyboard size
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3101
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3102
    "Modified: / 21.7.1998 / 18:52:19 / cg"
22bc7dd353b4 added #userEventCount query
Claus Gittinger <cg@exept.de>
parents: 2163
diff changeset
  3103
    "Created: / 21.7.1998 / 19:36:04 / cg"
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3104
! !
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3105
3266
4db6dd90cc17 category change
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
  3106
!WindowSensor methodsFor:'queries-key & button state'!
140
claus
parents: 133
diff changeset
  3107
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3108
altDown
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3109
    "return true, if the meta key is currently pressed.
7664
aed121ae9902 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7508
diff changeset
  3110
     Notice, that some keyboards don't have an alt key;
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3111
     it is better to use 'sensor metaDown or:[sensor altDown]'."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3112
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3113
    ^ altDown
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3114
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3115
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3116
anyButtonPressed
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3117
    "ST-80 compatibility: return true, if any mouse button is pressed.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3118
     You should no use it in 'normal' applications.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3119
     Instead, keep track of the buttons state in your views or controllers
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3120
     button-event methods."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3121
1083
6e947cc67324 fixed #anyButtonPressed & setting of buttonDown-flags
Claus Gittinger <cg@exept.de>
parents: 1082
diff changeset
  3122
    ^ leftButtonDown or:[middleButtonDown or:[rightButtonDown]]
6e947cc67324 fixed #anyButtonPressed & setting of buttonDown-flags
Claus Gittinger <cg@exept.de>
parents: 1082
diff changeset
  3123
6e947cc67324 fixed #anyButtonPressed & setting of buttonDown-flags
Claus Gittinger <cg@exept.de>
parents: 1082
diff changeset
  3124
    "Modified: 21.10.1996 / 11:37:31 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3125
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3126
3858
ecbaa5d75c70 Use SynchronousWindowSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3852
diff changeset
  3127
anyModifierKeyDown
ecbaa5d75c70 Use SynchronousWindowSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3852
diff changeset
  3128
    "return true, if any modifier key is currently pressed."
ecbaa5d75c70 Use SynchronousWindowSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3852
diff changeset
  3129
ecbaa5d75c70 Use SynchronousWindowSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3852
diff changeset
  3130
    ^ shiftDown or:[ctrlDown or:[altDown or:[metaDown]]]
ecbaa5d75c70 Use SynchronousWindowSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3852
diff changeset
  3131
!
ecbaa5d75c70 Use SynchronousWindowSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3852
diff changeset
  3132
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3133
ctrlDown
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3134
    "return true, if any CTRL key is currently pressed."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3135
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3136
    ^ ctrlDown
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3137
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3138
157
claus
parents: 154
diff changeset
  3139
leftButtonPressed
claus
parents: 154
diff changeset
  3140
    "return true, if the left mouse button is pressed.
claus
parents: 154
diff changeset
  3141
     This has been added to support ST-80 style button polling;
claus
parents: 154
diff changeset
  3142
     however, you should no use it in 'normal' applications.
claus
parents: 154
diff changeset
  3143
     Instead, keep track of the buttons state in your views or controllers
claus
parents: 154
diff changeset
  3144
     button-event methods."
claus
parents: 154
diff changeset
  3145
claus
parents: 154
diff changeset
  3146
    ^ leftButtonDown
claus
parents: 154
diff changeset
  3147
!
claus
parents: 154
diff changeset
  3148
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3149
metaDown
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3150
    "return true, if the meta key is currently pressed.
7664
aed121ae9902 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7508
diff changeset
  3151
     Notice, that most keyboards don't have a meta key;
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3152
     it is better to use 'sensor metaDown or:[sensor altDown]'."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3153
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3154
    ^ metaDown
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3155
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3156
157
claus
parents: 154
diff changeset
  3157
middleButtonPressed
claus
parents: 154
diff changeset
  3158
    "return true, if the middle mouse button is pressed.
claus
parents: 154
diff changeset
  3159
     This has been added to support ST-80 style button polling;
claus
parents: 154
diff changeset
  3160
     however, you should no use it in 'normal' applications.
claus
parents: 154
diff changeset
  3161
     Instead, keep track of the buttons state in your views or controllers
claus
parents: 154
diff changeset
  3162
     button-event methods."
claus
parents: 154
diff changeset
  3163
claus
parents: 154
diff changeset
  3164
    ^ middleButtonDown
claus
parents: 154
diff changeset
  3165
!
claus
parents: 154
diff changeset
  3166
claus
parents: 154
diff changeset
  3167
rightButtonPressed
claus
parents: 154
diff changeset
  3168
    "return true, if the right mouse button is pressed.
claus
parents: 154
diff changeset
  3169
     This has been added to support ST-80 style button polling;
claus
parents: 154
diff changeset
  3170
     however, you should no use it in 'normal' applications.
claus
parents: 154
diff changeset
  3171
     Instead, keep track of the buttons state in your views or controllers
claus
parents: 154
diff changeset
  3172
     button-event methods."
claus
parents: 154
diff changeset
  3173
claus
parents: 154
diff changeset
  3174
    ^ rightButtonDown
claus
parents: 154
diff changeset
  3175
!
claus
parents: 154
diff changeset
  3176
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3177
shiftDown
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3178
    "return true, if any shift key is currently pressed."
157
claus
parents: 154
diff changeset
  3179
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3180
    ^ shiftDown
140
claus
parents: 133
diff changeset
  3181
! !
claus
parents: 133
diff changeset
  3182
3266
4db6dd90cc17 category change
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
  3183
!WindowSensor methodsFor:'queries-pointer'!
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3184
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3185
cursorPoint
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3186
    "ST-80 compatibility: 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3187
     return the position of the mouse pointer on the current display
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3188
     (in screen coordinates)"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3189
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3190
     ^ self class cursorPoint
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3191
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3192
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3193
globalOrigin 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3194
    "ST-80 compatibility: 
6140
c8f564c3a7df class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6134
diff changeset
  3195
     don't know what we should return here ...
1100
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3196
     ... at least the PD program which uses it works when we return 0@0."
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3197
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3198
     ^ 0@0
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3199
!
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3200
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3201
mousePoint
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3202
    "ST-80 compatibility: 
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3203
     return the position of the mouse pointer on the current display
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3204
     (in screen coordinates)"
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3205
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3206
     ^ self cursorPoint
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3207
! !
70e93fc002cb more event query methods;
Claus Gittinger <cg@exept.de>
parents: 1095
diff changeset
  3208
26
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
  3209
!WindowSensor methodsFor:'special'!
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
  3210
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  3211
catchExposeFor:aView
54
29a6b2f8e042 *** empty log message ***
claus
parents: 47
diff changeset
  3212
    "start catching noExpose events (must be done BEFORE a bitblt,
29a6b2f8e042 *** empty log message ***
claus
parents: 47
diff changeset
  3213
     to prepare for the exposeEventSemaphore to be signalled when 
29a6b2f8e042 *** empty log message ***
claus
parents: 47
diff changeset
  3214
     the noExpose event arrives)."
26
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
  3215
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3216
"/ we never come here - this is already checked by the sender
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3217
"/    aView device scrollsAsynchronous ifFalse:[
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3218
"/        ^ self
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3219
"/    ].
1295
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  3220
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  3221
    (catchExpose includes:aView) ifTrue:[
7459
fe14f2cd05fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7442
diff changeset
  3222
        Logger warning:'already catching (for %1)' with:aView.
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3223
        Delay waitForMilliseconds:100.
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3224
        (catchExpose includes:aView) ifTrue:[
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3225
            Logger warning:'still catching after 100ms (for %1)' with:aView.
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3226
            "/ wake the other one
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3227
            gotExpose add:aView.
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3228
            exposeEventSemaphore notNil ifTrue:[
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3229
                exposeEventSemaphore signalForAll.
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3230
            ].
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3231
            Delay waitForMilliseconds:100.
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3232
        ].
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  3233
    ].
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  3234
1295
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  3235
    [
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3236
        gotOtherEvent remove:aView ifAbsent:nil.
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3237
        gotExpose remove:aView ifAbsent:nil.
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3238
        exposeEventSemaphore isNil ifTrue:[
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3239
            exposeEventSemaphore := Semaphore new name:'WSensor exposeSema'.
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3240
        ].
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3241
        catchExpose add:aView.
1295
ef93ded3c030 renamed graphicExpose -> graphicsExpose;
Claus Gittinger <cg@exept.de>
parents: 1274
diff changeset
  3242
    ] valueUninterruptably.
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3243
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3244
    "Modified: / 14.12.1999 / 20:59:16 / cg"
28
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  3245
!
3879ff2138f1 *** empty log message ***
claus
parents: 27
diff changeset
  3246
1320
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3247
pollForActivity
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3248
    <resource: #obsolete>
1529
cf81e3de53e0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1528
diff changeset
  3249
    "ST-80 compatibility: wait for some activity (i.e. poll for an event) "
1320
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3250
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3251
    "/ should add a buttonStateChangeSemaphore and wait on this ...
1529
cf81e3de53e0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1528
diff changeset
  3252
"/    Delay waitForSeconds:0.01.
cf81e3de53e0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1528
diff changeset
  3253
    Processor yield.
cf81e3de53e0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1528
diff changeset
  3254
cf81e3de53e0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1528
diff changeset
  3255
    "Modified: 12.2.1997 / 12:46:09 / cg"
1320
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3256
!
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3257
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3258
waitButton
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3259
    <resource: #obsolete>
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3260
    "ST-80 compatibility: wait until any mouse button is pressed.
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3261
     Do not use this in your applications; polling the sensor is
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3262
     bad style."
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3263
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3264
    [self anyButtonPressed] whileFalse:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  3265
        self pollForActivity
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3266
    ].
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3267
1320
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3268
    "Modified: 10.2.1997 / 13:30:38 / cg"
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3269
!
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3270
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3271
waitClickButton
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3272
    <resource: #obsolete>
1320
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3273
    "ST-80 compatibility: wait until any mouse button is pressed & released again.
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3274
     Do not use this in your applications; polling the sensor is
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3275
     bad style."
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3276
1790
a7f42261ab45 need a RecursionLock for the accessLock to avoid
Claus Gittinger <cg@exept.de>
parents: 1734
diff changeset
  3277
    self waitButton.
1320
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3278
    ^self waitNoButton
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3279
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3280
    "Created: 10.2.1997 / 13:31:09 / cg"
244
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3281
!
83218faf792c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
  3282
26
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
  3283
waitForExposeFor:aView
157
claus
parents: 154
diff changeset
  3284
    "wait until a graphicsExpose or a noExpose arrives (after a bitblt).
claus
parents: 154
diff changeset
  3285
     This may be too X-specific, and things may change in this area
claus
parents: 154
diff changeset
  3286
     in future versions. (or the new device may simulate the arrival of
claus
parents: 154
diff changeset
  3287
     such an event)"
54
29a6b2f8e042 *** empty log message ***
claus
parents: 47
diff changeset
  3288
7258
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3289
    |blocked lostExpose viewsDevice stopPoll endPollTime pollDelay pollDelay2
3140
21bccc3a24f9 care for nilled semaphore in waitForExpose;
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
  3290
     exposeSema|
1873
a67649816bc8 break non-windowGroup expose-poll loop after a while (10 seconds)
Claus Gittinger <cg@exept.de>
parents: 1864
diff changeset
  3291
7258
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3292
    viewsDevice := aView graphicsDevice.
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3293
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3294
"/ we never come here - this is already checked by the sender
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3295
"/    viewsDevice scrollsAsynchronous ifFalse:[
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3296
"/        gotExpose remove:aView ifAbsent:nil.
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3297
"/        catchExpose remove:aView ifAbsent:nil.
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3298
"/        ^ self
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3299
"/    ].
3140
21bccc3a24f9 care for nilled semaphore in waitForExpose;
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
  3300
    (exposeSema := exposeEventSemaphore) isNil ifTrue:[
7459
fe14f2cd05fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7442
diff changeset
  3301
        Logger warning:'expose wait, but no catchExpose done before: %1' with:aView.
3133
b80adaa96118 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3127
diff changeset
  3302
        gotExpose remove:aView ifAbsent:nil.
3127
451d7fddc3a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3125
diff changeset
  3303
        catchExpose remove:aView ifAbsent:nil.
451d7fddc3a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3125
diff changeset
  3304
        ^ self
451d7fddc3a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3125
diff changeset
  3305
    ].
1027
0ba82862ca8d fixes for synchronous scrolling (WINDOWS)
Claus Gittinger <cg@exept.de>
parents: 1013
diff changeset
  3306
1359
ab88659a5000 Fix race in #waitForExposeFor: which could cause a "late expose event"
Stefan Vogel <sv@exept.de>
parents: 1340
diff changeset
  3307
    blocked := true.
1013
32d804ff472d cleanup when unwinding from a waitForExpose
Claus Gittinger <cg@exept.de>
parents: 1012
diff changeset
  3308
    [
7258
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3309
        viewsDevice flush.
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3310
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3311
        viewsDevice isWindowsPlatform ifTrue:[
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3312
            "/ since this is definitely a local display,
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3313
            "/ there is no need for a long timeOut
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3314
            "/ (it should arrive fast)
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3315
            pollDelay := 50.
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3316
            pollDelay2 := 50.
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3317
        ] ifFalse:[
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3318
            pollDelay := 3000.
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3319
            pollDelay2 := 1000.
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3320
        ].
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3321
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3322
        Processor activeProcessIsSystemProcess ifTrue:[
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3323
            endPollTime := Timestamp now addMilliseconds:pollDelay.
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3324
            stopPoll := false.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3325
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3326
            "/
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3327
            "/ cannot really suspend, if its a systemProcess
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3328
            "/ must poll for the event
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3329
            "/
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3330
            [(gotExpose includes:aView) or:[stopPoll]] whileFalse:[
7258
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3331
                (viewsDevice exposeEventPendingFor:aView id withSync:true) ifTrue:[
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3332
                    viewsDevice dispatchExposeEventFor:aView id.
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3333
                ].
4120
bd779aa2b314 Use Timestamp/#asTimestamp instead of AbsoluteTime/#asAbsoluteTime
Stefan Vogel <sv@exept.de>
parents: 4112
diff changeset
  3334
                stopPoll := Timestamp now > endPollTime.
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3335
                Processor yield.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3336
            ]
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3337
        ] ifFalse:[
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3338
            lostExpose := 1.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3339
            "
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3340
              block interrupt here, to resolve race between
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3341
              testing gotExpose and the semaphore, which is woken up
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3342
              with #signalForAll.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3343
            "
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3344
            blocked := OperatingSystem blockInterrupts.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3345
            [ (gotExpose includes:aView) or:[lostExpose > 2] ] whileFalse:[
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3346
                "
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3347
                 just in case we have a (network or software) problem ...
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3348
                 explanation: it may happen, that an expose event is totally
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3349
                 lost - for example, if the network breaks down.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3350
                 To not block forever, we wait with a timeout, to get out of here
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3351
                 if the event does not arrive after a few seconds.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3352
                "
3140
21bccc3a24f9 care for nilled semaphore in waitForExpose;
Claus Gittinger <cg@exept.de>
parents: 3133
diff changeset
  3353
                exposeSema isNil ifTrue:[
3133
b80adaa96118 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3127
diff changeset
  3354
                    lostExpose := 999.
b80adaa96118 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3127
diff changeset
  3355
                ].
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3356
                (exposeSema waitWithTimeoutMs:(pollDelay2 * lostExpose)) isNil ifTrue:[
7258
7400c3d0cb13 #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 7203
diff changeset
  3357
                    viewsDevice flush.         "/ we are paranoid
3127
451d7fddc3a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3125
diff changeset
  3358
                    lostExpose := lostExpose + 1.
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3359
                ].
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3360
            ].
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3361
            (gotExpose includes:aView) ifFalse:[
7459
fe14f2cd05fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7442
diff changeset
  3362
                Logger warning:'lost expose event: %1' with:aView.
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3363
            ] ifTrue:[
4538
9f1f02324eb4 we dont care for late expose events (only for lost ones)
Claus Gittinger <cg@exept.de>
parents: 4529
diff changeset
  3364
"/                lostExpose > 1 ifTrue:[
9f1f02324eb4 we dont care for late expose events (only for lost ones)
Claus Gittinger <cg@exept.de>
parents: 4529
diff changeset
  3365
"/                    ('WindowSensor [info]: late expose event (' , aView printString , ')') infoPrintCR.
9f1f02324eb4 we dont care for late expose events (only for lost ones)
Claus Gittinger <cg@exept.de>
parents: 4529
diff changeset
  3366
"/                ]
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3367
            ]
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3368
        ].
3604
e32b5044a59e #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 3593
diff changeset
  3369
    ] ensure:[
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3370
        gotExpose remove:aView ifAbsent:nil.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3371
        catchExpose remove:aView ifAbsent:nil.
3116
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3372
        catchExpose isEmpty ifTrue:[
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3373
            exposeEventSemaphore := nil
8d3160325f23 create the exposeEventSemaphore lazyly.
Claus Gittinger <cg@exept.de>
parents: 3090
diff changeset
  3374
        ].
2820
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3375
        gotOtherEvent remove:aView ifAbsent:nil.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3376
        blocked ifFalse:[
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3377
            OperatingSystem unblockInterrupts.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3378
        ].
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3379
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3380
        "/
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3381
        "/ other incoming events have been ignored during the wait.
a3db9137637b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2810
diff changeset
  3382
        "/ Now handle those ...
7459
fe14f2cd05fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7442
diff changeset
  3383
        "/  
fe14f2cd05fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7442
diff changeset
  3384
        eventSemaphore notNil ifTrue:[
fe14f2cd05fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7442
diff changeset
  3385
            eventSemaphore signalOnce.
fe14f2cd05fd #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7442
diff changeset
  3386
        ].
1013
32d804ff472d cleanup when unwinding from a waitForExpose
Claus Gittinger <cg@exept.de>
parents: 1012
diff changeset
  3387
    ].
26
ac9f66dc8f53 *** empty log message ***
claus
parents: 19
diff changeset
  3388
4538
9f1f02324eb4 we dont care for late expose events (only for lost ones)
Claus Gittinger <cg@exept.de>
parents: 4529
diff changeset
  3389
    "Modified: / 20-02-1997 / 09:24:31 / stefan"
9f1f02324eb4 we dont care for late expose events (only for lost ones)
Claus Gittinger <cg@exept.de>
parents: 4529
diff changeset
  3390
    "Modified: / 19-07-2006 / 20:03:42 / cg"
47
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
  3391
!
209bc432e4e3 last version with separate queue
claus
parents: 46
diff changeset
  3392
157
claus
parents: 154
diff changeset
  3393
waitNoButton
7468
6cc4f99397af #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7459
diff changeset
  3394
    <resource: #obsolete>
157
claus
parents: 154
diff changeset
  3395
    "ST-80 compatibility: wait until no mouse button is pressed.
claus
parents: 154
diff changeset
  3396
     Do not use this in your applications; polling the sensor is
claus
parents: 154
diff changeset
  3397
     bad style."
claus
parents: 154
diff changeset
  3398
claus
parents: 154
diff changeset
  3399
    [self anyButtonPressed] whileTrue:[
5750
39d8d976234e Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5745
diff changeset
  3400
        self pollForActivity
157
claus
parents: 154
diff changeset
  3401
    ].
1241
c65f1c9d8de4 use critical regions around queue manipulation code.
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  3402
1320
478840db1666 more ST80 stuff
Claus Gittinger <cg@exept.de>
parents: 1318
diff changeset
  3403
    "Modified: 10.2.1997 / 13:30:43 / cg"
157
claus
parents: 154
diff changeset
  3404
! !
claus
parents: 154
diff changeset
  3405
1082
44d671491f5e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1063
diff changeset
  3406
!WindowSensor class methodsFor:'documentation'!
251
915de9a65169 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 244
diff changeset
  3407
6760
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3408
version
6882
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  3409
    ^ '$Header$'
6760
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3410
!
362f26f1ed56 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6759
diff changeset
  3411
5365
66c33e74c2a8 copy the modifierState when dealing with keyboard events
Claus Gittinger <cg@exept.de>
parents: 5279
diff changeset
  3412
version_CVS
6882
0fe84854cd44 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 6816
diff changeset
  3413
    ^ '$Header$'
251
915de9a65169 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 244
diff changeset
  3414
! !
3758
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3732
diff changeset
  3415
5992
efb2a4e83155 class: WindowSensor
Claus Gittinger <cg@exept.de>
parents: 5963
diff changeset
  3416
140
claus
parents: 133
diff changeset
  3417
WindowSensor initialize!