]> source.dussan.org Git - vaadin-framework.git/commitdiff
Change VMenuBar to use KeyDownHandler with Firefox 65+ (#11508)
authorTatu Lund <tatu@vaadin.com>
Thu, 28 Mar 2019 09:50:32 +0000 (11:50 +0200)
committerOlli Tietäväinen <ollit@vaadin.com>
Thu, 28 Mar 2019 09:50:32 +0000 (11:50 +0200)
#11502

client/src/main/java/com/vaadin/client/ui/VScrollTable.java

index e1cb595928c5510279e6080964bf69b352cc933b..3659bf6bb70d44015a7a82dbfa6598625ab39dd6 100644 (file)
@@ -557,10 +557,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;
             }
 
@@ -624,8 +624,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 prior to v65
+            if (useOldGeckoNavigation()) {
                 return;
             }
 
@@ -829,11 +829,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);
@@ -856,6 +856,10 @@ public class VScrollTable extends FlowPanel
         updateStyleNames(style, false);
     }
 
+    private boolean useOldGeckoNavigation() {
+        return BrowserInfo.get().isGecko() && BrowserInfo.get().getGeckoVersion() < 65;
+    }
+
     @Override
     public void setStylePrimaryName(String style) {
         updateStyleNames(style, true);