Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (226962 => 226963)
--- trunk/Source/WebInspectorUI/ChangeLog 2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/ChangeLog 2018-01-16 07:03:57 UTC (rev 226963)
@@ -1,3 +1,39 @@
+2018-01-15 Matt Baker <[email protected]>
+
+ Web Inspector: TabBar redesign: add context menu to TabBar for toggling available tabs
+ https://bugs.webkit.org/show_bug.cgi?id=181448
+ <rdar://problem/36383298>
+
+ Reviewed by Devin Rousso.
+
+ * UserInterface/Base/Main.js:
+ (WI.loaded):
+ (WI.contentLoaded):
+ Reorder production tab classes and default (open) tabs.
+ (WI.registerTabClass): Removed.
+ Not used.
+
+ * UserInterface/Base/Object.js:
+ Remove notification that is no longer used.
+
+ * UserInterface/Views/GeneralTabBarItem.js:
+ (WI.GeneralTabBarItem):
+ (WI.GeneralTabBarItem.prototype.set title):
+ (WI.GeneralTabBarItem.prototype._handleContextMenuEvent): Deleted.
+ Remove per-tab context menu (provided Close Tab and Close Other Tabs).
+
+ * UserInterface/Views/NewTabContentView.js:
+ (WI.NewTabContentView):
+
+ * UserInterface/Views/TabBar.js:
+ (WI.TabBar):
+ (WI.TabBar.prototype._handleContextMenu):
+
+ * UserInterface/Views/TabBrowser.js:
+ (WI.TabBrowser):
+ (WI.TabBrowser._handleNewTabContextMenu): Deleted.
+ No longer needed.
+
2018-01-13 Nikita Vasilyev <[email protected]>
Web Inspector: Styles Redesign: properties should never be semitransparent or crossed out while editing
Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (226962 => 226963)
--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js 2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js 2018-01-16 07:03:57 UTC (rev 226963)
@@ -158,7 +158,7 @@
// Create settings.
this._showingSplitConsoleSetting = new WI.Setting("showing-split-console", false);
- this._openTabsSetting = new WI.Setting("open-tab-types", ["elements", "network", "resources", "timeline", "debugger", "storage", "canvas", "console"]);
+ this._openTabsSetting = new WI.Setting("open-tab-types", ["elements", "network", "debugger", "resources", "timeline", "storage", "canvas", "console"]);
this._selectedTabIndexSetting = new WI.Setting("selected-tab-index", 0);
this.showShadowDOMSetting = new WI.Setting("show-shadow-dom", false);
@@ -428,18 +428,18 @@
// These tabs are always available for selecting, modulo isTabAllowed().
// Other tabs may be engineering-only or toggled at runtime if incomplete.
let productionTabClasses = [
- WI.CanvasTabContentView,
- WI.ConsoleTabContentView,
- WI.DebuggerTabContentView,
WI.ElementsTabContentView,
- WI.LayersTabContentView,
WI.NetworkTabContentView,
- WI.NewTabContentView,
+ WI.DebuggerTabContentView,
WI.ResourcesTabContentView,
+ WI.TimelineTabContentView,
+ WI.StorageTabContentView,
+ WI.CanvasTabContentView,
+ WI.LayersTabContentView,
+ WI.ConsoleTabContentView,
WI.SearchTabContentView,
+ WI.NewTabContentView,
WI.SettingsTabContentView,
- WI.StorageTabContentView,
- WI.TimelineTabContentView,
];
this._knownTabClassesByType = new Map;
@@ -662,21 +662,6 @@
this.tabBrowser.showTabForContentView(tabContentView);
};
-WI.registerTabClass = function(tabClass)
-{
- console.assert(WI.TabContentView.isPrototypeOf(tabClass));
- if (!WI.TabContentView.isPrototypeOf(tabClass))
- return;
-
- if (this._knownTabClassesByType.has(tabClass.Type))
- return;
-
- this._knownTabClassesByType.set(tabClass.Type, tabClass);
-
- this._tryToRestorePendingTabs();
- this.notifications.dispatchEventToListeners(WI.Notification.TabTypesChanged);
-};
-
WI.activateExtraDomains = function(domains)
{
this.notifications.dispatchEventToListeners(WI.Notification.ExtraDomainsActivated, {domains});
Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Object.js (226962 => 226963)
--- trunk/Source/WebInspectorUI/UserInterface/Base/Object.js 2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Object.js 2018-01-16 07:03:57 UTC (rev 226963)
@@ -223,7 +223,6 @@
PageArchiveStarted: "page-archive-started",
PageArchiveEnded: "page-archive-ended",
ExtraDomainsActivated: "extra-domains-activated",
- TabTypesChanged: "tab-types-changed",
DebugUIEnabledDidChange: "debug-ui-enabled-did-change",
VisibilityStateDidChange: "visibility-state-did-change",
};
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/GeneralTabBarItem.js (226962 => 226963)
--- trunk/Source/WebInspectorUI/UserInterface/Views/GeneralTabBarItem.js 2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/GeneralTabBarItem.js 2018-01-16 07:03:57 UTC (rev 226963)
@@ -34,8 +34,6 @@
closeButtonElement.classList.add(WI.TabBarItem.CloseButtonStyleClassName);
closeButtonElement.title = WI.UIString("Click to close this tab; Option-click to close all tabs except this one");
this.element.insertBefore(closeButtonElement, this.element.firstChild);
-
- this.element.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this));
}
// Public
@@ -61,31 +59,4 @@
super.title = title;
}
-
- // Private
-
- _handleContextMenuEvent(event)
- {
- if (!this._parentTabBar)
- return;
-
- let closeTab = () => {
- this._parentTabBar.removeTabBarItem(this);
- };
-
- let closeOtherTabs = () => {
- let tabBarItems = this._parentTabBar.tabBarItems;
- for (let i = tabBarItems.length - 1; i >= 0; --i) {
- let item = tabBarItems[i];
- if (item === this || item instanceof WI.PinnedTabBarItem)
- continue;
- this._parentTabBar.removeTabBarItem(item);
- }
- };
-
- let hasOtherNonPinnedTabs = this._parentTabBar.tabBarItems.some((item) => item !== this && !(item instanceof WI.PinnedTabBarItem));
- let contextMenu = WI.ContextMenu.createFromEvent(event);
- contextMenu.appendItem(WI.UIString("Close Tab"), closeTab, this.isDefaultTab);
- contextMenu.appendItem(WI.UIString("Close Other Tabs"), closeOtherTabs, !hasOtherNonPinnedTabs);
- }
};
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js (226962 => 226963)
--- trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js 2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js 2018-01-16 07:03:57 UTC (rev 226963)
@@ -33,10 +33,11 @@
super(identifier || "new-tab", "new-tab", tabBarItem);
- WI.notifications.addEventListener(WI.Notification.TabTypesChanged, this._updateShownTabs.bind(this));
+ this._tabElementsByTabClass = new Map;
- this._tabElementsByTabClass = new Map;
- this._updateShownTabs();
+ let allTabClasses = Array.from(WI.knownTabClasses());
+ this._shownTabClasses = allTabClasses.filter((tabClass) => tabClass.isTabAllowed() && !tabClass.isEphemeral());
+ this._shownTabClasses.sort((a, b) => a.tabInfo().title.extendedLocaleCompare(b.tabInfo().title));
}
static tabInfo()
@@ -128,19 +129,6 @@
WI.createNewTabWithType(tabType, options);
}
- _updateShownTabs()
- {
- let allTabClasses = Array.from(WI.knownTabClasses());
- let allowedTabClasses = allTabClasses.filter((tabClass) => tabClass.isTabAllowed() && !tabClass.isEphemeral());
- allowedTabClasses.sort((a, b) => a.tabInfo().title.extendedLocaleCompare(b.tabInfo().title));
-
- if (Array.shallowEqual(this._shownTabClasses, allowedTabClasses))
- return;
-
- this._shownTabClasses = allowedTabClasses;
- this.needsLayout();
- }
-
_allowableTabTypes()
{
let tabTypes = this._shownTabClasses.map((tabClass) => tabClass.Type);
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TabBar.js (226962 => 226963)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TabBar.js 2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TabBar.js 2018-01-16 07:03:57 UTC (rev 226963)
@@ -34,6 +34,7 @@
this.element.addEventListener("mousedown", this._handleMouseDown.bind(this));
this.element.addEventListener("click", this._handleClick.bind(this));
this.element.addEventListener("mouseleave", this._handleMouseLeave.bind(this));
+ this.element.addEventListener("contextmenu", this._handleContextMenu.bind(this));
this.element.createChild("div", "top-border");
@@ -750,6 +751,35 @@
this._finishExpandingTabsAfterClose();
}
+ _handleContextMenu(event)
+ {
+ let contextMenu = WI.ContextMenu.createFromEvent(event);
+
+ for (let tabClass of WI.knownTabClasses()) {
+ if (tabClass.isEphemeral())
+ continue;
+
+ let openTabBarItem = null;
+ for (let tabBarItem of this._tabBarItems) {
+ let tabContentView = tabBarItem.representedObject;
+ if (!(tabContentView instanceof WI.TabContentView))
+ continue;
+
+ if (tabContentView.type === tabClass.Type) {
+ openTabBarItem = tabBarItem;
+ break;
+ }
+ }
+
+ contextMenu.appendCheckboxItem(tabClass.tabInfo().title, () => {
+ if (openTabBarItem)
+ this.removeTabBarItem(openTabBarItem);
+ else
+ WI.createNewTabWithType(tabClass.Type, {shouldShowNewTab: true});
+ }, !!openTabBarItem);
+ }
+ }
+
_handleNewTabClick(event)
{
WI.showNewTabTab();
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js (226962 => 226963)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js 2018-01-16 06:44:41 UTC (rev 226962)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TabBrowser.js 2018-01-16 07:03:57 UTC (rev 226963)
@@ -78,7 +78,6 @@
this._tabBar.addEventListener(WI.TabBar.Event.TabBarItemSelected, this._tabBarItemSelected, this);
this._tabBar.addEventListener(WI.TabBar.Event.TabBarItemAdded, this._tabBarItemAdded, this);
this._tabBar.addEventListener(WI.TabBar.Event.TabBarItemRemoved, this._tabBarItemRemoved, this);
- this._tabBar.newTabTabBarItem.addEventListener(WI.PinnedTabBarItem.Event.ContextMenu, this._handleNewTabContextMenu, this);
this._recentTabContentViews = [];
this._closedTabClasses = new Set;
@@ -295,35 +294,6 @@
console.assert(!this.selectedTabContentView || this.selectedTabContentView === this._recentTabContentViews[0]);
}
- _handleNewTabContextMenu(event)
- {
- // The array must be reversed because Sets insert into the end, and we want to display the
- // most recently closed item first (which is the last item added to the set).
- let closedTabClasses = Array.from(this._closedTabClasses).reverse();
- let allTabClasses = Array.from(WI.knownTabClasses());
- let tabClassesToDisplay = closedTabClasses.concat(allTabClasses.filter((tabClass) => {
- if (closedTabClasses.includes(tabClass))
- return false;
-
- if (tabClass.isEphemeral())
- return false;
-
- return WI.isNewTabWithTypeAllowed(tabClass.Type);
- }));
- if (!tabClassesToDisplay.length)
- return;
-
- let contextMenu = event.data.contextMenu;
-
- contextMenu.appendItem(WI.UIString("Recently Closed Tabs"), null, true);
-
- for (let tabClass of tabClassesToDisplay) {
- contextMenu.appendItem(tabClass.tabInfo().title, () => {
- WI.createNewTabWithType(tabClass.Type, {shouldShowNewTab: true});
- });
- }
- }
-
_sidebarPanelSelected(event)
{
if (this._ignoreSidebarEvents)