Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1186)

Unified Diff: Source/devtools/front_end/elements/ElementStatePaneWidget.js

Issue 1164123002: Devtools: Synchronization state in ElementStatePaneWidget with contextMenu (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/devtools/front_end/elements/SharedSidebarModel.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/elements/ElementStatePaneWidget.js
diff --git a/Source/devtools/front_end/elements/ElementStatePaneWidget.js b/Source/devtools/front_end/elements/ElementStatePaneWidget.js
index 04dd551d3a51431ca61b772752eb1817f3441dc5..ba2c98a30902a854644a083c2ef3733220654843 100644
--- a/Source/devtools/front_end/elements/ElementStatePaneWidget.js
+++ b/Source/devtools/front_end/elements/ElementStatePaneWidget.js
@@ -56,21 +56,59 @@ WebInspector.ElementStatePaneWidget = function(toolbarItem)
WebInspector.ElementStatePaneWidget.prototype = {
/**
+ * @param {?WebInspector.Target} target
+ */
+ _updateTarget: function(target)
+ {
+ if (this._target === target)
+ return;
+
+ if (this._target) {
+ var cssModel = WebInspector.CSSStyleModel.fromTarget(this._target);
+ cssModel.removeEventListener(WebInspector.CSSStyleModel.Events.PseudoStateForced, this._pseudoStateForced, this)
+ }
+ this._target = target;
+ if (target) {
+ var cssModel = WebInspector.CSSStyleModel.fromTarget(target);
+ cssModel.addEventListener(WebInspector.CSSStyleModel.Events.PseudoStateForced, this._pseudoStateForced, this)
+ }
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _pseudoStateForced: function(event)
+ {
+ var node = /** @type{!WebInspector.DOMNode} */(event.data.node);
+ if (node === WebInspector.context.flavor(WebInspector.DOMNode))
+ this._updateInputs(node);
+ },
+
+ /**
* @override
* @param {?WebInspector.DOMNode} newNode
*/
onNodeChanged: function(newNode)
{
+ this._updateTarget(newNode? newNode.target() : null);
this.toolbarItem().setEnabled(!!newNode);
- if (!newNode && this.isShowing()) {
- this.detach();
+ if (!newNode) {
+ if (this.isShowing())
+ this.detach();
return;
}
+ this._updateInputs(newNode);
+ },
- var nodePseudoState = newNode.getUserProperty(WebInspector.CSSStyleModel.PseudoStatePropertyName) || [];
+ /**
+ * @param {!WebInspector.DOMNode} node
+ */
+ _updateInputs: function(node)
+ {
+ var nodePseudoState = node.getUserProperty(WebInspector.CSSStyleModel.PseudoStatePropertyName) || [];
var inputs = this._inputs;
for (var i = 0; i < inputs.length; ++i) {
- inputs[i].disabled = !!newNode.pseudoType();
+ inputs[i].disabled = !!node.pseudoType();
inputs[i].checked = nodePseudoState.indexOf(inputs[i].state) >= 0;
}
},
« no previous file with comments | « no previous file | Source/devtools/front_end/elements/SharedSidebarModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698