Как поместить несколько обработчиков на кнопку в Tornadofx (Kotlin)

Наткнулся на 2 события кнопки при использовании TornadoFx: onLeftClick { } и onRigthClick { }. Каждое событие в отдельности отрабатывает как и задумывалось. При одновременном использовании обоих событий - отрабатывает только последнее. Каким образом можно заставить работать оба обработчика?


Ответы (1 шт):

Автор решения: Eugene Krivenja

Известный баг в TornadoFx.
В случае определения и onLeftClick и onRigthClick они перекрываются и один переписывает другого.
Как вариант если нужны оба -- использовать setOnMouseClicked

val clickCount: Int = 1
setOnMouseClicked {
    if (it.clickCount == clickCount && it.button === MouseButton.PRIMARY) {
         // onLeftClick
    }
    if (it.clickCount == clickCount && it.button === MouseButton.SECONDARY) {
         // onRightClick
    }
}

Взято отсюда: https://github.com/edvin/tornadofx/issues/1287

→ Ссылка