@@ -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
140140void 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
151151void 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
163161void 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
175171void 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
187181void 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
199191void 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// ==============================================================================
0 commit comments