PopUpView.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 14 Sep 2017 09:28:09 +0100
branchjv
changeset 8182 c730140a0156
parent 7261 9a2ab9752a55
child 8229 c097b46a0b6b
permissions -rw-r--r--
X11: compile `GLXWorkstation` with OpenGL OpenGL compiler and linker flags are configured locally in `Make.proto` rather than in target config - this moves the configuration closer to the code. Currently all supported (and considered) platforms have OpenGL implementation. Later on one may use conditionals in makefile to deal exceptions.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     1
"
6
7ee0cfde237d *** empty log message ***
claus
parents: 5
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
72
3e84121988c3 *** empty log message ***
claus
parents: 54
diff changeset
     3
	      All Rights Reserved
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     4
48194c26a46c Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
48194c26a46c Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
48194c26a46c Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
48194c26a46c Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
48194c26a46c Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
48194c26a46c Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
48194c26a46c Initial revision
claus
parents:
diff changeset
    11
"
3219
9197f5be48d1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3179
diff changeset
    12
"{ Package: 'stx:libview' }"
9197f5be48d1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3179
diff changeset
    13
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
    14
"{ NameSpace: Smalltalk }"
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
    15
135
claus
parents: 89
diff changeset
    16
TopView subclass:#PopUpView
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
    17
	instanceVariableNames:'shadowView haveControl exclusivePointer mapTime
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
    18
		previousPointerGrab previousKeyboardGrab'
485
47c3cfae7ae2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 388
diff changeset
    19
	classVariableNames:'DefaultShadow DefaultLevel DefaultBorderWidth DefaultBorderColor'
47c3cfae7ae2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 388
diff changeset
    20
	poolDictionaries:''
47c3cfae7ae2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 388
diff changeset
    21
	category:'Views-Basic'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    22
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
1174
6889dc61d701 newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 922
diff changeset
    24
!PopUpView class methodsFor:'documentation'!
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    25
46
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    26
copyright
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    27
"
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    28
 COPYRIGHT (c) 1989 by Claus Gittinger
72
3e84121988c3 *** empty log message ***
claus
parents: 54
diff changeset
    29
	      All Rights Reserved
46
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    30
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    31
 This software is furnished under a license and may be used
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    32
 only in accordance with the terms of that license and with the
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    33
 inclusion of the above copyright notice.   This software may not
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    34
 be provided or otherwise made available to, or used by, any
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    35
 other person.  No title to or ownership of the software is
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    36
 hereby transferred.
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    37
"
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    38
!
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    39
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    40
documentation
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    41
"
46
7b331e9012fd *** empty log message ***
claus
parents: 12
diff changeset
    42
    this class implements an abstract superclass for all views which bypass the 
89
ea2bf46eb669 *** empty log message ***
claus
parents: 81
diff changeset
    43
    window manager and pop up on top of the screen. A typical example is
ea2bf46eb669 *** empty log message ***
claus
parents: 81
diff changeset
    44
    a PopUpMenu. PopUpView itself is abstract, providing basic mechanisms.
ea2bf46eb669 *** empty log message ***
claus
parents: 81
diff changeset
    45
    They are not decorated by window managers.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    46
616
56cf67c82664 documentation
Claus Gittinger <cg@exept.de>
parents: 587
diff changeset
    47
    [styleSheet parameters:]
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    48
616
56cf67c82664 documentation
Claus Gittinger <cg@exept.de>
parents: 587
diff changeset
    49
        popupShadow         <Boolean>           if true, popupViews show a shadow below
56cf67c82664 documentation
Claus Gittinger <cg@exept.de>
parents: 587
diff changeset
    50
        popupLevel          <nil | Integer>     3D level
56cf67c82664 documentation
Claus Gittinger <cg@exept.de>
parents: 587
diff changeset
    51
        popupBorderWidth    <nil | Integer>     borderWidth
56cf67c82664 documentation
Claus Gittinger <cg@exept.de>
parents: 587
diff changeset
    52
56cf67c82664 documentation
Claus Gittinger <cg@exept.de>
parents: 587
diff changeset
    53
    [author:]
56cf67c82664 documentation
Claus Gittinger <cg@exept.de>
parents: 587
diff changeset
    54
        Claus Gittinger
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    55
"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    56
! !
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    57
1174
6889dc61d701 newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 922
diff changeset
    58
!PopUpView class methodsFor:'defaults'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    59
48194c26a46c Initial revision
claus
parents:
diff changeset
    60
defaultExtent
587
c0fb8bc13596 commentary
Claus Gittinger <cg@exept.de>
parents: 523
diff changeset
    61
    "return the default extent of my instances.
c0fb8bc13596 commentary
Claus Gittinger <cg@exept.de>
parents: 523
diff changeset
    62
     The value returned here is usually ignored, and
c0fb8bc13596 commentary
Claus Gittinger <cg@exept.de>
parents: 523
diff changeset
    63
     the value from preferredExtent taken instead."
c0fb8bc13596 commentary
Claus Gittinger <cg@exept.de>
parents: 523
diff changeset
    64
6205
bed45895688a Replace references to Diplay with "Screen current" - where appropriate
Stefan Vogel <sv@exept.de>
parents: 6086
diff changeset
    65
    |display|
587
c0fb8bc13596 commentary
Claus Gittinger <cg@exept.de>
parents: 523
diff changeset
    66
6205
bed45895688a Replace references to Diplay with "Screen current" - where appropriate
Stefan Vogel <sv@exept.de>
parents: 6086
diff changeset
    67
    display := Screen current.
bed45895688a Replace references to Diplay with "Screen current" - where appropriate
Stefan Vogel <sv@exept.de>
parents: 6086
diff changeset
    68
    ^ (display monitorBoundsAt:display pointerPosition) extent // 3.
922
52c1d0d22c0e dont ask Display for defaultExtent - ask current screen
Claus Gittinger <cg@exept.de>
parents: 677
diff changeset
    69
52c1d0d22c0e dont ask Display for defaultExtent - ask current screen
Claus Gittinger <cg@exept.de>
parents: 677
diff changeset
    70
    "Modified: 5.7.1996 / 13:55:08 / cg"
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
    71
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    72
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    73
shadows
2876
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    74
    "return the shadows-flag. False means: turned off.
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    75
     Notice, that even when set to true, a particular device might
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    76
     want to suppress this feature."
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    77
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    78
    ^ DefaultShadow
144
claus
parents: 141
diff changeset
    79
!
claus
parents: 141
diff changeset
    80
claus
parents: 141
diff changeset
    81
shadows:aBoolean
claus
parents: 141
diff changeset
    82
    "turn on/off shadows under popUpViews. 
2876
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    83
     Notice, that even when set to true, a particular device might
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    84
     want to suppress this feature.
144
claus
parents: 141
diff changeset
    85
     On slow displays, turning them off makes menus appear a bit snappier.
claus
parents: 141
diff changeset
    86
     The default is set via the styleSheet and changes when the viewStyle
claus
parents: 141
diff changeset
    87
     is changed."
claus
parents: 141
diff changeset
    88
claus
parents: 141
diff changeset
    89
    DefaultShadow := aBoolean
claus
parents: 141
diff changeset
    90
!
claus
parents: 141
diff changeset
    91
2876
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    92
shadowsOnDevice:aDevice
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    93
    "return true, if shadows should be shown on aDevice"
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    94
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    95
    ^ DefaultShadow and:[aDevice suppressShadowViews not]
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    96
!
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
    97
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
    98
updateStyleCache
485
47c3cfae7ae2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 388
diff changeset
    99
    "extract values from the styleSheet and cache them in class variables"
47c3cfae7ae2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 388
diff changeset
   100
1930
a46b3cd6a232 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1732
diff changeset
   101
    <resource: #style (#'popup.shadow' #'popup.level'
a46b3cd6a232 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1732
diff changeset
   102
                       #'popup.borderWidth'
a46b3cd6a232 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1732
diff changeset
   103
                       #'popup.borderColor')>
485
47c3cfae7ae2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 388
diff changeset
   104
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   105
    ShadowView isNil ifTrue:[
485
47c3cfae7ae2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 388
diff changeset
   106
        DefaultShadow := false
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   107
    ] ifFalse:[
2876
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
   108
        "/ notice, that even when true, a particular device might
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
   109
        "/ want to suppress this feature.
1930
a46b3cd6a232 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1732
diff changeset
   110
        DefaultShadow := StyleSheet at:'popup.shadow' default:false.
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   111
    ].
1930
a46b3cd6a232 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1732
diff changeset
   112
    DefaultLevel := StyleSheet at:'popup.level'.
a46b3cd6a232 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1732
diff changeset
   113
    DefaultBorderWidth := StyleSheet at:'popup.borderWidth'.
5416
60f9d36d0a27 border handling
Claus Gittinger <cg@exept.de>
parents: 5387
diff changeset
   114
    DefaultBorderColor := StyleSheet colorAt:'popup.borderColor' default:Color black.
485
47c3cfae7ae2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 388
diff changeset
   115
1930
a46b3cd6a232 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1732
diff changeset
   116
    "Modified: 20.10.1997 / 15:10:07 / cg"
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   117
! !
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   118
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   119
!PopUpView methodsFor:'accessing'!
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   120
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   121
exclusivePointer:aBoolean
677
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   122
    "set/clear the exclusive pointer flag;
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   123
     DANGER: if set, no interaction with other views is possible,
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   124
     while the popUp is active"
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   125
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   126
    exclusivePointer := aBoolean
677
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   127
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   128
    "Modified: 12.5.1996 / 22:02:52 / cg"
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   129
!
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   130
4738
e2224a3d9174 accessing haveControl from outside
ca
parents: 4372
diff changeset
   131
haveControl:aBoolean
e2224a3d9174 accessing haveControl from outside
ca
parents: 4372
diff changeset
   132
    "set the flag which decides whether the pointers canbe grab
e2224a3d9174 accessing haveControl from outside
ca
parents: 4372
diff changeset
   133
     during mapped.
e2224a3d9174 accessing haveControl from outside
ca
parents: 4372
diff changeset
   134
    "
e2224a3d9174 accessing haveControl from outside
ca
parents: 4372
diff changeset
   135
    haveControl := aBoolean.
e2224a3d9174 accessing haveControl from outside
ca
parents: 4372
diff changeset
   136
!
e2224a3d9174 accessing haveControl from outside
ca
parents: 4372
diff changeset
   137
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   138
noShadow
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   139
    "turn off the shadow"
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   140
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   141
    shadowView := nil
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   142
! !
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   143
3887
01f98c2951a6 method category rename
Claus Gittinger <cg@exept.de>
parents: 3884
diff changeset
   144
!PopUpView methodsFor:'activation & deactivation'!
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   145
3154
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   146
open
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   147
    "default for popUpViews is to come up modal"
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   148
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   149
    self openModal
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   150
!
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   151
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   152
show
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   153
    "realize the view at its last position"
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   154
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   155
    self fixSize.
3154
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   156
    self open
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   157
!
144
claus
parents: 141
diff changeset
   158
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   159
showAt:aPoint
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   160
    "realize the view at aPoint"
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   161
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   162
    self showAt:aPoint resizing:true 
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   163
!
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   164
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   165
showAt:aPoint resizing:aBoolean
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   166
    "realize the view at aPoint"
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   167
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   168
    aBoolean ifTrue:[
1732
e6b92cfc32a7 flush motion and keyboard events
ca
parents: 1263
diff changeset
   169
        self fixSize.
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   170
    ].
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   171
    self origin:aPoint.
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   172
    self makeFullyVisible.
3154
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   173
    self open 
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   174
!
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   175
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   176
showAtPointer
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   177
    "realize the view at the current pointer position"
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   178
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   179
    self showAt:(device pointerPosition) resizing:true
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   180
!
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   181
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   182
showCenteredIn:aView
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   183
    "make myself visible at the screen center."
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   184
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   185
    |top|
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   186
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   187
    top := aView topView.
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   188
    top raise.
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   189
    self showAt:(top origin 
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   190
		 + (aView originRelativeTo:top) 
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   191
		 + (aView extent // 2)
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   192
		 - (self extent // 2))
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   193
! !
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   194
2412
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   195
!PopUpView methodsFor:'defaults'!
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   196
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   197
defaultShadow
2876
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
   198
    "obsoleted by PopUpView defaultShadowOn:aDevice"
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
   199
3588
ce74b5c6953c Obsolete method
Stefan Vogel <sv@exept.de>
parents: 3402
diff changeset
   200
    <resource: #obsolete>
ce74b5c6953c Obsolete method
Stefan Vogel <sv@exept.de>
parents: 3402
diff changeset
   201
2876
dbe1454f8539 allow for a device to suppress shadowViews.
Claus Gittinger <cg@exept.de>
parents: 2831
diff changeset
   202
    self obsoleteMethodWarning.
2412
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   203
    ^ DefaultShadow
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   204
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   205
    "Created: / 4.12.1998 / 15:11:20 / cg"
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   206
! !
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   207
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   208
!PopUpView methodsFor:'grabbing'!
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   209
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   210
grabKeyboard
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   211
    previousKeyboardGrab := device activeKeyboardGrab.
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   212
"/ Transcript show:'k-ggg by '; show:self; show:'[',self identityHash printString,']'; showCR:' - previous is ' , previousKeyboardGrab printString.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   213
    ^ super grabKeyboard
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   214
!
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   215
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   216
grabPointerWithCursor:aCursorOrNil
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   217
    previousPointerGrab := device activePointerGrab.
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   218
"/ Transcript show:'ggg by '; show:self; show:'[',self identityHash printString,']'; showCR:' - previous is ' , previousPointerGrab printString.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   219
    ^ super grabPointerWithCursor:aCursorOrNil
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   220
!
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   221
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   222
ungrabKeyboard
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   223
"/ Transcript show:'k-uuu by '; show:self; show:'[',self identityHash printString,']'; showCR:' - previous is ' , previousKeyboardGrab printString.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   224
    super ungrabKeyboard.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   225
    previousKeyboardGrab notNil ifTrue:[
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   226
        device grabKeyboardInView:previousKeyboardGrab
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   227
    ].
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   228
!
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   229
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   230
ungrabPointer
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   231
"/ Transcript show:'uuu by '; show:self; show:'[',self identityHash printString,']'; showCR:' - previous is ' , previousPointerGrab printString.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   232
    super ungrabPointer.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   233
    previousPointerGrab notNil ifTrue:[
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   234
        device grabPointerInView:previousPointerGrab
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   235
    ].
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   236
! !
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   237
3884
dc9ea4cfc963 method category rename
Claus Gittinger <cg@exept.de>
parents: 3882
diff changeset
   238
!PopUpView methodsFor:'initialization & release'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   239
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   240
create
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   241
    super create.
1732
e6b92cfc32a7 flush motion and keyboard events
ca
parents: 1263
diff changeset
   242
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   243
    shadowView isNil ifTrue:[
1732
e6b92cfc32a7 flush motion and keyboard events
ca
parents: 1263
diff changeset
   244
        self saveUnder:true
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   245
    ]
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   246
!
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   247
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   248
destroy
141
claus
parents: 135
diff changeset
   249
    haveControl := false.
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   250
    super destroy.
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   251
    shadowView notNil ifTrue:[shadowView destroy. shadowView := nil]
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   252
!
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   253
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   254
initStyle
1263
f5af4e2abd71 commentary
Claus Gittinger <cg@exept.de>
parents: 1174
diff changeset
   255
    "setup viewStyle specifics"
f5af4e2abd71 commentary
Claus Gittinger <cg@exept.de>
parents: 1174
diff changeset
   256
5416
60f9d36d0a27 border handling
Claus Gittinger <cg@exept.de>
parents: 5387
diff changeset
   257
    |l bw|
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   258
2574
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   259
    super initStyle.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   260
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   261
    DefaultBorderColor notNil ifTrue:[
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   262
        self borderColor:(DefaultBorderColor onDevice:device).
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   263
    ].
5416
60f9d36d0a27 border handling
Claus Gittinger <cg@exept.de>
parents: 5387
diff changeset
   264
    (bw := DefaultBorderWidth) isNil ifTrue:[
60f9d36d0a27 border handling
Claus Gittinger <cg@exept.de>
parents: 5387
diff changeset
   265
        bw := (styleSheet is3D ifTrue:[0] ifFalse:[1]).
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   266
    ].
5416
60f9d36d0a27 border handling
Claus Gittinger <cg@exept.de>
parents: 5387
diff changeset
   267
    self borderWidth:bw.
60f9d36d0a27 border handling
Claus Gittinger <cg@exept.de>
parents: 5387
diff changeset
   268
2574
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   269
    DefaultLevel isNil ifTrue:[
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   270
        l := styleSheet is3D ifTrue:[1] ifFalse:[0].
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   271
    ] ifFalse:[
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   272
        l := DefaultLevel.
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   273
    ].
2574
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   274
    self level:l.
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   275
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   276
    (self class shadowsOnDevice:device) ifTrue:[
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   277
        shadowView := (ShadowView onDevice:device) for:self.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   278
    ].
1263
f5af4e2abd71 commentary
Claus Gittinger <cg@exept.de>
parents: 1174
diff changeset
   279
2412
3065f9e362dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2387
diff changeset
   280
    "Modified: / 4.12.1998 / 15:11:28 / cg"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   281
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   282
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   283
initialize
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   284
    super initialize.
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   285
    exclusivePointer := true.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   286
    haveControl := false.
4080
8f7e8d597552 no access to type instVar
Claus Gittinger <cg@exept.de>
parents: 3952
diff changeset
   287
    self bePopUpView
162
claus
parents: 157
diff changeset
   288
!
claus
parents: 157
diff changeset
   289
3307
bc96492a48de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3219
diff changeset
   290
releaseDeviceResources
bc96492a48de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3219
diff changeset
   291
    shadowView notNil ifTrue:[shadowView destroy. shadowView := nil].
bc96492a48de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3219
diff changeset
   292
    super releaseDeviceResources
bc96492a48de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3219
diff changeset
   293
!
bc96492a48de checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3219
diff changeset
   294
162
claus
parents: 157
diff changeset
   295
releasePointer 
677
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   296
    "release the mouse pointer"
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   297
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   298
    device activePointerGrab == self ifTrue:[
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   299
        device ungrabPointer.
162
claus
parents: 157
diff changeset
   300
    ].
677
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   301
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   302
    "Modified: 12.5.1996 / 22:04:09 / cg"
2387
cfd8fa32799b also release keyboard when unmapped
Claus Gittinger <cg@exept.de>
parents: 2335
diff changeset
   303
!
cfd8fa32799b also release keyboard when unmapped
Claus Gittinger <cg@exept.de>
parents: 2335
diff changeset
   304
cfd8fa32799b also release keyboard when unmapped
Claus Gittinger <cg@exept.de>
parents: 2335
diff changeset
   305
releasePointerAndKeyboard 
cfd8fa32799b also release keyboard when unmapped
Claus Gittinger <cg@exept.de>
parents: 2335
diff changeset
   306
    "release the pointer and keyboard"
cfd8fa32799b also release keyboard when unmapped
Claus Gittinger <cg@exept.de>
parents: 2335
diff changeset
   307
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   308
    self ungrabPointer.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   309
    self ungrabKeyboard.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   310
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   311
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   312
!PopUpView methodsFor:'private'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   313
677
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   314
regainControl
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   315
    "get exclusive access to pointer and keyboard"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   316
648
a913a55fa11b checkin from browser
Stefan Vogel <sv@exept.de>
parents: 643
diff changeset
   317
    shown ifTrue:[
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   318
        self grabPointer.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   319
        self grabKeyboard.
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   320
        self sensor flushMotionEventsFor:nil; flushKeyboardFor:nil.
648
a913a55fa11b checkin from browser
Stefan Vogel <sv@exept.de>
parents: 643
diff changeset
   321
    ].
493
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   322
648
a913a55fa11b checkin from browser
Stefan Vogel <sv@exept.de>
parents: 643
diff changeset
   323
    "Modified: 6.5.1996 / 22:33:39 / stefan"
677
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   324
    "Modified: 12.5.1996 / 22:04:42 / cg"
89
ea2bf46eb669 *** empty log message ***
claus
parents: 81
diff changeset
   325
! !
ea2bf46eb669 *** empty log message ***
claus
parents: 81
diff changeset
   326
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   327
!PopUpView methodsFor:'queries'!
89
ea2bf46eb669 *** empty log message ***
claus
parents: 81
diff changeset
   328
3154
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   329
grabWhenMapped
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   330
    "return true, if I should perform a grab when mapped. 
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   331
     Redefinable for subclasses."
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   332
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   333
    ^ true
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   334
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   335
    "Modified: 12.5.1996 / 21:57:51 / cg"
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   336
!
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   337
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   338
isPopUpView
677
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   339
    "return true, since I want to come up without decoration 
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   340
     and popUp to top immediately."
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   341
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   342
    ^ true
677
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   343
069dd8cd00d1 removed obsolete stuff & commentary
Claus Gittinger <cg@exept.de>
parents: 648
diff changeset
   344
    "Modified: 12.5.1996 / 21:57:51 / cg"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   345
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   346
3882
6b3ca3db5d31 method category rename
Claus Gittinger <cg@exept.de>
parents: 3588
diff changeset
   347
!PopUpView methodsFor:'realize & unrealize'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   348
2574
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   349
hide
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   350
    "hide the view, leave its modal event loop"
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   351
2579
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   352
    |masterGroup|
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   353
2574
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   354
    windowGroup notNil ifTrue:[
2579
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   355
        masterGroup := windowGroup previousGroup.
2574
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   356
        windowGroup removeView:self.
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   357
        windowGroup := nil.
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   358
    ].
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   359
    self unmap.
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   360
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   361
    "/ allow for redraw events to arrive
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   362
    "/ (actually, only req'd for win32 systems,
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   363
    "/  but that short delay does not hurt on others)
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   364
2579
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   365
"/    Delay waitForSeconds:0.05.
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   366
    masterGroup notNil ifTrue:[
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   367
        "
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   368
         this is a kludge for IRIS and others which do not provide backingstore:
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   369
         when we hide a modalbox (such as a searchbox) which covered
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   370
         a scrollbar, the scrollbars bitblt-method will copy from the
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   371
         not-yet redrawn area - effectively clearing the scroller.
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   372
         We need a short delay here, since at this time, the expose event has
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   373
         not yet arrived.
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   374
        "
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   375
        Delay waitForSeconds:0.05.
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   376
        masterGroup processExposeEvents   
774e6fb33dde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2574
diff changeset
   377
    ].
2574
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   378
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   379
    "Modified: / 3.5.1996 / 23:48:22 / stefan"
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   380
    "Modified: / 12.9.1998 / 14:58:33 / cg"
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   381
!
ab434bf2439e category change;
Claus Gittinger <cg@exept.de>
parents: 2412
diff changeset
   382
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   383
mapped
162
claus
parents: 157
diff changeset
   384
    "grab the pointer here, when visible (but not control is already lost). 
643
d58256573e17 Rename unrealize-->unmap.
Stefan Vogel <sv@exept.de>
parents: 616
diff changeset
   385
     If the grab fails, try again and unmap myself if that fails too."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   386
3952
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   387
    |count grabbed|
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   388
523
2de6065d37c8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 506
diff changeset
   389
    mapTime := Time millisecondClockValue.
2de6065d37c8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 506
diff changeset
   390
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   391
    super mapped.
162
claus
parents: 157
diff changeset
   392
157
claus
parents: 151
diff changeset
   393
    (haveControl 
162
claus
parents: 157
diff changeset
   394
    and:[true "/ exclusivePointer
3154
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   395
    and:[realized
2c9c64a64c20 some changes to make subclassing easier.
Claus Gittinger <cg@exept.de>
parents: 3088
diff changeset
   396
    and:[self grabWhenMapped]]]) ifTrue:[
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   397
        (self grabPointer) ifFalse:[
3952
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   398
            count := 0.
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   399
            [
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   400
                "wait a little bit and try again"
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   401
                Delay waitForSeconds:0.1.
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   402
                count := count + 1.
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   403
            ] doUntil:[ (grabbed := self grabPointer) or:[count > 4]].
b96c9aaa2c63 retry grabPointer a few times (in case the initial grab fails)
Claus Gittinger <cg@exept.de>
parents: 3887
diff changeset
   404
            grabbed ifFalse:[
493
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   405
                "give up"
1174
6889dc61d701 newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 922
diff changeset
   406
                'PopUpView [warning]: could not grab pointer' errorPrintCR.
643
d58256573e17 Rename unrealize-->unmap.
Stefan Vogel <sv@exept.de>
parents: 616
diff changeset
   407
                self unmap
493
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   408
            ]
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   409
        ].
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   410
        exclusivePointer ifFalse:[
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   411
            self releasePointer
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   412
        ].
3088
79259d26e59e grabbing changed to restore grab at hiding time,
ca
parents: 2876
diff changeset
   413
        self grabKeyboard.
493
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   414
        self getKeyboardFocus
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   415
    ]
493
736384460102 grab keyboard when mapped
Claus Gittinger <cg@exept.de>
parents: 485
diff changeset
   416
643
d58256573e17 Rename unrealize-->unmap.
Stefan Vogel <sv@exept.de>
parents: 616
diff changeset
   417
    "Modified: 3.5.1996 / 23:48:37 / stefan"
1174
6889dc61d701 newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 922
diff changeset
   418
    "Modified: 10.1.1997 / 18:00:31 / cg"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   419
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   420
48194c26a46c Initial revision
claus
parents:
diff changeset
   421
realize
48194c26a46c Initial revision
claus
parents:
diff changeset
   422
    shadowView notNil ifTrue:[shadowView realize].
48194c26a46c Initial revision
claus
parents:
diff changeset
   423
    self raise.
81
4ba554473294 *** empty log message ***
claus
parents: 72
diff changeset
   424
    haveControl := true.
3219
9197f5be48d1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3179
diff changeset
   425
9197f5be48d1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3179
diff changeset
   426
"/    device zoom:(device pointerPosition extent:1@1)to:(self bounds) duration:10.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   427
    super realize.
48194c26a46c Initial revision
claus
parents:
diff changeset
   428
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   429
643
d58256573e17 Rename unrealize-->unmap.
Stefan Vogel <sv@exept.de>
parents: 616
diff changeset
   430
unmap
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   431
    haveControl := false.
1732
e6b92cfc32a7 flush motion and keyboard events
ca
parents: 1263
diff changeset
   432
2387
cfd8fa32799b also release keyboard when unmapped
Claus Gittinger <cg@exept.de>
parents: 2335
diff changeset
   433
    self releasePointerAndKeyboard.
643
d58256573e17 Rename unrealize-->unmap.
Stefan Vogel <sv@exept.de>
parents: 616
diff changeset
   434
    super unmap.
d58256573e17 Rename unrealize-->unmap.
Stefan Vogel <sv@exept.de>
parents: 616
diff changeset
   435
    shadowView notNil ifTrue:[shadowView unmap].
d58256573e17 Rename unrealize-->unmap.
Stefan Vogel <sv@exept.de>
parents: 616
diff changeset
   436
d58256573e17 Rename unrealize-->unmap.
Stefan Vogel <sv@exept.de>
parents: 616
diff changeset
   437
    "Modified: 3.5.1996 / 23:46:06 / stefan"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   438
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   439
1174
6889dc61d701 newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 922
diff changeset
   440
!PopUpView class methodsFor:'documentation'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   441
269
ea536bb319a6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 219
diff changeset
   442
version
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   443
    ^ '$Header$'
5387
be2ff936d043 no more direct accesses to borderWidth and borderColor
Claus Gittinger <cg@exept.de>
parents: 4738
diff changeset
   444
!
be2ff936d043 no more direct accesses to borderWidth and borderColor
Claus Gittinger <cg@exept.de>
parents: 4738
diff changeset
   445
be2ff936d043 no more direct accesses to borderWidth and borderColor
Claus Gittinger <cg@exept.de>
parents: 4738
diff changeset
   446
version_CVS
7261
9a2ab9752a55 #REFACTORING
Claus Gittinger <cg@exept.de>
parents: 6270
diff changeset
   447
    ^ '$Header$'
157
claus
parents: 151
diff changeset
   448
! !
6086
1f43f897be4c class: PopUpView
Claus Gittinger <cg@exept.de>
parents: 5416
diff changeset
   449