ズーム後にonResizeは呼び出されません。
現在のGWTの実装:
public native void initWindowResizeHandler() /*-{
var oldOnResize = $wnd.onresize;
$wnd.onresize = $entry(function(evt) {
try {
@com.google.gwt.user.client.Window::onResize()();
} finally {
oldOnResize && oldOnResize(evt);
}
});
}-*/;
サイズ変更イベントをキャプチャするために私が見つけた唯一の解決策は、ポーリングを使用します。
ポーリングは最良の(唯一の)方法ですか?もしそうなら、スケジューラーをどのように使用して最適なパフォーマンスを得ることができますか?
イベントがキャプチャされたら、com.google.gwt.user.client.Window :: onResize()を呼び出すのは良い考えのように思われますか?
ありがとう
改善を求めている現在のソリューション
@Override
protected void onLoad() {
Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
@Override
public boolean execute() {
if (listOuter.getOffsetWidth() != knownWidth)
onResize();
return SomeListViewImpl.this.isAttached();
}
}, 200);
}
onResizeは、Window.onresizeおよびズーム時に呼び出されます。
@Override
public void onResize() {
knownWidth = listOuter.getOffsetWidth();
GWT.log("resize: " + knownWidth);
//some magic
}