X11 sample rewritten; now it works again
[k8lst.git] / modules / x11 / base / x11groups.st
blob7e7280e83e654b690d4c58d1a3e8ae1b4edb3c99
1 Package [
2   X11
6 X11BaseWindow subclass: X11RestrictedGroup [
7   | widgetlist |
9   init [
10     super init.
11     widgetlist := List new.
12   ]
14   includes: aWC [
15     ^widgetlist includes: aWC.
16   ]
18   findWidgetById: aWid [
19     widgetlist do: [:w | (X11Singleton sameWids: aWid and: w wid) ifTrue: [ ^w ]].
20     ^nil
21   ]
23   passEvent: aWid event: evt [
24     "returns true if event handler found"
25     | w |
26     (super passEvent: aWid event: evt) ifTrue: [ ^true ].
27     (w := self findWidgetById: aWid) ifNotNil: [ w onEvent: evt. ^true ].
28     "widgetlist ifNotNil: [ widgetlist do: [:w | (w passEvent: aWid event: evt) ifTrue: [ ^true ]]]."
29     ^false
30   ]
32   markAsDead [
33     super markAsDead.
34     widgetlist do: [:w | w markAsDead ].
35     widgetlist removeAll.
36   ]
40 X11RestrictedGroup subclass: X11Group [
41   isGroup [
42     true
43   ]
45   add: aWC [
46     widgetlist << aWC.
47   ]
49   remove: aWC [
50     widgetlist remove: aWC ifAbsent: [ nil ]
51   ]
53   removeAll [
54     widgetlist removeAll
55   ]