@@ -133,11 +133,11 @@ public class VMenuBar extends FocusableFlowPanel implements | |||
addFocusHandler(this); | |||
/* | |||
* Firefox auto-repeat works correctly only if we use a key press | |||
* Firefox prior to v65 auto-repeat works correctly only if we use a key press | |||
* handler, other browsers handle it correctly when using a key down | |||
* handler | |||
*/ | |||
if (BrowserInfo.get().isGecko()) { | |||
if (BrowserInfo.get().isGecko() && BrowserInfo.get().getGeckoVersion() < 65) { | |||
addKeyPressHandler(this); | |||
} else { | |||
addKeyDownHandler(this); |
@@ -272,10 +272,7 @@ public class VSlider extends SimpleFocusablePanel | |||
increaseValue(true); | |||
} else if (DOM.eventGetType(event) == Event.MOUSEEVENTS) { | |||
processBaseEvent(event); | |||
} else if (BrowserInfo.get().isGecko() | |||
&& DOM.eventGetType(event) == Event.ONKEYPRESS | |||
|| !BrowserInfo.get().isGecko() | |||
&& DOM.eventGetType(event) == Event.ONKEYDOWN) { | |||
} else if (isNavigationEvent(event)) { | |||
if (handleNavigation(event.getKeyCode(), event.getCtrlKey(), | |||
event.getShiftKey())) { | |||
@@ -302,6 +299,14 @@ public class VSlider extends SimpleFocusablePanel | |||
} | |||
} | |||
private boolean isNavigationEvent(Event event) { | |||
if (BrowserInfo.get().isGecko() && BrowserInfo.get().getGeckoVersion() < 65) { | |||
return DOM.eventGetType(event) == Event.ONKEYPRESS; | |||
} else { | |||
return DOM.eventGetType(event) == Event.ONKEYDOWN; | |||
} | |||
} | |||
private void processMouseWheelEvent(final Event event) { | |||
final int dir = DOM.eventGetMouseWheelVelocityY(event); | |||
@@ -212,11 +212,11 @@ public class VCalendarPanel extends FocusableFlexTable implements | |||
Roles.getGridRole().set(getElement()); | |||
/* | |||
* Firefox auto-repeat works correctly only if we use a key press | |||
* Firefox prior to v65 auto-repeat works correctly only if we use a key press | |||
* handler, other browsers handle it correctly when using a key down | |||
* handler | |||
*/ | |||
if (BrowserInfo.get().isGecko()) { | |||
if (BrowserInfo.get().isGecko() && BrowserInfo.get().getGeckoVersion() < 65) { | |||
addKeyPressHandler(this); | |||
} else { | |||
addKeyDownHandler(this); |
@@ -568,10 +568,10 @@ public class VScrollTable extends FlowPanel | |||
@Override | |||
public void onKeyPress(KeyPressEvent keyPressEvent) { | |||
// This is used for Firefox only, since Firefox auto-repeat | |||
// This is used for Firefox (prior to v65) only, since Firefox auto-repeat | |||
// works correctly only if we use a key press handler, other | |||
// browsers handle it correctly when using a key down handler | |||
if (!BrowserInfo.get().isGecko()) { | |||
if (!useOldGeckoNavigation()) { | |||
return; | |||
} | |||
@@ -635,8 +635,8 @@ public class VScrollTable extends FlowPanel | |||
@Override | |||
public void onKeyDown(KeyDownEvent keyDownEvent) { | |||
NativeEvent event = keyDownEvent.getNativeEvent(); | |||
// This is not used for Firefox | |||
if (BrowserInfo.get().isGecko()) { | |||
// This is not used for Firefox after v65 | |||
if (useOldGeckoNavigation()) { | |||
return; | |||
} | |||
@@ -840,11 +840,11 @@ public class VScrollTable extends FlowPanel | |||
scrollBodyPanel.addScrollHandler(this); | |||
/* | |||
* Firefox auto-repeat works correctly only if we use a key press | |||
* Firefox prior to v65 auto-repeat works correctly only if we use a key press | |||
* handler, other browsers handle it correctly when using a key down | |||
* handler | |||
*/ | |||
if (BrowserInfo.get().isGecko()) { | |||
if (useOldGeckoNavigation()) { | |||
scrollBodyPanel.addKeyPressHandler(navKeyPressHandler); | |||
} else { | |||
scrollBodyPanel.addKeyDownHandler(navKeyDownHandler); | |||
@@ -862,6 +862,16 @@ public class VScrollTable extends FlowPanel | |||
rowRequestHandler = new RowRequestHandler(); | |||
} | |||
/* | |||
* Firefox prior to v65 auto-repeat works correctly only if we use a key press | |||
* handler, other browsers handle it correctly when using a key down | |||
* handler. | |||
*/ | |||
private boolean useOldGeckoNavigation() { | |||
return BrowserInfo.get().isGecko() | |||
&& BrowserInfo.get().getGeckoVersion() < 65; | |||
} | |||
@Override | |||
public void setStyleName(String style) { | |||
updateStyleNames(style, false); |
@@ -287,10 +287,7 @@ public class VSlider extends SimpleFocusablePanel | |||
increaseValue(true); | |||
} else if (DOM.eventGetType(event) == Event.MOUSEEVENTS) { | |||
processBaseEvent(event); | |||
} else if (BrowserInfo.get().isGecko() | |||
&& DOM.eventGetType(event) == Event.ONKEYPRESS | |||
|| !BrowserInfo.get().isGecko() | |||
&& DOM.eventGetType(event) == Event.ONKEYDOWN) { | |||
} else if (isNavigationEvent(event)) { | |||
if (handleNavigation(event.getKeyCode(), event.getCtrlKey(), | |||
event.getShiftKey())) { | |||
@@ -317,6 +314,14 @@ public class VSlider extends SimpleFocusablePanel | |||
} | |||
} | |||
private boolean isNavigationEvent(Event event) { | |||
if (BrowserInfo.get().isGecko() && BrowserInfo.get().getGeckoVersion() < 65) { | |||
return DOM.eventGetType(event) == Event.ONKEYPRESS; | |||
} else { | |||
return DOM.eventGetType(event) == Event.ONKEYDOWN; | |||
} | |||
} | |||
private void processMouseWheelEvent(final Event event) { | |||
final int dir = DOM.eventGetMouseWheelVelocityY(event); | |||
@@ -216,11 +216,11 @@ public class VTree extends FocusElementPanel | |||
}, ContextMenuEvent.getType()); | |||
/* | |||
* Firefox auto-repeat works correctly only if we use a key press | |||
* Firefox prior to v65 auto-repeat works correctly only if we use a key press | |||
* handler, other browsers handle it correctly when using a key down | |||
* handler | |||
*/ | |||
if (BrowserInfo.get().isGecko()) { | |||
if (BrowserInfo.get().isGecko() && BrowserInfo.get().getGeckoVersion() < 65) { | |||
addKeyPressHandler(this); | |||
} else { | |||
addKeyDownHandler(this); |