Skip to content

Commit c4dca09

Browse files
committed
More Desktop coverage
1 parent aecee40 commit c4dca09

5 files changed

Lines changed: 941 additions & 23 deletions

File tree

modules/yup_gui/desktop/yup_Desktop.cpp

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ void Desktop::addGlobalMouseListener (MouseListener* listener)
134134
if (sendingMouseEvent)
135135
pendingMouseListeners.addIfNotAlreadyThere (listener);
136136
else
137-
globalMouseListeners.addIfNotAlreadyThere (listener);
137+
globalMouseListeners.add (listener);
138138
}
139139

140140
void Desktop::removeGlobalMouseListener (MouseListener* listener)
@@ -145,67 +145,65 @@ void Desktop::removeGlobalMouseListener (MouseListener* listener)
145145
YUP_ASSERT_MESSAGE_MANAGER_IS_LOCKED
146146

147147
pendingMouseListeners.removeFirstMatchingValue (listener);
148-
globalMouseListeners.removeFirstMatchingValue (listener);
148+
globalMouseListeners.remove (listener);
149149
}
150150

151151
void Desktop::handleGlobalMouseDown (const MouseEvent& event)
152152
{
153153
{
154154
ScopedValueSetter setter (sendingMouseEvent, true);
155-
for (auto listener : globalMouseListeners)
156-
listener->mouseDown (event);
155+
globalMouseListeners.call (&MouseListener::mouseDown, event);
157156
}
158157

159-
for (auto listener : globalMouseListeners)
160-
globalMouseListeners.addIfNotAlreadyThere (listener);
158+
addPendingMouseListeners();
161159
}
162160

163161
void Desktop::handleGlobalMouseUp (const MouseEvent& event)
164162
{
165163
{
166164
ScopedValueSetter setter (sendingMouseEvent, true);
167-
for (auto listener : globalMouseListeners)
168-
listener->mouseUp (event);
165+
globalMouseListeners.call (&MouseListener::mouseUp, event);
169166
}
170167

171-
for (auto listener : globalMouseListeners)
172-
globalMouseListeners.addIfNotAlreadyThere (listener);
168+
addPendingMouseListeners();
173169
}
174170

175171
void Desktop::handleGlobalMouseMove (const MouseEvent& event)
176172
{
177173
{
178174
ScopedValueSetter setter (sendingMouseEvent, true);
179-
for (auto listener : globalMouseListeners)
180-
listener->mouseMove (event);
175+
globalMouseListeners.call (&MouseListener::mouseMove, event);
181176
}
182177

183-
for (auto listener : globalMouseListeners)
184-
globalMouseListeners.addIfNotAlreadyThere (listener);
178+
addPendingMouseListeners();
185179
}
186180

187181
void Desktop::handleGlobalMouseDrag (const MouseEvent& event)
188182
{
189183
{
190184
ScopedValueSetter setter (sendingMouseEvent, true);
191-
for (auto listener : globalMouseListeners)
192-
listener->mouseDrag (event);
185+
globalMouseListeners.call (&MouseListener::mouseDrag, event);
193186
}
194187

195-
for (auto listener : globalMouseListeners)
196-
globalMouseListeners.addIfNotAlreadyThere (listener);
188+
addPendingMouseListeners();
197189
}
198190

199191
void Desktop::handleGlobalMouseWheel (const MouseEvent& event, const MouseWheelData& wheelData)
200192
{
201193
{
202194
ScopedValueSetter setter (sendingMouseEvent, true);
203-
for (auto listener : globalMouseListeners)
204-
listener->mouseWheel (event, wheelData);
195+
globalMouseListeners.call (&MouseListener::mouseWheel, event, wheelData);
205196
}
206197

207-
for (auto listener : globalMouseListeners)
208-
globalMouseListeners.addIfNotAlreadyThere (listener);
198+
addPendingMouseListeners();
199+
}
200+
201+
void Desktop::addPendingMouseListeners()
202+
{
203+
for (auto listener : pendingMouseListeners)
204+
globalMouseListeners.add (listener);
205+
206+
pendingMouseListeners.clear();
209207
}
210208

211209
//==============================================================================

modules/yup_gui/desktop/yup_Desktop.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,12 +180,14 @@ class YUP_API Desktop
180180
void registerNativeComponent (ComponentNative* nativeComponent);
181181
void unregisterNativeComponent (ComponentNative* nativeComponent);
182182

183+
void addPendingMouseListeners();
184+
183185
Screen::Array screens;
184186
std::optional<MouseCursor> currentMouseCursor;
185187

186188
std::unordered_map<void*, ComponentNative*> nativeComponents;
187189

188-
Array<MouseListener*> globalMouseListeners;
190+
ListenerList<MouseListener> globalMouseListeners;
189191
Array<MouseListener*> pendingMouseListeners;
190192
bool sendingMouseEvent = false;
191193

tests/yup_gui.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
#include "yup_gui/yup_ComboBox.cpp"
2323
#include "yup_gui/yup_Component.cpp"
24+
#include "yup_gui/yup_Desktop.cpp"
2425
#include "yup_gui/yup_FileChooser.cpp"
2526
#include "yup_gui/yup_Label.cpp"
2627
#include "yup_gui/yup_ListBox.cpp"

0 commit comments

Comments
 (0)