Title: [193486] trunk/Source/WebInspectorUI
Revision
193486
Author
mattba...@apple.com
Date
2015-12-04 16:12:23 -0800 (Fri, 04 Dec 2015)

Log Message

Web Inspector: when a marked-dirty subview is attached to a parent View, dirtyDescendantsCount gets out of sync
https://bugs.webkit.org/show_bug.cgi?id=151876

Reviewed by Brian Burg.

* UserInterface/Views/NewTabContentView.js:
(WebInspector.NewTabContentView.prototype._updateShownTabs):
Removed workaround added in https://bugs.webkit.org/show_bug.cgi?id=151594.

* UserInterface/Views/View.js:
(WebInspector.View._scheduleLayoutForView):
Always perform a synchronous layout when a view that isn't descended from the
root view schedules a layout.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (193485 => 193486)


--- trunk/Source/WebInspectorUI/ChangeLog	2015-12-05 00:04:01 UTC (rev 193485)
+++ trunk/Source/WebInspectorUI/ChangeLog	2015-12-05 00:12:23 UTC (rev 193486)
@@ -1,3 +1,19 @@
+2015-12-04  Matt Baker  <mattba...@apple.com>
+
+        Web Inspector: when a marked-dirty subview is attached to a parent View, dirtyDescendantsCount gets out of sync
+        https://bugs.webkit.org/show_bug.cgi?id=151876
+
+        Reviewed by Brian Burg.
+
+        * UserInterface/Views/NewTabContentView.js:
+        (WebInspector.NewTabContentView.prototype._updateShownTabs):
+        Removed workaround added in https://bugs.webkit.org/show_bug.cgi?id=151594.
+
+        * UserInterface/Views/View.js:
+        (WebInspector.View._scheduleLayoutForView):
+        Always perform a synchronous layout when a view that isn't descended from the
+        root view schedules a layout.
+
 2015-12-04  Brian Burg  <bb...@apple.com>
 
         Web Inspector: support runtime registration of tab type associations

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js (193485 => 193486)


--- trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js	2015-12-05 00:04:01 UTC (rev 193485)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js	2015-12-05 00:12:23 UTC (rev 193486)
@@ -138,7 +138,6 @@
             return;
 
         this._shownTabClasses = allowedTabClasses;
-        this.needsLayout();
     }
 
     _allowableTabTypes()

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/View.js (193485 => 193486)


--- trunk/Source/WebInspectorUI/UserInterface/Views/View.js	2015-12-05 00:04:01 UTC (rev 193485)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/View.js	2015-12-05 00:12:23 UTC (rev 193486)
@@ -182,21 +182,31 @@
 
     static _scheduleLayoutForView(view)
     {
-        // Asynchronous layouts aren't scheduled until the root view has been set.
-        // If the root view hasn't been set, switch to a synchronous layout.
-        if (!WebInspector.View._rootView) {
+        let isDescendantOfRoot = false;
+        let parentView = view.parentView;
+        while (parentView) {
+            parentView._dirtyDescendantsCount++;
+            if (parentView === WebInspector.View._rootView) {
+                isDescendantOfRoot = true;
+                break;
+            }
+            parentView = parentView.parentView;
+        }
+
+        // If the view is not attached to the main view tree, switch to a synchronous layout.
+        if (!isDescendantOfRoot) {
+            parentView = view.parentView;
+            while (parentView) {
+                parentView._dirtyDescendantsCount--;
+                parentView = parentView.parentView;
+            }
+
             view._layoutSubtree();
             return;
         }
 
         view._dirty = true;
 
-        let parentView = view.parentView;
-        while (parentView) {
-            parentView._dirtyDescendantsCount++;
-            parentView = parentView.parentView;
-        }
-
         if (WebInspector.View._scheduledLayoutUpdateIdentifier)
             return;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to