Changeset 141249 in webkit


Ignore:
Timestamp:
Jan 30, 2013 3:59:44 AM (11 years ago)
Author:
commit-queue@webkit.org
Message:

Web Inspector: Change the Elements panel sidebar layout based on its aspect ratio.
https://bugs.webkit.org/show_bug.cgi?id=108181

Patch by Vladislav Kaznacheev <kaznacheev@chromium.org> on 2013-01-30
Reviewed by Pavel Feldman.

Sidebar aspect ratio proved to be a better trigger for the sidebar layout change that the docking mode.
Moved the sidebar layout handling completely into WebInspector.SidebarView which now only accepts
two positions: Start (corresponding to Left or Top) and End (corresponding to Right or Bottom).

No new tests.

  • inspector/front-end/CSSNamedFlowCollectionsView.js:

(WebInspector.CSSNamedFlowCollectionsView):

  • inspector/front-end/DockController.js:

(WebInspector.DockController.prototype._updateUI):
(WebInspector.DockController.prototype._toggleDockState):

  • inspector/front-end/ElementsPanel.js:

(WebInspector.ElementsPanel.prototype.onResize):

  • inspector/front-end/FileSystemView.js:

(WebInspector.FileSystemView):

  • inspector/front-end/MemoryStatistics.js:
  • inspector/front-end/Panel.js:

(WebInspector.Panel.prototype.createSidebarView):

  • inspector/front-end/ScriptsPanel.js:

(WebInspector.ScriptsPanel):

  • inspector/front-end/Settings.js:

(WebInspector.ExperimentsSettings):

  • inspector/front-end/SidebarView.js:

(WebInspector.SidebarView):
(WebInspector.SidebarView.prototype.setAutoOrientation):
(WebInspector.SidebarView.prototype._updateSidebarPosition):
(WebInspector.SidebarView.prototype.onResize):

Location:
trunk/Source/WebCore
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r141248 r141249  
     12013-01-30  Vladislav Kaznacheev  <kaznacheev@chromium.org>
     2
     3        Web Inspector: Change the Elements panel sidebar layout based on its aspect ratio.
     4        https://bugs.webkit.org/show_bug.cgi?id=108181
     5
     6        Reviewed by Pavel Feldman.
     7
     8        Sidebar aspect ratio proved to be a better trigger for the sidebar layout change that the docking mode.
     9        Moved the sidebar layout handling completely into WebInspector.SidebarView which now only accepts
     10        two positions: Start (corresponding to Left or Top) and End (corresponding to Right or Bottom).
     11
     12        No new tests.
     13
     14        * inspector/front-end/CSSNamedFlowCollectionsView.js:
     15        (WebInspector.CSSNamedFlowCollectionsView):
     16        * inspector/front-end/DockController.js:
     17        (WebInspector.DockController.prototype._updateUI):
     18        (WebInspector.DockController.prototype._toggleDockState):
     19        * inspector/front-end/ElementsPanel.js:
     20        (WebInspector.ElementsPanel.prototype.onResize):
     21        * inspector/front-end/FileSystemView.js:
     22        (WebInspector.FileSystemView):
     23        * inspector/front-end/MemoryStatistics.js:
     24        * inspector/front-end/Panel.js:
     25        (WebInspector.Panel.prototype.createSidebarView):
     26        * inspector/front-end/ScriptsPanel.js:
     27        (WebInspector.ScriptsPanel):
     28        * inspector/front-end/Settings.js:
     29        (WebInspector.ExperimentsSettings):
     30        * inspector/front-end/SidebarView.js:
     31        (WebInspector.SidebarView):
     32        (WebInspector.SidebarView.prototype.setAutoOrientation):
     33        (WebInspector.SidebarView.prototype._updateSidebarPosition):
     34        (WebInspector.SidebarView.prototype.onResize):
     35
    1362013-01-30  Patrick Gansterer  <paroga@webkit.org>
    237
     
    24882523        Add exceptions to binding integrity checks to IDL.
    24892524       
     25252013-01-28  Alpha Lam  <hclam@chromium.org>
     2526
     2527        [chromium] Build fix.
     2528
     2529        Unreviewed build fix. Remove the use of SkMutex from DiscardablePixelRef.
     2530
     2531        * platform/graphics/chromium/DiscardablePixelRef.cpp:
     2532        (WebCore::DiscardablePixelRefAllocator::allocPixelRef):
     2533        (WebCore::DiscardablePixelRef::DiscardablePixelRef):
     2534        * platform/graphics/chromium/DiscardablePixelRef.h:
     2535        (DiscardablePixelRef):
     2536
    249025372013-01-28  Benjamin Poulain  <benjamin@webkit.org>
    24912538
  • trunk/Source/WebCore/inspector/front-end/CSSNamedFlowCollectionsView.js

    r134031 r141249  
    3434WebInspector.CSSNamedFlowCollectionsView = function()
    3535{
    36     WebInspector.SidebarView.call(this, WebInspector.SidebarView.SidebarPosition.Left);
     36    WebInspector.SidebarView.call(this, WebInspector.SidebarView.SidebarPosition.Start);
    3737    this.registerRequiredCSS("cssNamedFlows.css");
    3838
     
    4747    this._statusElement.textContent = WebInspector.UIString("CSS Named Flows");
    4848
    49     var sidebarHeader = this._leftElement.createChild("div", "tabbed-pane-header selected sidebar-header")
     49    var sidebarHeader = this.firstElement().createChild("div", "tabbed-pane-header selected sidebar-header");
    5050    var tab = sidebarHeader.createChild("div", "tabbed-pane-header-tab");
    5151    tab.createChild("span", "tabbed-pane-header-tab-title").textContent = WebInspector.UIString("CSS Named Flows");
    5252
    53     this._sidebarContentElement = this._leftElement.createChild("div", "sidebar-content outline-disclosure");
     53    this._sidebarContentElement = this.firstElement().createChild("div", "sidebar-content outline-disclosure");
    5454    this._flowListElement = this._sidebarContentElement.createChild("ol");
    5555    this._flowTree = new TreeOutline(this._flowListElement);
     
    6161    this._tabbedPane = new WebInspector.TabbedPane();
    6262    this._tabbedPane.closeableTabs = true;
    63     this._tabbedPane.show(this._rightElement);
     63    this._tabbedPane.show(this.secondElement());
    6464}
    6565
  • trunk/Source/WebCore/inspector/front-end/DockController.js

    r140543 r141249  
    3131/**
    3232 * @constructor
    33  * @extends {WebInspector.Object}
    3433 */
    3534WebInspector.DockController = function()
     
    5251}
    5352
    54 WebInspector.DockController.EventTypes = {
    55     StateChanged: "StateChanged"
    56 }
    57 
    5853WebInspector.DockController.prototype = {
    5954    /**
     
    6358    {
    6459        return this._dockToggleButton.element;
    65     },
    66 
    67     /**
    68      * @return {string}
    69      */
    70     dockSide: function()
    71     {
    72       return this._dockSide;
    7360    },
    7461
     
    155142        this._decorateButtonForTargetState(this._dockToggleButton, lastState);
    156143        this._decorateButtonForTargetState(this._dockToggleButtonOption, sides[0]);
    157 
    158         this.dispatchEventToListeners(WebInspector.DockController.EventTypes.StateChanged, this._dockSide);
    159144    },
    160145
     
    198183        }
    199184        InspectorFrontendHost.requestSetDockSide(action);
    200     },
    201 
    202     __proto__: WebInspector.Object.prototype
     185    }
    203186}
    204187
  • trunk/Source/WebCore/inspector/front-end/ElementsPanel.js

    r140968 r141249  
    4848    this.setHideOnDetach();
    4949
    50     WebInspector.dockController.addEventListener(WebInspector.DockController.EventTypes.StateChanged, this._onDockStateChanged.bind(this));
    51 
    5250    const initialSidebarWidth = 325;
    5351    const minimumContentWidthPercent = 34;
    5452    const initialSidebarHeight = 325;
    5553    const minimumContentHeightPercent = 34;
    56     this.createSidebarView(this.element, this._sidebarPosition(), initialSidebarWidth, initialSidebarHeight);
     54    this.createSidebarView(this.element, WebInspector.SidebarView.SidebarPosition.End, initialSidebarWidth, initialSidebarHeight);
     55    this.splitView.setAutoOrientation(WebInspector.experimentsSettings.elementsPanelSingleColumn.isEnabled());
    5756    this.splitView.setMinimumSidebarWidth(Preferences.minElementsSidebarWidth);
    5857    this.splitView.setMinimumMainWidthPercent(minimumContentWidthPercent);
     
    165164        this.treeOutline.updateSelection();
    166165        this.updateBreadcrumbSizes();
    167         if (WebInspector.dockController.dockSide() !== WebInspector.DockController.State.Undocked)
    168             this.splitView.setSidebarPosition(this._sidebarPosition());
    169     },
    170 
    171     _onDockStateChanged: function()
    172     {
    173         if (WebInspector.dockController.dockSide() === WebInspector.DockController.State.Undocked)
    174             this.splitView.setSidebarPosition(this._sidebarPosition());
    175     },
    176 
    177     /**
    178      * @return {string}
    179      */
    180     _sidebarPosition: function()
    181     {
    182         if (WebInspector.experimentsSettings.elementsPanelSingleColumn.isEnabled() &&
    183             WebInspector.dockController.dockSide() === WebInspector.DockController.State.DockedToRight)
    184             return WebInspector.SidebarView.SidebarPosition.Bottom;
    185 
    186         return WebInspector.SidebarView.SidebarPosition.Right;
    187166    },
    188167
  • trunk/Source/WebCore/inspector/front-end/FileSystemView.js

    r140122 r141249  
    3636WebInspector.FileSystemView = function(fileSystem)
    3737{
    38     WebInspector.SidebarView.call(this, WebInspector.SidebarView.SidebarPosition.Left, "FileSystemViewSidebarWidth");
     38    WebInspector.SidebarView.call(this, WebInspector.SidebarView.SidebarPosition.Start, "FileSystemViewSidebarWidth");
    3939    this.element.addStyleClass("file-system-view");
    4040    this.element.addStyleClass("storage-view");
  • trunk/Source/WebCore/inspector/front-end/MemoryStatistics.js

    r136220 r141249  
    4444
    4545    this._containerAnchor = timelinePanel.element.lastChild;
    46     this._memorySidebarView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Left, undefined, sidebarWidth);
     46    this._memorySidebarView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start, undefined, sidebarWidth);
    4747    this._memorySidebarView.sidebarElement.addStyleClass("sidebar");
    4848    this._memorySidebarView.element.id = "memory-graphs-container";
  • trunk/Source/WebCore/inspector/front-end/Panel.js

    r140333 r141249  
    163163            parentElement = this.element;
    164164
    165         this.splitView = new WebInspector.SidebarView(position || WebInspector.SidebarView.SidebarPosition.Left, this._sidebarWidthSettingName(), defaultWidth, defaultHeight);
     165        this.splitView = new WebInspector.SidebarView(position, this._sidebarWidthSettingName(), defaultWidth, defaultHeight);
    166166        this.splitView.show(parentElement);
    167167        this.splitView.addEventListener(WebInspector.SidebarView.EventTypes.Resized, this.sidebarResized.bind(this));
  • trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js

    r140968 r141249  
    7070    const initialDebugSidebarWidth = 225;
    7171    const minimumDebugSidebarWidthPercent = 50;
    72     this.createSidebarView(this.element, WebInspector.SidebarView.SidebarPosition.Right, initialDebugSidebarWidth);
     72    this.createSidebarView(this.element, WebInspector.SidebarView.SidebarPosition.End, initialDebugSidebarWidth);
    7373    this.splitView.element.id = "scripts-split-view";
    7474    this.splitView.setMinimumSidebarWidth(Preferences.minScriptsSidebarWidth);
     
    8484    const initialNavigatorWidth = 225;
    8585    const minimumViewsContainerWidthPercent = 50;
    86     this.editorView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Left, "scriptsPanelNavigatorSidebarWidth", initialNavigatorWidth);
     86    this.editorView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start, "scriptsPanelNavigatorSidebarWidth", initialNavigatorWidth);
    8787    this.editorView.element.tabIndex = 0;
    8888
  • trunk/Source/WebCore/inspector/front-end/Settings.js

    r140798 r141249  
    215215    this.showOverridesInDrawer = this._createExperiment("showOverridesInDrawer", "Show Overrides in drawer");
    216216    this.fileSystemProject = this._createExperiment("fileSystemProject", "File system folders in Sources Panel");
    217     this.elementsPanelSingleColumn = this._createExperiment("elementsPanelSingleColumn", "Single-column elements panel layout when docked to right");
     217    this.elementsPanelSingleColumn = this._createExperiment("elementsPanelSingleColumn", "Split Elements sidebar horizontally when it is too narrow");
    218218
    219219    this._cleanUpSetting();
  • trunk/Source/WebCore/inspector/front-end/SidebarView.js

    r140333 r141249  
    3939    WebInspector.SplitView.call(this, true, sidebarWidthSettingName, defaultSidebarWidth, defaultSidebarHeight);
    4040
    41     this._leftElement = this.firstElement();
    42     this._rightElement = this.secondElement();
    43 
    4441    this._minimumSidebarWidth = Preferences.minSidebarWidth;
    4542    this._minimumMainWidthPercent = 50;
     
    4845    this._minimumMainHeightPercent = 50;
    4946
    50     this._innerSetSidebarPosition(sidebarPosition || WebInspector.SidebarView.SidebarPosition.Left);
     47    this._sidebarPosition = sidebarPosition || WebInspector.SidebarView.SidebarPosition.Start;
     48    this.setSecondIsSidebar(this._sidebarPosition === WebInspector.SidebarView.SidebarPosition.End);
     49    this._updateSidebarPosition();
    5150}
    5251
     
    5958 */
    6059WebInspector.SidebarView.SidebarPosition = {
    61     Left: "Left",
    62     Right: "Right",
    63     Top: "Top",
    64     Bottom: "Bottom"
     60    Start: "Start",
     61    End: "End"
    6562}
    6663
     
    9693
    9794    /**
    98      * @param {string} sidebarPosition
    99      */
    100     setSidebarPosition: function(sidebarPosition)
    101     {
    102         if (this.sidebarPosition_ === sidebarPosition)
     95     * @param {boolean} on
     96     */
     97    setAutoOrientation: function(on) {
     98        this._autoOrientation = on;
     99    },
     100
     101    _updateSidebarPosition: function()
     102    {
     103        var verticalSplit = true;
     104        if (this._autoOrientation)
     105            verticalSplit = this.element.offsetHeight < this.element.offsetWidth;
     106
     107        if (verticalSplit === this.isVertical())
    103108            return;
    104109
    105         this._innerSetSidebarPosition(sidebarPosition);
    106     },
    107 
    108     /**
    109      * @param {string} sidebarPosition
    110      */
    111     _innerSetSidebarPosition: function(sidebarPosition)
    112     {
    113         this.sidebarPosition_ = sidebarPosition;
    114 
    115         switch (sidebarPosition) {
    116         case WebInspector.SidebarView.SidebarPosition.Left:
    117             this.setSecondIsSidebar(false);
    118             this._setSidebarElementStyle("split-view-sidebar-left");
    119             this.setVertical(true);
    120             break;
    121         case WebInspector.SidebarView.SidebarPosition.Right:
    122             this.setSecondIsSidebar(true);
    123             this._setSidebarElementStyle("split-view-sidebar-right");
    124             this.setVertical(true);
    125             break;
    126         case WebInspector.SidebarView.SidebarPosition.Top:
    127             this.setSecondIsSidebar(false);
    128             this._setSidebarElementStyle("split-view-sidebar-top");
    129             this.setVertical(false);
    130             break;
    131         case WebInspector.SidebarView.SidebarPosition.Bottom:
    132             this.setSecondIsSidebar(true);
    133             this._setSidebarElementStyle("split-view-sidebar-bottom");
    134             this.setVertical(false);
    135             break;
     110        if (this._sidebarPosition === WebInspector.SidebarView.SidebarPosition.Start) {
     111            if (verticalSplit)
     112                this._setSidebarElementStyle("split-view-sidebar-left");
     113            else
     114                this._setSidebarElementStyle("split-view-sidebar-top");
     115        } else {
     116            if (verticalSplit)
     117                this._setSidebarElementStyle("split-view-sidebar-right");
     118            else
     119                this._setSidebarElementStyle("split-view-sidebar-bottom");
    136120        }
     121
     122        this.setVertical(verticalSplit);
    137123    },
    138124
     
    187173    onResize: function()
    188174    {
     175        if (this._autoOrientation)
     176            this._updateSidebarPosition();
    189177        WebInspector.SplitView.prototype.onResize.call(this);
    190178        this.dispatchEventToListeners(WebInspector.SidebarView.EventTypes.Resized, this.sidebarWidth());
Note: See TracChangeset for help on using the changeset viewer.