Index: third_party/WebKit/Source/devtools/front_end/ui/Widget.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/Widget.js b/third_party/WebKit/Source/devtools/front_end/ui/Widget.js |
index 5f7f7aa8d339bf4316a63035c01bcd7459355cc5..5558f589144f8b9e4e97f525bef41f9e0d87a232 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/ui/Widget.js |
+++ b/third_party/WebKit/Source/devtools/front_end/ui/Widget.js |
@@ -41,7 +41,7 @@ WebInspector.Widget = function(isWebComponent) |
} |
this._isWebComponent = isWebComponent; |
this.element.__widget = this; |
- this._visible = false; |
+ this._visible = true; |
this._isRoot = false; |
this._isShowing = false; |
this._children = []; |
@@ -119,7 +119,7 @@ WebInspector.Widget.prototype = { |
{ |
if (this._isRoot) |
return true; |
- return !!this._parentWidget && this._parentWidget.isShowing(); |
+ return this._parentWidget && this._parentWidget.isShowing(); |
}, |
/** |
@@ -210,48 +210,27 @@ WebInspector.Widget.prototype = { |
*/ |
show: function(parentElement, insertBefore) |
{ |
- this.attach(parentElement, insertBefore); |
- this.showWidget(); |
- }, |
- |
- /** |
- * @param {?Element} parentElement |
- * @param {?Element=} insertBefore |
- */ |
- attach: function(parentElement, insertBefore) |
- { |
WebInspector.Widget.__assert(parentElement, "Attempt to attach widget with no parent element"); |
// Update widget hierarchy. |
- var currentParent = parentElement; |
- while (currentParent && !currentParent.__widget) |
- currentParent = currentParent.parentElementOrShadowHost(); |
- var newParentWidget = currentParent ? currentParent.__widget : null; |
- |
- if (this._parentWidget && newParentWidget !== this._parentWidget) { |
- // Reparent. |
- this.detach(); |
- } |
+ if (this.element.parentElement !== parentElement) { |
+ if (this.element.parentElement) |
+ this.detach(); |
- if (newParentWidget) { |
- if (this._parentWidget !== newParentWidget) { |
- this._parentWidget = newParentWidget; |
+ var currentParent = parentElement; |
+ while (currentParent && !currentParent.__widget) |
+ currentParent = currentParent.parentElementOrShadowHost(); |
+ |
+ if (currentParent) { |
+ this._parentWidget = currentParent.__widget; |
this._parentWidget._children.push(this); |
- } |
- this._isRoot = false; |
- } else { |
- WebInspector.Widget.__assert(this._isRoot, "Attempt to attach widget to orphan node"); |
+ this._isRoot = false; |
+ } else |
+ WebInspector.Widget.__assert(this._isRoot, "Attempt to attach widget to orphan node"); |
+ } else if (this._visible) { |
+ return; |
} |
- this._parentElement = parentElement; |
- this._insertBeforeElement = insertBefore; |
- }, |
- |
- showWidget: function() |
- { |
- WebInspector.Widget.__assert(this._parentElement, "Attempt to show detached widget"); |
- if (this._visible) |
- return; |
this._visible = true; |
if (this._parentIsShowing()) |
@@ -260,12 +239,12 @@ WebInspector.Widget.prototype = { |
this.element.classList.remove("hidden"); |
// Reparent |
- if (this.element.parentElement !== this._parentElement) { |
- WebInspector.Widget._incrementWidgetCounter(this._parentElement, this.element); |
- if (this._insertBeforeElement) |
- WebInspector.Widget._originalInsertBefore.call(this._parentElement, this.element, this._insertBeforeElement); |
+ if (this.element.parentElement !== parentElement) { |
+ WebInspector.Widget._incrementWidgetCounter(parentElement, this.element); |
+ if (insertBefore) |
+ WebInspector.Widget._originalInsertBefore.call(parentElement, this.element, insertBefore); |
else |
- WebInspector.Widget._originalAppendChild.call(this._parentElement, this.element); |
+ WebInspector.Widget._originalAppendChild.call(parentElement, this.element); |
} |
if (this._parentIsShowing()) |
@@ -277,51 +256,35 @@ WebInspector.Widget.prototype = { |
this._processOnResize(); |
}, |
- hideWidget: function() |
- { |
- this._hideWidget(); |
- }, |
- |
/** |
* @param {boolean=} overrideHideOnDetach |
- * @return {boolean} |
*/ |
- _hideWidget: function(overrideHideOnDetach) |
+ detach: function(overrideHideOnDetach) |
{ |
- WebInspector.Widget.__assert(this._parentElement, "Attempt to hide detached widget"); |
- if (!this._visible) |
- return false; |
- this._visible = false; |
- var parentElement = this._parentElement; |
+ var parentElement = this.element.parentElement; |
+ if (!parentElement) |
+ return; |
if (this._parentIsShowing()) |
this._processWillHide(); |
if (!overrideHideOnDetach && this.shouldHideOnDetach()) { |
this.element.classList.add("hidden"); |
+ this._visible = false; |
if (this._parentIsShowing()) |
this._processWasHidden(); |
if (this._parentWidget && this._hasNonZeroConstraints()) |
this._parentWidget.invalidateConstraints(); |
- return true; |
+ return; |
} |
// Force legal removal |
WebInspector.Widget._decrementWidgetCounter(parentElement, this.element); |
WebInspector.Widget._originalRemoveChild.call(parentElement, this.element); |
+ this._visible = false; |
if (this._parentIsShowing()) |
this._processWasHidden(); |
- return true; |
- }, |
- |
- detach: function() |
- { |
- if (!this._parentWidget) |
- return; |
- var wasShown = this._hideWidget(true); |
- if (!wasShown) |
- return; |
// Update widget hierarchy. |
if (this._parentWidget) { |
@@ -331,13 +294,10 @@ WebInspector.Widget.prototype = { |
this._parentWidget.childWasDetached(this); |
var parent = this._parentWidget; |
this._parentWidget = null; |
- this._parentElement = null; |
- this._insertBeforeElement = null; |
if (this._hasNonZeroConstraints()) |
parent.invalidateConstraints(); |
- } else { |
+ } else |
WebInspector.Widget.__assert(this._isRoot, "Removing non-root widget from DOM"); |
- } |
}, |
detachChildWidgets: function() |