Title: [122557] trunk
Revision
122557
Author
[email protected]
Date
2012-07-13 03:21:04 -0700 (Fri, 13 Jul 2012)

Log Message

Web Inspector: mute the native looks of the selects in the console.
https://bugs.webkit.org/show_bug.cgi?id=91120

Reviewed by Vsevolod Vlasov.

This is necessary for Mac now that we don't use border images for select.

* inspector/front-end/ConsoleView.js:
(WebInspector.ConsoleView.prototype.get statusBarItems):
(WebInspector.ConsoleView.prototype.addContext):
(WebInspector.ConsoleView.prototype.removeContext):
(WebInspector.ConsoleView.prototype._updateIsolatedWorldSelector):
(WebInspector.ConsoleView.prototype._appendIsolatedContextOption):
(WebInspector.ConsoleView.prototype._currentEvaluationContext):
(WebInspector.ConsoleView.prototype._currentIsolatedContextId):
* inspector/front-end/StatusBarButton.js:
(WebInspector.StatusBarComboBox):
(WebInspector.StatusBarComboBox.prototype.addOption):
(WebInspector.StatusBarComboBox.prototype.removeOption):
(WebInspector.StatusBarComboBox.prototype.removeOptions):
(WebInspector.StatusBarComboBox.prototype.selectedOption):
* inspector/front-end/inspector.css:
(.status-bar-select-container):
(select.status-bar-item):
(.console-context):

Modified Paths

Diff

Modified: trunk/LayoutTests/http/tests/inspector/console-cd-completions.html (122556 => 122557)


--- trunk/LayoutTests/http/tests/inspector/console-cd-completions.html	2012-07-13 10:01:38 UTC (rev 122556)
+++ trunk/LayoutTests/http/tests/inspector/console-cd-completions.html	2012-07-13 10:21:04 UTC (rev 122557)
@@ -7,7 +7,7 @@
 function test()
 {
     InspectorTest.showConsolePanel();
-    var selector = WebInspector.consoleView._contextSelectElement;
+    var selector = WebInspector.consoleView._contextSelector._selectElement;
     var option = selector.firstChild;
     while (option) {
         if (option.textContent && option.textContent.indexOf("myIFrame") === 0)

Modified: trunk/LayoutTests/http/tests/inspector/console-cd.html (122556 => 122557)


--- trunk/LayoutTests/http/tests/inspector/console-cd.html	2012-07-13 10:01:38 UTC (rev 122556)
+++ trunk/LayoutTests/http/tests/inspector/console-cd.html	2012-07-13 10:21:04 UTC (rev 122557)
@@ -8,7 +8,7 @@
 function test()
 {
     InspectorTest.showConsolePanel();
-    var selector = WebInspector.consoleView._contextSelectElement;
+    var selector = WebInspector.consoleView._contextSelector._selectElement;
     var option = selector.firstChild;
     while (option) {
         if (option.textContent && option.textContent.indexOf("myIFrame") === 0)

Modified: trunk/Source/WebCore/ChangeLog (122556 => 122557)


--- trunk/Source/WebCore/ChangeLog	2012-07-13 10:01:38 UTC (rev 122556)
+++ trunk/Source/WebCore/ChangeLog	2012-07-13 10:21:04 UTC (rev 122557)
@@ -1,3 +1,31 @@
+2012-07-12  Pavel Feldman  <[email protected]>
+
+        Web Inspector: mute the native looks of the selects in the console.
+        https://bugs.webkit.org/show_bug.cgi?id=91120
+
+        Reviewed by Vsevolod Vlasov.
+
+        This is necessary for Mac now that we don't use border images for select.
+
+        * inspector/front-end/ConsoleView.js:
+        (WebInspector.ConsoleView.prototype.get statusBarItems):
+        (WebInspector.ConsoleView.prototype.addContext):
+        (WebInspector.ConsoleView.prototype.removeContext):
+        (WebInspector.ConsoleView.prototype._updateIsolatedWorldSelector):
+        (WebInspector.ConsoleView.prototype._appendIsolatedContextOption):
+        (WebInspector.ConsoleView.prototype._currentEvaluationContext):
+        (WebInspector.ConsoleView.prototype._currentIsolatedContextId):
+        * inspector/front-end/StatusBarButton.js:
+        (WebInspector.StatusBarComboBox):
+        (WebInspector.StatusBarComboBox.prototype.addOption):
+        (WebInspector.StatusBarComboBox.prototype.removeOption):
+        (WebInspector.StatusBarComboBox.prototype.removeOptions):
+        (WebInspector.StatusBarComboBox.prototype.selectedOption):
+        * inspector/front-end/inspector.css:
+        (.status-bar-select-container):
+        (select.status-bar-item):
+        (.console-context):
+
 2012-07-13  Andrei Bucur  <[email protected]>
 
         [CSS Regions] Fix the lifecycle for the flow objects and their renderers

Modified: trunk/Source/WebCore/inspector/front-end/ConsoleView.js (122556 => 122557)


--- trunk/Source/WebCore/inspector/front-end/ConsoleView.js	2012-07-13 10:01:38 UTC (rev 122556)
+++ trunk/Source/WebCore/inspector/front-end/ConsoleView.js	2012-07-13 10:21:04 UTC (rev 122557)
@@ -44,18 +44,12 @@
     this._clearConsoleButton = new WebInspector.StatusBarButton(WebInspector.UIString("Clear console log."), "clear-status-bar-item");
     this._clearConsoleButton.addEventListener("click", this._requestClearMessages, this);
 
-    this._contextSelectElement = document.createElement("select");
-    this._contextSelectElement.id = "console-context";
-    this._contextSelectElement.className = "status-bar-item";
-    this._contextSelectElement.addEventListener("change", this._updateIsolatedWorldSelector.bind(this), false);
+    this._contextSelector = new WebInspector.StatusBarComboBox(this._updateIsolatedWorldSelector.bind(this), "console-context");
+    this._isolatedWorldSelector = new WebInspector.StatusBarComboBox(null, "console-context");
 
-    this._isolatedWorldSelectElement = document.createElement("select");
-    this._isolatedWorldSelectElement.id = "console-context";
-    this._isolatedWorldSelectElement.className = "status-bar-item";
-
     if (hideContextSelector) {
-        this._contextSelectElement.addStyleClass("hidden");
-        this._isolatedWorldSelectElement.addStyleClass("hidden");
+        this._contextSelector.element.addStyleClass("hidden");
+        this._isolatedWorldSelector.element.addStyleClass("hidden");
     }
 
     this.messagesElement = document.createElement("div");
@@ -134,7 +128,7 @@
 WebInspector.ConsoleView.prototype = {
     get statusBarItems()
     {
-        return [this._clearConsoleButton.element, this._contextSelectElement, this._isolatedWorldSelectElement, this._filterBarElement];
+        return [this._clearConsoleButton.element, this._contextSelector.element, this._isolatedWorldSelector.element, this._filterBarElement];
     },
 
     addContext: function(context)
@@ -144,7 +138,7 @@
         option.title = context.url;
         option._context = context;
         context._consoleOption = option;
-        this._contextSelectElement.appendChild(option);
+        this._contextSelector.addOption(option);
         context.addEventListener(WebInspector.FrameEvaluationContext.EventTypes.Updated, this._contextUpdated, this);
         context.addEventListener(WebInspector.FrameEvaluationContext.EventTypes.AddedExecutionContext, this._addedExecutionContext, this);
         this._updateIsolatedWorldSelector();
@@ -152,7 +146,7 @@
 
     removeContext: function(context)
     {
-        this._contextSelectElement.removeChild(context._consoleOption);
+        this._contextSelector.removeOption(context._consoleOption);
         this._updateIsolatedWorldSelector();
     },
 
@@ -160,17 +154,17 @@
     {
         var context = this._currentEvaluationContext();
         if (!context) {
-            this._isolatedWorldSelectElement.addStyleClass("hidden");
+            this._isolatedWorldSelector.element.addStyleClass("hidden");
             return;
         }
 
         var isolatedContexts = context.isolatedContexts();
         if (!isolatedContexts.length) {
-            this._isolatedWorldSelectElement.addStyleClass("hidden");
+            this._isolatedWorldSelector.element.addStyleClass("hidden");
             return;
         }
-        this._isolatedWorldSelectElement.removeStyleClass("hidden");
-        this._isolatedWorldSelectElement.removeChildren();
+        this._isolatedWorldSelector.element.removeStyleClass("hidden");
+        this._isolatedWorldSelector.removeOptions();
         this._appendIsolatedContextOption(context.mainWorldContext());
         for (var i = 0; i < isolatedContexts.length; i++)
             this._appendIsolatedContextOption(isolatedContexts[i]);
@@ -184,7 +178,7 @@
         option.text = isolatedContext.name;
         option.title = isolatedContext.id;
         option._executionContextId = isolatedContext.id;
-        this._isolatedWorldSelectElement.appendChild(option);
+        this._isolatedWorldSelector.addOption(option);
     },
 
     _contextUpdated: function(event)
@@ -215,18 +209,20 @@
 
     _currentEvaluationContext: function()
     {
-        if (this._contextSelectElement.selectedIndex === -1)
+        var option = this._contextSelector.selectedOption();
+        if (!option)
             return undefined;
-        return this._contextSelectElement[this._contextSelectElement.selectedIndex]._context;
+        return option._context;
     },
 
     _currentIsolatedContextId: function()
     {
-        if (this._isolatedWorldSelectElement.hasStyleClass("hidden"))
+        if (this._isolatedWorldSelector.element.hasStyleClass("hidden"))
             return undefined;
-        if (this._isolatedWorldSelectElement.selectedIndex === -1)
+        var option = this._isolatedWorldSelector.selectedOption();
+        if (!option)
             return undefined;
-        return this._isolatedWorldSelectElement[this._isolatedWorldSelectElement.selectedIndex]._executionContextId;
+        return option._executionContextId;
     },
 
     _updateFilter: function(e)

Modified: trunk/Source/WebCore/inspector/front-end/StatusBarButton.js (122556 => 122557)


--- trunk/Source/WebCore/inspector/front-end/StatusBarButton.js	2012-07-13 10:01:38 UTC (rev 122556)
+++ trunk/Source/WebCore/inspector/front-end/StatusBarButton.js	2012-07-13 10:21:04 UTC (rev 122557)
@@ -241,3 +241,53 @@
 }
 
 WebInspector.StatusBarButton.prototype.__proto__ = WebInspector.Object.prototype;
+
+/**
+ * @constructor
+ * @param {?function(Event)} changeHandler
+ * @param {string=} className
+ */
+WebInspector.StatusBarComboBox = function(changeHandler, className)
+{
+    this.element = document.createElement("span");
+    this.element.className = "status-bar-select-container";
+
+    this._selectElement = this.element.createChild("select", "status-bar-item");
+    if (changeHandler)
+        this._selectElement.addEventListener("change", changeHandler, false);
+    if (className)
+        this._selectElement.addStyleClass(className);
+}
+
+WebInspector.StatusBarComboBox.prototype = {
+    /**
+     * @param {Element} option
+     */
+    addOption: function(option)
+    {
+        this._selectElement.appendChild(option);
+    },
+
+    /**
+     * @param {Element} option
+     */
+    removeOption: function(option)
+    {
+        this._selectElement.removeChild(option);
+    },
+
+    removeOptions: function()
+    {
+        this._selectElement.removeChildren();
+    },
+
+    /**
+     * @return {?Element}
+     */
+    selectedOption: function()
+    {
+        if (this._selectElement.selectedIndex >= 0)
+            return this._selectElement[this._selectElement.selectedIndex];
+        return null;
+    }
+}

Modified: trunk/Source/WebCore/inspector/front-end/inspector.css (122556 => 122557)


--- trunk/Source/WebCore/inspector/front-end/inspector.css	2012-07-13 10:01:38 UTC (rev 122556)
+++ trunk/Source/WebCore/inspector/front-end/inspector.css	2012-07-13 10:21:04 UTC (rev 122557)
@@ -591,11 +591,28 @@
     background-color: auto;
 }
 
+.status-bar-select-container {
+    display: inline-block;
+    background-image: url(Images/disclosureTriangleSmallDown.png);
+    background-repeat: no-repeat;
+    background-position-x: right;
+    background-position-y: 6px;
+    padding-right: 10px;
+    border-right: 5px solid transparent;
+}
+
 select.status-bar-item {
     min-width: 48px;
     font-weight: bold;
     color: rgb(48, 48, 48);
     text-shadow: rgba(255, 255, 255, 0.75) 0 1px 0;
+    -webkit-appearance: none;
+    border: 0;
+    border-radius: 0;
+    padding: 0 15px 0 5px;
+    margin-right: -15px;
+    position: relative;
+    top: -1px;
 }
 
 select.status-bar-item, select.status-bar-item:hover {
@@ -2811,7 +2828,7 @@
     border-width: 0 0 11px 0;
 }
 
-#console-context {
+.console-context {
     max-width: 200px;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to