| Summary: | Web Inspector: Long delay when row selection changes in timeline data grids | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Matt Baker <mattbaker> | ||||||||||
| Component: | Web Inspector | Assignee: | Matt Baker <mattbaker> | ||||||||||
| Status: | RESOLVED FIXED | ||||||||||||
| Severity: | Normal | CC: | bburg, commit-queue, graouts, joepeck, mattbaker, nvasilyev, timothy, webkit-bug-importer | ||||||||||
| Priority: | P2 | Keywords: | InRadar | ||||||||||
| Version: | 528+ (Nightly build) | ||||||||||||
| Hardware: | All | ||||||||||||
| OS: | All | ||||||||||||
| Attachments: |
|
||||||||||||
|
Description
Matt Baker
2015-08-13 17:49:15 PDT
Created attachment 258962 [details]
[Patch] Proposed Fix
Comment on attachment 258962 [details] [Patch] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=258962&action=review > Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js:466 > + this._navigationBar.updateLayoutSoon(); I worry this will cause a disconnect between the DOM and what the layout becomes later. So you might see a flash of content then the layout happens later to adjust. A two step update instead of one. If updateLayoutSoon is using requestAnimationFrame, we should be fine. > Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js:35 > + this.navigationSidebarTreeOutline.allowsRepeatSelection = false; We can do this for any sidebar that does not cause a view change. So all Timeline sidebar outlines now. (In reply to comment #3) > Comment on attachment 258962 [details] > [Patch] Proposed Fix > > View in context: > https://bugs.webkit.org/attachment.cgi?id=258962&action=review > > > Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js:466 > > + this._navigationBar.updateLayoutSoon(); > > I worry this will cause a disconnect between the DOM and what the layout > becomes later. So you might see a flash of content then the layout happens > later to adjust. A two step update instead of one. If updateLayoutSoon is > using requestAnimationFrame, we should be fine. > > > Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js:35 > > + this.navigationSidebarTreeOutline.allowsRepeatSelection = false; > > We can do this for any sidebar that does not cause a view change. So all > Timeline sidebar outlines now. Except for the Debugger sidebar, which highlights breakpoint lines in the content view when the breakpoint's tree element is clicked. (In reply to comment #4) > (In reply to comment #3) > > Comment on attachment 258962 [details] > > [Patch] Proposed Fix > > > > View in context: > > https://bugs.webkit.org/attachment.cgi?id=258962&action=review > > > > > Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js:466 > > > + this._navigationBar.updateLayoutSoon(); > > > > I worry this will cause a disconnect between the DOM and what the layout > > becomes later. So you might see a flash of content then the layout happens > > later to adjust. A two step update instead of one. If updateLayoutSoon is > > using requestAnimationFrame, we should be fine. > > > > > Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js:35 > > > + this.navigationSidebarTreeOutline.allowsRepeatSelection = false; > > > > We can do this for any sidebar that does not cause a view change. So all > > Timeline sidebar outlines now. > > Except for the Debugger sidebar, which highlights breakpoint lines in the > content view when the breakpoint's tree element is clicked. All *timeline* sidebars. Right. :) We should flip the default for that property. Make it true explicitly for the debugger sidebar. Created attachment 258968 [details]
[Patch] Proposed Fix
(In reply to comment #3) > Comment on attachment 258962 [details] > [Patch] Proposed Fix > > View in context: > https://bugs.webkit.org/attachment.cgi?id=258962&action=review > > > Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js:466 > > + this._navigationBar.updateLayoutSoon(); > > I worry this will cause a disconnect between the DOM and what the layout > becomes later. So you might see a flash of content then the layout happens > later to adjust. A two step update instead of one. If updateLayoutSoon is > using requestAnimationFrame, we should be fine. Filed a follow up: https://bugs.webkit.org/show_bug.cgi?id=148010 > > Source/WebInspectorUI/UserInterface/Views/RenderingFrameTimelineView.js:35 > > + this.navigationSidebarTreeOutline.allowsRepeatSelection = false; > > We can do this for any sidebar that does not cause a view change. So all > Timeline sidebar outlines now. Updated to set allowsRepeatSelection = false for all TimelineSidebarPanel tree outlines. Comment on attachment 258968 [details] [Patch] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=258968&action=review > Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js:232 > + treeOutline.allowsRepeatSelection = false; Actually this will break the sidebar when a non-timeline content view is showing, since we still jump to locations on select in that case. Was there any other reason to change this? Created attachment 259037 [details]
[Patch] Proposed Fix
Comment on attachment 259037 [details] [Patch] Proposed Fix View in context: https://bugs.webkit.org/attachment.cgi?id=259037&action=review > Source/WebInspectorUI/ChangeLog:14 > + Call updateLayoutSoon instead of updateLayout to compress layout requests. 'coalesce' Comment on attachment 259037 [details]
[Patch] Proposed Fix
r=me
Created attachment 259041 [details]
[Patch] Proposed Fix
Comment on attachment 259041 [details] [Patch] Proposed Fix Clearing flags on attachment: 259041 Committed r188494: <http://trac.webkit.org/changeset/188494> All reviewed patches have been landed. Closing bug. |