File tree Expand file tree Collapse file tree
main/kotlin/com/almasb/fxgl/event
test/kotlin/com/almasb/fxgl/event Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -24,6 +24,8 @@ class EventBus {
2424
2525 private val eventHandlers = Group ()
2626
27+ private val subscribers = arrayListOf<Subscriber >()
28+
2729 var isLoggingEnabled = true
2830
2931 /* *
@@ -33,7 +35,7 @@ class EventBus {
3335 eventHandlers.addEventHandler(eventType, eventHandler)
3436
3537 @Suppress(" UNCHECKED_CAST" )
36- return Subscriber (this , eventType, eventHandler as EventHandler <in Event >)
38+ return Subscriber (this , eventType, eventHandler as EventHandler <in Event >). also { subscribers.add(it) }
3739 }
3840
3941 /* *
@@ -43,6 +45,13 @@ class EventBus {
4345 eventHandlers.removeEventHandler(eventType, eventHandler)
4446 }
4547
48+ fun removeAllEventHandlers () {
49+ // some of these may have already been unsubscribed, either via [removeEventHandler] or [unsubscribe],
50+ // but given the following is a no-op when not subscribed, there is no need to update the list
51+ subscribers.forEach { it.unsubscribe() }
52+ subscribers.clear()
53+ }
54+
4655 /* *
4756 * Fire given [event].
4857 * All listening parties will be notified.
Original file line number Diff line number Diff line change @@ -65,6 +65,17 @@ class EventBusTest {
6565
6666 eventBus.fireEvent(Event (EventType .ROOT ))
6767
68+ assertThat(count, `is `(2 ))
69+ },
70+
71+ Executable {
72+ // add again and remove, but this time using removeAll
73+ eventBus.addEventHandler(EventType .ROOT , handler)
74+
75+ eventBus.removeAllEventHandlers()
76+
77+ eventBus.fireEvent(Event (EventType .ROOT ))
78+
6879 assertThat(count, `is `(2 ))
6980 }
7081 )
You can’t perform that action at this time.
0 commit comments