Hello I want to use rxscala and scalafx together so I did this to re-package mouse events:
def mouseEvents: Observable[MouseEvent] = Observable.create(observer => {
stage.filterEvent(MouseEvent.Any)((event: MouseEvent) => {
observer.onNext(event)
event.consume
})
Subscription { ??? }
})
The problem is that inside the Subscription { ??? }
block I want to remove the event filter that was registered by filterEvent()
but looking at it I see that filterEvent()
doesn't keep a reference to the event filter so I can't use stage.removeEventFilter()
. I don't see a removeFilterEvent()
equivalent either, so how are event filters registered using filterEvent()
removed?
I guess a workaround is not to use filterEvent()
and instead use the javafx's addEventFilter()
but the syntax is worse.
Currently you can use
addEventFilter(eventType, eventHandler)
andremoveEventFilter(eventType, eventHandler)
.In the latest ScalaFX 1.0.0-M8-SNAPSHOT method
filterEvent
returns subscription as expected. (see ScalaFX Issue 115)