Title: [237016] trunk/Source/WebInspectorUI
Revision
237016
Author
[email protected]
Date
2018-10-10 13:52:12 -0700 (Wed, 10 Oct 2018)

Log Message

Web Inspector: REGRESSION: selection in network table is lost when new entries are added
https://bugs.webkit.org/show_bug.cgi?id=190362

Reviewed by Matt Baker.

The `_selectedRows` list is cleared each time `reloadData` is called, meaning that
`WI.Table` expects its "owner" to restore the selection (since it doesn't know how). As a
result, `WI.NetworkTableContentView` needs to call `selectRow` _after_ `reloadData` is
called, not before.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._updateSort): Added.
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._reloadTable): Added.
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
(WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
(WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries): Deleted.

* UserInterface/Views/Table.js:
(WI.Table.prototype.reloadData):
Ensure that the `_selectedRowIndex` is also reset.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (237015 => 237016)


--- trunk/Source/WebInspectorUI/ChangeLog	2018-10-10 20:29:01 UTC (rev 237015)
+++ trunk/Source/WebInspectorUI/ChangeLog	2018-10-10 20:52:12 UTC (rev 237016)
@@ -1,5 +1,35 @@
 2018-10-10  Devin Rousso  <[email protected]>
 
+        Web Inspector: REGRESSION: selection in network table is lost when new entries are added
+        https://bugs.webkit.org/show_bug.cgi?id=190362
+
+        Reviewed by Matt Baker.
+
+        The `_selectedRows` list is cleared each time `reloadData` is called, meaning that
+        `WI.Table` expects its "owner" to restore the selection (since it doesn't know how). As a
+        result, `WI.NetworkTableContentView` needs to call `selectRow` _after_ `reloadData` is
+        called, not before.
+
+        * UserInterface/Views/NetworkTableContentView.js:
+        (WI.NetworkTableContentView.prototype.tableSortChanged):
+        (WI.NetworkTableContentView.prototype._populateNameCell):
+        (WI.NetworkTableContentView.prototype._processPendingEntries):
+        (WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
+        (WI.NetworkTableContentView.prototype._updateSort): Added.
+        (WI.NetworkTableContentView.prototype._updateFilteredEntries):
+        (WI.NetworkTableContentView.prototype._reloadTable): Added.
+        (WI.NetworkTableContentView.prototype._resetFilters):
+        (WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
+        (WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange):
+        (WI.NetworkTableContentView.prototype._urlFilterDidChange):
+        (WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries): Deleted.
+
+        * UserInterface/Views/Table.js:
+        (WI.Table.prototype.reloadData):
+        Ensure that the `_selectedRowIndex` is also reset.
+
+2018-10-10  Devin Rousso  <[email protected]>
+
         Web Inspector: notify the frontend when a canvas has started recording via console.record
         https://bugs.webkit.org/show_bug.cgi?id=190306
 

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js (237015 => 237016)


--- trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js	2018-10-10 20:29:01 UTC (rev 237015)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js	2018-10-10 20:52:12 UTC (rev 237016)
@@ -332,10 +332,9 @@
         for (let nodeEntry of this._domNodeEntries.values())
             nodeEntry.initiatedResourceEntries.sort(this._entriesSortComparator);
 
-        this._entries.sort(this._entriesSortComparator);
-
+        this._updateSort();
         this._updateFilteredEntries();
-        this._table.reloadData();
+        this._reloadTable();
     }
 
     // Table delegate
@@ -492,7 +491,7 @@
                 entry.expanded = !entry.expanded;
 
                 this._updateFilteredEntries();
-                this._table.reloadData();
+                this._reloadTable();
             });
 
             createIconElement();
@@ -1057,8 +1056,9 @@
 
         this._pendingFilter = false;
 
-        this._updateSortAndFilteredEntries();
-        this._table.reloadData();
+        this._updateSort();
+        this._updateFilteredEntries();
+        this._reloadTable();
     }
 
     _populateWithInitialResourcesIfNeeded()
@@ -1394,7 +1394,7 @@
             if (this._filteredEntries.lastValue === resourceEntry)
                 this._table.reloadDataAddedToEndOnly();
             else
-                this._table.reloadData();
+                this._reloadTable();
         }
     }
 
@@ -1503,12 +1503,10 @@
             && this._passURLFilter(entry);
     }
 
-    _updateSortAndFilteredEntries()
+    _updateSort()
     {
         if (this._entriesSortComparator)
             this._entries = this._entries.sort(this._entriesSortComparator);
-
-        this._updateFilteredEntries();
     }
 
     _updateFilteredEntries()
@@ -1549,12 +1547,16 @@
             });
         }
 
-        this._restoreSelectedRow();
-
         this._updateURLFilterActiveIndicator();
         this._updateEmptyFilterResultsMessage();
     }
 
+    _reloadTable()
+    {
+        this._table.reloadData();
+        this._restoreSelectedRow();
+    }
+
     _generateTypeFilter()
     {
         let selectedItems = this._typeFilterScopeBar.selectedItems;
@@ -1583,7 +1585,7 @@
         console.assert(!this._hasActiveFilter());
 
         this._updateFilteredEntries();
-        this._table.reloadData();
+        this._reloadTable();
     }
 
     _areFilterListsIdentical(listA, listB)
@@ -1617,7 +1619,7 @@
 
         this._activeTypeFilters = newFilter;
         this._updateFilteredEntries();
-        this._table.reloadData();
+        this._reloadTable();
     }
 
     _handleGroupByDOMNodeCheckedDidChange(event)
@@ -1627,8 +1629,9 @@
         if (!WI.settings.groupByDOMNode.value)
             this._table.element.classList.remove("grouped");
 
-        this._updateSortAndFilteredEntries();
-        this._table.reloadData();
+        this._updateSort();
+        this._updateFilteredEntries();
+        this._reloadTable();
     }
 
     _urlFilterDidChange(event)
@@ -1648,7 +1651,7 @@
             this._activeURLFilterResources.clear();
 
             this._updateFilteredEntries();
-            this._table.reloadData();
+            this._reloadTable();
             return;
         }
 
@@ -1662,7 +1665,7 @@
             this._checkURLFilterAgainstResource(entry.resource);
 
         this._updateFilteredEntries();
-        this._table.reloadData();
+        this._reloadTable();
     }
 
     _restoreSelectedRow()

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/Table.js (237015 => 237016)


--- trunk/Source/WebInspectorUI/UserInterface/Views/Table.js	2018-10-10 20:29:01 UTC (rev 237015)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/Table.js	2018-10-10 20:52:12 UTC (rev 237016)
@@ -237,6 +237,8 @@
     reloadData()
     {
         this._cachedRows.clear();
+
+        this._selectedRowIndex = NaN;
         this._selectedRows.clear();
 
         this._previousRevealedRowCount = NaN;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to