annotate doodle/dia/tool_layer.d @ 81:d92b9f04b1e8

Bed time
author "David Bryant <bagnose@gmail.com>"
date Mon, 16 Aug 2010 00:04:27 +0930
parents b759414d2b72
children cdd4fc728d94
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
1754cb773d41 Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents: 26
diff changeset
1 module doodle.dia.tool_layer;
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
2
36
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
3 public {
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
4 import doodle.dia.tool;
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
5 }
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
6
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 14
diff changeset
7 private {
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
8 import doodle.core.logging;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
9 }
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
10
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
11 // This interface is used by the palette
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
12 interface IToolStack {
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
13 void use(Tool tool);
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
14 }
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
15
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
16 interface IToolStackObserver {
60
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
17 void toolChanged(Tool tool);
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 14
diff changeset
18 }
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
19
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
20 final class ToolLayer : Layer, IEventHandler, IToolStack {
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
21 this(in Tool[] staticTools, IToolStackObserver observer, in string name = "Tool") {
12
a093c4fbdd43 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 10
diff changeset
22 super(name);
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
23 _staticTools = staticTools.dup;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
24 _observer = observer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
25 }
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
26
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
27 // IToolStack overrides:
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
28
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
29 void use(Tool tool) {
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
30 assert(_grabbedTool is null);
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
31 message("using new tool: %s", tool.name);
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
32 _staticTools ~= tool;
60
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
33 _observer.toolChanged(tool);
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
34 }
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
35
36
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
36 // Layer overrides:
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
37
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
38 override Rectangle bounds() const {
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
39 return Rectangle();
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
40 }
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
41
80
b759414d2b72 Switched from cairo to Drawable abstraction
"David Bryant <bagnose@gmail.com>"
parents: 74
diff changeset
42 override void draw(in Rectangle screenDamage, scope Drawable screenDrawable,
b759414d2b72 Switched from cairo to Drawable abstraction
"David Bryant <bagnose@gmail.com>"
parents: 74
diff changeset
43 in Rectangle modelDamage, scope Drawable modelDrawable) const {
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
44 if (_grabbedTool) {
80
b759414d2b72 Switched from cairo to Drawable abstraction
"David Bryant <bagnose@gmail.com>"
parents: 74
diff changeset
45 _grabbedTool.draw(screenDamage, screenDrawable);
36
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
46 }
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
47 }
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
48
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
49 // EventHandler overrides:
188397ef9a12 Late night tinkering
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
50
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
51 bool handleButtonPress(scope IViewport viewport, in ButtonEvent event) {
14
0b7e7d43a79d Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 12
diff changeset
52 // writefln("%s", event);
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
53
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
54 if (_grabbedTool is null) {
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
55 foreach_reverse(ref tool; _staticTools) {
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
56 if (tool.handleButtonPress(viewport, event)) {
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
57 _grabbedTool = tool;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
58 _grabbedButton = event.buttonName;
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
59 break;
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
60 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
61 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
62 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
63 else {
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
64 _grabbedTool.handleButtonPress(viewport, event);
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
65 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
66
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
67 return true;
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
68 }
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
69
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
70 bool handleButtonRelease(scope IViewport viewport, in ButtonEvent event) {
14
0b7e7d43a79d Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 12
diff changeset
71 // writefln("%s", event);
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
72
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
73 if (_grabbedTool !is null) {
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
74 _grabbedTool.handleButtonRelease(viewport, event);
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
75
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
76 if (_grabbedButton == event.buttonName) {
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
77 _grabbedTool = null;
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
78 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
79 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
80
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
81 return true;
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
82 }
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
83
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
84 bool handleMotion(scope IViewport viewport, in MotionEvent event) {
17
c643c04e3f5e Checkpoint
David Bryant <daveb@acres.com.au>
parents: 16
diff changeset
85 //writefln("%s", event);
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
86
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
87 if (_grabbedTool is null) {
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
88 foreach_reverse(ref tool; _staticTools) {
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
89 if (tool.handleMotion(viewport, event)) {
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
90 break;
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
91 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
92 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
93 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
94 else {
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
95 _grabbedTool.handleMotion(viewport, event);
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
96 }
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
97
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
98 return true;
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
99 }
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
100
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
101 bool handleScroll(scope IViewport viewport, in ScrollEvent event) {
14
0b7e7d43a79d Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 12
diff changeset
102 // writefln("%s", event);
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
103
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
104 if (_grabbedTool is null) {
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
105 foreach_reverse(ref tool; _staticTools) {
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
106 if (tool.handleScroll(viewport, event)) {
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
107 break;
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
108 }
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
109 }
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
110 }
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
111 else {
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
112 _grabbedTool.handleScroll(viewport, event);
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
113 }
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
114
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
115 return true;
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
116 }
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
117
64
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
118 bool handleEnter(scope IViewport viewport, CrossingEvent event) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
119 trace("Enter %s", event);
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
120
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
121 if (_grabbedTool is null) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
122 foreach_reverse(ref tool; _staticTools) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
123 if (tool.handleEnter(viewport, event)) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
124 break;
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
125 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
126 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
127 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
128 else {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
129 _grabbedTool.handleEnter(viewport, event);
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
130 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
131
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
132 return true;
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
133 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
134
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
135 bool handleLeave(scope IViewport viewport, CrossingEvent event) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
136 trace("Leave %s", event);
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
137
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
138 if (_grabbedTool is null) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
139 foreach_reverse(ref tool; _staticTools) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
140 if (tool.handleLeave(viewport, event)) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
141 break;
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
142 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
143 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
144 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
145 else {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
146 _grabbedTool.handleLeave(viewport, event);
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
147 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
148
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
149 return true;
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
150 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
151
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
152 bool handleKeyPress(scope IViewport viewport, in KeyEvent event) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
153 // writefln("%s", event);
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
154
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
155 // FIXME not sure how these should work
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
156 foreach_reverse(ref tool; _staticTools) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
157 if (tool.handleKeyPress(viewport, event)) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
158 break;
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
159 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
160 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
161
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
162 return true;
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
163 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
164
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
165 bool handleKeyRelease(scope IViewport viewport, in KeyEvent event) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
166 // writefln("%s", event);
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
167
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
168 // FIXME not sure how these should work
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
169 foreach_reverse(ref tool; _staticTools) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
170 if (tool.handleKeyRelease(viewport, event)) {
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
171 break;
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
172 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
173 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
174
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
175 return true;
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
176 }
eb5436b47d13 Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
177
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
178 private {
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
179 Tool[] _staticTools;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
180 IToolStackObserver _observer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
181
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 60
diff changeset
182 Tool _grabbedTool;
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 36
diff changeset
183 ButtonName _grabbedButton;
2
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
184 }
d6f44347373d * Switched over to geometry done with structs instead of classes.
David Bryant <daveb@acres.com.au>
parents:
diff changeset
185 }