Я придумал работать, но уродливо, не элегантно и, я бы сказал, партизанское решение, которое мне не очень нравится, но на самом деле у меня нет (или просто не могу найти) другого выхода.
Включает изменение EventDispatcher в WebView.
Итак, моя реализация EventDispatcher нуждается в ссылке на оригинальный WebView EventDispatcher и выглядит так:
public class MyEventDispatcher implements EventDispatcher {
private EventDispatcher originalDispatcher;
public MyEventDispatcher(EventDispatcher originalDispatcher) {
this.originalDispatcher = originalDispatcher;
}
@Override
public Event dispatchEvent(Event event, EventDispatchChain tail) {
if (event instanceof MouseEvent) {
MouseEvent mouseEvent = (MouseEvent) event;
if (MouseButton.SECONDARY == mouseEvent.getButton()) {
mouseEvent.consume();
}
}
return originalDispatcher.dispatchEvent(event, tail);
}
}
Каждый раз, когда отправляется событие, оно проходит через нашего диспетчера, и я проверяю, щелкнул ли он правой кнопкой мыши. Если это так, я просто потребляю его и продолжаю.
Чтобы это работало, вы должны использовать WebView так:
WebView webView = new WebView();
EventDispatcher originalDispatcher = webView.getEventDispatcher();
webView.setEventDispatcher(new MyEventDispatcher(originalDispatcher));
Каждый комментарий, подсказка и т. Д. Приветствуются.