6 X11BaseWindow subclass: X11Button [
7 | text hovered wasPress enabled normback hoverback selected |
9 ^new: parent at: xy size: sz text: aText [
11 obj := self new: parent at: xy size: sz bgColor: (X11Color new: 0 g: 0 b: 0.7).
13 in: obj var: #text put: aText;
14 in: obj var: #selected put: false.
15 obj; fontColor: 1.0 g: 1.0 b: 1.0; show.
19 ^new: parent at: xy text: aText [
21 obj := self new: parent at: xy size: 1 @ 1 text: aText.
23 gw := font textWidth: aText.
24 gh := (font textHeight: aText) max: (font textHeight: 'qgldy').
25 obj resize: (gw + 12) @ (gh + 8).
35 self isActive ifTrue: [ self redraw ].
44 normback := X11Color new: 0.0 g: 0.0 b: 0.7.
45 hoverback := X11Color new: 0.0 g: 0.0 b: 0.9.
62 "'button selected: ' print. aFlag printNl."
63 aFlag = selected ifFalse: [
71 self fgColor: (hovered ifNotNil: [ hoverback ] ifNil: [ normback ]).
72 rc := (self clientSizeRect) growX: 1 y: 1.
74 tw := font textWidth: text.
75 tpt := ((self width - tw) / 2) @ 4.
76 wasPress ifNotNil: [ tpt := tpt moveX: 1 y: 1 ].
77 self drawTextAt: tpt text: text.
79 gc lineStyle: gc lineOnOffDash.
80 rc := (self clientRect) growX: -2 y: -2.
81 self fgColor: (X11Color new: 0.4 g: 0.4 b: 0.4).
83 gc lineStyle: gc lineSolid.
88 "'keycode: ' print. (evt at: 8) print. '; keyname: [' print. (evt at: 9) print. ']' printNl."
89 "'key: ' print. evt printNl."
90 (evt at: 9) == $ ifTrue: [ self clicked. ^true ].
94 onX11EnterNotify: evt [
95 super onX11EnterNotify: evt.
100 onX11LeaveNotify: evt [
101 super onX11LeaveNotify: evt.
102 hovered := wasPress := nil.
106 onX11ButtonPress: evt [
107 super onX11ButtonPress: evt.
108 (evt at: 8) = 1 ifTrue: [
115 onX11ButtonRelease: evt [
116 super onX11ButtonRelease: evt.
117 ((wasPress notNil) and: [ (evt at: 8) = 1 ]) ifTrue: [