- Revision
- 228722
- Author
- mattba...@apple.com
- Date
- 2018-02-19 18:04:30 -0800 (Mon, 19 Feb 2018)
Log Message
Web Inspector: Canvas tab: hide navigation sidebar when viewing the overview
https://bugs.webkit.org/show_bug.cgi?id=182597
<rdar://problem/37341564>
Reviewed by Devin Rousso.
Support showing/hiding the navigation sidebar panel based on the current
represented object. Individual TabContentViews can opt-in to this behavior,
by overriding TabContentView.prototype.managesNavigationSidebarPanel.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.get managesNavigationSidebarPanel):
Hide the Canvas navigation sidebar when viewing the overview.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView):
(WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
(WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
(WI.ContentBrowserTabContentView.prototype._contentBrowserCurrentRepresentedObjectsDidChange):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.canShowRepresentedObject):
Provide default implementation that just defers to the TabContentView.
This exists so that a NavigationSidebarPanel that implements canShowRepresentedObject
will have a meaningful default to fall back on.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype._sidebarCollapsedStateDidChange):
(WI.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.prototype.get managesNavigationSidebarPanel):
Modified Paths
Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (228721 => 228722)
--- trunk/Source/WebInspectorUI/ChangeLog 2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/ChangeLog 2018-02-20 02:04:30 UTC (rev 228722)
@@ -1,3 +1,40 @@
+2018-02-19 Matt Baker <mattba...@apple.com>
+
+ Web Inspector: Canvas tab: hide navigation sidebar when viewing the overview
+ https://bugs.webkit.org/show_bug.cgi?id=182597
+ <rdar://problem/37341564>
+
+ Reviewed by Devin Rousso.
+
+ Support showing/hiding the navigation sidebar panel based on the current
+ represented object. Individual TabContentViews can opt-in to this behavior,
+ by overriding TabContentView.prototype.managesNavigationSidebarPanel.
+
+ * UserInterface/Views/CanvasSidebarPanel.js:
+ (WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):
+ * UserInterface/Views/CanvasTabContentView.js:
+ (WI.CanvasTabContentView.prototype.get managesNavigationSidebarPanel):
+ Hide the Canvas navigation sidebar when viewing the overview.
+
+ * UserInterface/Views/ContentBrowserTabContentView.js:
+ (WI.ContentBrowserTabContentView):
+ (WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
+ (WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
+ (WI.ContentBrowserTabContentView.prototype._contentBrowserCurrentRepresentedObjectsDidChange):
+
+ * UserInterface/Views/NavigationSidebarPanel.js:
+ (WI.NavigationSidebarPanel.prototype.canShowRepresentedObject):
+ Provide default implementation that just defers to the TabContentView.
+ This exists so that a NavigationSidebarPanel that implements canShowRepresentedObject
+ will have a meaningful default to fall back on.
+
+ * UserInterface/Views/TabBrowser.js:
+ (WI.TabBrowser.prototype._sidebarCollapsedStateDidChange):
+ (WI.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
+
+ * UserInterface/Views/TabContentView.js:
+ (WI.TabContentView.prototype.get managesNavigationSidebarPanel):
+
2018-02-16 Matt Baker <mattba...@apple.com>
Web Inspector: TabBar redesign: remove top-level search field and pin the Search tab
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js (228721 => 228722)
--- trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js 2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CanvasSidebarPanel.js 2018-02-20 02:04:30 UTC (rev 228722)
@@ -151,6 +151,14 @@
super.hidden();
}
+ canShowRepresentedObject(representedObject)
+ {
+ if (representedObject instanceof WI.CanvasCollection)
+ return false;
+
+ return super.canShowRepresentedObject(representedObject);
+ }
+
// Protected
hasCustomFilters()
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js (228721 => 228722)
--- trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js 2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js 2018-02-20 02:04:30 UTC (rev 228722)
@@ -85,6 +85,11 @@
return true;
}
+ get managesNavigationSidebarPanel()
+ {
+ return true;
+ }
+
canShowRepresentedObject(representedObject)
{
return representedObject instanceof WI.Canvas
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js (228721 => 228722)
--- trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js 2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js 2018-02-20 02:04:30 UTC (rev 228722)
@@ -39,9 +39,13 @@
this._contentBrowser = contentBrowser;
this._contentBrowser.delegate = this;
+ this._ignoreNavigationSidebarPanelCollapsedEvent = false;
+ this._ignoreDetailsSidebarPanelCollapsedEvent = false;
+ this._ignoreDetailsSidebarPanelSelectedEvent = false;
+
this._lastSelectedDetailsSidebarPanelSetting = new WI.Setting(identifier + "-last-selected-details-sidebar-panel", null);
- this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentRepresentedObjectsDidChange, this.showDetailsSidebarPanels, this);
+ this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentRepresentedObjectsDidChange, this._contentBrowserCurrentRepresentedObjectsDidChange, this);
this._contentBrowser.addEventListener(WI.ContentBrowser.Event.CurrentContentViewDidChange, this._contentBrowserCurrentContentViewDidChange, this);
// If any content views were shown during sidebar construction, contentBrowserTreeElementForRepresentedObject() would have returned null.
@@ -134,6 +138,36 @@
return true;
}
+ showNavigationSidebarPanel()
+ {
+ if (!this.visible)
+ return;
+
+ if (!this.navigationSidebarPanel)
+ return;
+
+ this._ignoreNavigationSidebarPanelCollapsedEvent = true;
+
+ let currentRepresentedObjects = this._contentBrowser.currentRepresentedObjects;
+ let shouldShowSidebar = currentRepresentedObjects.some((object) => this.navigationSidebarPanel.canShowRepresentedObject(object));
+
+ if (shouldShowSidebar) {
+ if (!this.navigationSidebarPanel.parentSidebar)
+ WI.navigationSidebar.addSidebarPanel(this.navigationSidebarPanel);
+ } else if (this.navigationSidebarPanel.parentSidebar)
+ WI.navigationSidebar.removeSidebarPanel(this.navigationSidebarPanel);
+
+ if (this.navigationSidebarPanel.parentSidebar) {
+ WI.navigationSidebar.selectedSidebarPanel = this.navigationSidebarPanel;
+ WI.navigationSidebar.collapsed = this.navigationSidebarCollapsedSetting.value;
+ } else
+ WI.navigationSidebar.collapsed = true;
+
+ this._ignoreNavigationSidebarPanelCollapsedEvent = false;
+
+ this._showNavigationSidebarItem.enabled = !!this.navigationSidebarPanel.parentSidebar;
+ }
+
showDetailsSidebarPanels()
{
if (!this.visible)
@@ -220,7 +254,15 @@
_navigationSidebarCollapsedStateDidChange(event)
{
+ if (!this.visible)
+ return;
+
this._showNavigationSidebarItem.activated = !WI.navigationSidebar.collapsed;
+
+ if (this._ignoreNavigationSidebarPanelCollapsedEvent)
+ return;
+
+ this.navigationSidebarCollapsedSetting.value = WI.navigationSidebar.collapsed;
}
_detailsSidebarCollapsedStateDidChange(event)
@@ -279,4 +321,11 @@
else if (this.navigationSidebarPanel && this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement)
this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement.deselect(true);
}
+
+ _contentBrowserCurrentRepresentedObjectsDidChange()
+ {
+ if (this.managesNavigationSidebarPanel)
+ this.showNavigationSidebarPanel();
+ this.showDetailsSidebarPanels();
+ }
};
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js (228721 => 228722)
--- trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js 2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js 2018-02-20 02:04:30 UTC (rev 228722)
@@ -201,6 +201,13 @@
return true;
}
+ canShowRepresentedObject(representedObject)
+ {
+ let selectedTabContentView = WI.tabBrowser.selectedTabContentView;
+ console.assert(selectedTabContentView instanceof WI.TabContentView, "Missing TabContentView for NavigationSidebarPanel.");
+ return selectedTabContentView && selectedTabContentView.canShowRepresentedObject(representedObject);
+ }
+
saveStateToCookie(cookie)
{
console.assert(cookie);
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js (228721 => 228722)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js 2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js 2018-02-20 02:04:30 UTC (rev 228722)
@@ -321,7 +321,7 @@
if (!tabContentView)
return;
- if (event.target === this._navigationSidebar)
+ if (event.target === this._navigationSidebar && !tabContentView.managesNavigationSidebarPanel)
tabContentView.navigationSidebarCollapsedSetting.value = this._navigationSidebar.collapsed;
else if (event.target === this._detailsSidebar && !tabContentView.managesDetailsSidebarPanels)
tabContentView.detailsSidebarCollapsedSetting.value = this._detailsSidebar.collapsed;
@@ -373,6 +373,12 @@
return;
}
+ if (tabContentView.managesNavigationSidebarPanel) {
+ tabContentView.showNavigationSidebarPanel();
+ this._ignoreSidebarEvents = false;
+ return;
+ }
+
this._navigationSidebar.addSidebarPanel(navigationSidebarPanel);
this._navigationSidebar.selectedSidebarPanel = navigationSidebarPanel;
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TabContentView.js (228721 => 228722)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TabContentView.js 2018-02-20 02:02:57 UTC (rev 228721)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TabContentView.js 2018-02-20 02:04:30 UTC (rev 228722)
@@ -99,6 +99,12 @@
return this._tabBarItem;
}
+ get managesNavigationSidebarPanel()
+ {
+ // Implemented by subclasses.
+ return false;
+ }
+
get managesDetailsSidebarPanels()
{
// Implemented by subclasses.