クリックしていくつかのダイアログを開く単純な GWT PushButton があります。CSS スタイルは、onHovering がボタンの外観を変更するように記述されています。
このボタンをクリックしてダイアログを開き、それを閉じると、問題が発生します。onHovering スタイルはそのままです。
これは、PushButton の親である CustomButtom に、MouseOut イベントが発生した場合にのみホバリングを削除するコードがあるために発生します。問題は、暗い半透明の画面でダイアログを開くと、決して発生しないことです。対応するイベントは発行されず、ボタンは onHovered 状態のままです。
このイベントを手動で発生させることで、これを修正しようとしています。幸いなことに、ユーザーがそのダイアログを閉じると、onBlur イベントをキャッチして、その瞬間に何かをしようとすることができます。OnMouseOut イベントを手動で作成しようとしています。
@Override
public void onBrowserEvent(Event event) {
int type = DOM.eventGetType(event);
if (type == Event.ONBLUR)
{
NativeEvent evt2 = Document.get().createMouseOutEvent(1, 0, 0, 0, 0, false, false, false, false, NativeEvent.BUTTON_LEFT, MyPushButton.this.getElement());
MyPushButton.this.getElement().dispatchEvent(evt2);
}
logger.info(event.getType());
super.onBrowserEvent(event);
}
...しかし、何らかの理由で、このコードはイベントを送信しません。新しい MouseOut イベントはコンソールに記録されず、onHovering スタイルは変更されません。例外はスローされません。
イベントを起動できないのはなぜですか? この問題を解決する他の方法はありますか?
GWT 2.5.1