Modified: trunk/Source/WebCore/ChangeLog (138479 => 138480)
--- trunk/Source/WebCore/ChangeLog 2012-12-26 18:01:40 UTC (rev 138479)
+++ trunk/Source/WebCore/ChangeLog 2012-12-26 19:48:02 UTC (rev 138480)
@@ -1,3 +1,16 @@
+2012-12-26 Eugene Klyuchnikov <[email protected]>
+
+ Web Inspector: [Resources] Table lose focus (selection) after deleting cookie.
+ https://bugs.webkit.org/show_bug.cgi?id=105716
+
+ Reviewed by Yury Semikhatsky.
+
+ This makes deletion of a set of cookies (using keyboard) painful.
+
+ * inspector/front-end/CookieItemsView.js: Call method instead of getter.
+ * inspector/front-end/CookiesTable.js: Remember and use next selected
+ cookie value.
+
2012-12-26 Yury Semikhatsky <[email protected]>
Web Inspector: extract JS heap profiler specifics into JSHeapSnapshot.js
Modified: trunk/Source/WebCore/inspector/front-end/CookieItemsView.js (138479 => 138480)
--- trunk/Source/WebCore/inspector/front-end/CookieItemsView.js 2012-12-26 18:01:40 UTC (rev 138479)
+++ trunk/Source/WebCore/inspector/front-end/CookieItemsView.js 2012-12-26 19:48:02 UTC (rev 138480)
@@ -149,8 +149,9 @@
_deleteButtonClicked: function()
{
- if (this._cookiesTable.selectedCookie)
- this._deleteCookie(this._cookiesTable.selectedCookie);
+ var selectedCookie = this._cookiesTable.selectedCookie();
+ if (selectedCookie)
+ this._deleteCookie(selectedCookie);
},
_refreshButtonClicked: function(event)
Modified: trunk/Source/WebCore/inspector/front-end/CookiesTable.js (138479 => 138480)
--- trunk/Source/WebCore/inspector/front-end/CookiesTable.js 2012-12-26 18:01:40 UTC (rev 138479)
+++ trunk/Source/WebCore/inspector/front-end/CookiesTable.js 2012-12-26 19:48:02 UTC (rev 138480)
@@ -75,6 +75,8 @@
this._dataGrid.addEventListener("sorting changed", this._rebuildTable, this);
this._dataGrid.refreshCallback = refreshCallback;
+ this._nextSelectedCookie = /** @type {?WebInspector.Cookie} */ (null);
+
this._dataGrid.show(this.element);
this._data = [];
}
@@ -102,7 +104,10 @@
this._rebuildTable();
},
- get selectedCookie()
+ /**
+ * @return {?WebInspector.Cookie}
+ */
+ selectedCookie: function()
{
var node = this._dataGrid.selectedNode;
return node ? node.cookie : null;
@@ -110,6 +115,8 @@
_rebuildTable: function()
{
+ var selectedCookie = this._nextSelectedCookie || this.selectedCookie();
+ this._nextSelectedCookie = null;
this._dataGrid.rootNode().removeChildren();
for (var i = 0; i < this._data.length; ++i) {
var item = this._data[i];
@@ -119,30 +126,31 @@
groupNode.selectable = true;
this._dataGrid.rootNode().appendChild(groupNode);
groupNode.element.addStyleClass("row-group");
- this._populateNode(groupNode, item.cookies);
+ this._populateNode(groupNode, item.cookies, selectedCookie);
groupNode.expand();
} else
- this._populateNode(this._dataGrid.rootNode(), item.cookies);
+ this._populateNode(this._dataGrid.rootNode(), item.cookies, selectedCookie);
}
},
/**
* @param {!WebInspector.DataGridNode} parentNode
* @param {?Array.<!WebInspector.Cookie>} cookies
+ * @param {?WebInspector.Cookie} selectedCookie
*/
- _populateNode: function(parentNode, cookies)
+ _populateNode: function(parentNode, cookies, selectedCookie)
{
- var selectedCookie = this.selectedCookie;
parentNode.removeChildren();
if (!cookies)
return;
this._sortCookies(cookies);
for (var i = 0; i < cookies.length; ++i) {
- var cookieNode = this._createGridNode(cookies[i]);
+ var cookie = cookies[i];
+ var cookieNode = this._createGridNode(cookie);
parentNode.appendChild(cookieNode);
- if (selectedCookie === cookies[i])
- cookieNode.selected = true;
+ if (selectedCookie && selectedCookie.name() === cookie.name() && selectedCookie.domain() === cookie.domain() && selectedCookie.path() === cookie.path())
+ cookieNode.select();
}
},
@@ -234,7 +242,11 @@
_onDeleteFromGrid: function(deleteCallback, node)
{
- deleteCallback(node.cookie);
+ var cookie = node.cookie;
+ var neighbour = node.traverseNextNode() || node.traversePreviousNode();
+ if (neighbour)
+ this._nextSelectedCookie = neighbour.cookie;
+ deleteCallback(cookie);
},
__proto__: WebInspector.View.prototype