Title: [259094] trunk/Source/WebInspectorUI
Revision
259094
Author
nvasil...@apple.com
Date
2020-03-26 17:11:31 -0700 (Thu, 26 Mar 2020)

Log Message

Web Inspector: RTL: ArrowLeft and ArrowRight keys select wrong navigation bar items
https://bugs.webkit.org/show_bug.cgi?id=209617

Reviewed by Devin Rousso.

* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype._keyDown):
Reverse direction for RTL mode.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (259093 => 259094)


--- trunk/Source/WebInspectorUI/ChangeLog	2020-03-26 23:54:19 UTC (rev 259093)
+++ trunk/Source/WebInspectorUI/ChangeLog	2020-03-27 00:11:31 UTC (rev 259094)
@@ -1,3 +1,14 @@
+2020-03-26  Nikita Vasilyev  <nvasil...@apple.com>
+
+        Web Inspector: RTL: ArrowLeft and ArrowRight keys select wrong navigation bar items
+        https://bugs.webkit.org/show_bug.cgi?id=209617
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Views/NavigationBar.js:
+        (WI.NavigationBar.prototype._keyDown):
+        Reverse direction for RTL mode.
+
 2020-03-23  Devin Rousso  <drou...@apple.com>
 
         Web Inspector: REGRESSION(r257791): event breakpoint icon should be [E]

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NavigationBar.js (259093 => 259094)


--- trunk/Source/WebInspectorUI/UserInterface/Views/NavigationBar.js	2020-03-26 23:54:19 UTC (rev 259093)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NavigationBar.js	2020-03-27 00:11:31 UTC (rev 259094)
@@ -368,32 +368,35 @@
 
     _keyDown(event)
     {
-        if (event.keyIdentifier !== "Left" && event.keyIdentifier !== "Right")
+        let isLeftArrow = event.code === "ArrowLeft";
+        if (!isLeftArrow && event.code !== "ArrowRight")
             return;
 
         event.preventDefault();
         event.stopPropagation();
 
-        var selectedNavigationItemIndex = this._navigationItems.indexOf(this._selectedNavigationItem);
+        let delta = isLeftArrow ? -1 : 1;
+        if (WI.resolveLayoutDirectionForElement(this._element) === WI.LayoutDirection.RTL)
+            delta *= -1;
 
-        if (event.keyIdentifier === "Left") {
-            if (selectedNavigationItemIndex === -1)
-                selectedNavigationItemIndex = this._navigationItems.length;
+        let selectedIndex = this._navigationItems.indexOf(this._selectedNavigationItem);
 
-            do {
-                selectedNavigationItemIndex = Math.max(0, selectedNavigationItemIndex - 1);
-            } while (selectedNavigationItemIndex && !(this._navigationItems[selectedNavigationItemIndex] instanceof WI.RadioButtonNavigationItem));
-        } else if (event.keyIdentifier === "Right") {
-            do {
-                selectedNavigationItemIndex = Math.min(selectedNavigationItemIndex + 1, this._navigationItems.length - 1);
-            } while (selectedNavigationItemIndex < this._navigationItems.length - 1 && !(this._navigationItems[selectedNavigationItemIndex] instanceof WI.RadioButtonNavigationItem));
-        }
+        if (selectedIndex === -1)
+            selectedIndex = (this._navigationItems.length + delta) % this._navigationItems.length;
 
-        if (!(this._navigationItems[selectedNavigationItemIndex] instanceof WI.RadioButtonNavigationItem))
-            return;
+        while (true) {
+            selectedIndex += delta;
 
-        this.selectedNavigationItem = this._navigationItems[selectedNavigationItemIndex];
-        this.selectedNavigationItem?.element.focus();
+            if (selectedIndex < 0 || selectedIndex >= this._navigationItems.length)
+                break;
+
+            let selectedItemCandidate = this._navigationItems[selectedIndex];
+            if (selectedItemCandidate instanceof WI.RadioButtonNavigationItem) {
+                this.selectedNavigationItem = selectedItemCandidate;
+                this.selectedNavigationItem.element.focus();
+                break;
+            }
+        }
     }
 
     _calculateMinimumWidth()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to