Title: [158791] branches/safari-537.73-branch/Source/WebInspectorUI

Diff

Modified: branches/safari-537.73-branch/Source/WebInspectorUI/ChangeLog (158790 => 158791)


--- branches/safari-537.73-branch/Source/WebInspectorUI/ChangeLog	2013-11-06 22:29:17 UTC (rev 158790)
+++ branches/safari-537.73-branch/Source/WebInspectorUI/ChangeLog	2013-11-06 22:31:38 UTC (rev 158791)
@@ -1,3 +1,36 @@
+2013-11-06  Lucas Forschler  <[email protected]>
+
+        Merge r154550
+
+    2013-08-24  Joseph Pecoraro  <[email protected]>
+
+            Web Inspector: Breakpoints in the editors gutter should have a contextmenu
+            https://bugs.webkit.org/show_bug.cgi?id=120169
+
+            Reviewed by Timothy Hatcher.
+
+            Updated CodeMirror now has a gutterContextMenu event. Use that to give
+            breakpoint related context menus. Add, Edit, Enable/Disable, Delete, and
+            Reveal in Debugger Navigation Sidebar.
+
+            * Localizations/en.lproj/localizedStrings.js:
+            "Add Breakpoint", and "Reveal in Debugger Navigation Sidebar".
+
+            * UserInterface/SourceCodeTextEditor.js:
+            (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu.addBreakpoint):
+            (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu.revealInSidebar):
+            (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu.removeBreakpoints):
+            (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu.toggleBreakpoints):
+            (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
+            Show a context menu when clicking on the gutter for 0 breakpoints,
+            1 breakpoint, or >1 breakpoints. The only tricky handler is addBreakpoint,
+            since that must update the TextEditor for the new breakpoint info.
+
+            * UserInterface/TextEditor.js:
+            (WebInspector.TextEditor):
+            (WebInspector.TextEditor.prototype._gutterContextMenu):
+            Send to delegate if the delegate implements textEditorGutterContextMenu.
+
 2013-11-04  Lucas Forschler  <[email protected]>
 
         Merge fixes for <rdar://problem/15168240>

Modified: branches/safari-537.73-branch/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (158790 => 158791)


--- branches/safari-537.73-branch/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js	2013-11-06 22:29:17 UTC (rev 158790)
+++ branches/safari-537.73-branch/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js	2013-11-06 22:31:38 UTC (rev 158791)
@@ -30,6 +30,7 @@
 localizedStrings["999+"] = "999+";
 localizedStrings["Activity Viewer"] = "Activity Viewer";
 localizedStrings["Add Attribute"] = "Add Attribute";
+localizedStrings["Add Breakpoint"] = "Add Breakpoint";
 localizedStrings["Add New"] = "Add New";
 localizedStrings["All"] = "All";
 localizedStrings["All Exceptions"] = "All Exceptions";
@@ -296,6 +297,7 @@
 localizedStrings["Response"] = "Response";
 localizedStrings["Response Headers"] = "Response Headers";
 localizedStrings["Reveal in DOM Tree"] = "Reveal in DOM Tree";
+localizedStrings["Reveal in Debugger Navigation Sidebar"] = "Reveal in Debugger Navigation Sidebar";
 localizedStrings["Reveal in Original Resource"] = "Reveal in Original Resource";
 localizedStrings["Rules"] = "Rules";
 localizedStrings["Run %d"] = "Run %d";

Modified: branches/safari-537.73-branch/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js (158790 => 158791)


--- branches/safari-537.73-branch/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js	2013-11-06 22:29:17 UTC (rev 158790)
+++ branches/safari-537.73-branch/Source/WebInspectorUI/UserInterface/SourceCodeTextEditor.js	2013-11-06 22:31:38 UTC (rev 158791)
@@ -676,6 +676,88 @@
         return lineNumber in this._invalidLineNumbers;
     },
 
+    textEditorGutterContextMenu: function(textEditor, lineNumber, columnNumber, editorBreakpoints, event)
+    {
+        if (!this._supportsDebugging)
+            return;
+
+        event.preventDefault();
+
+        var breakpoints = [];
+        for (var i = 0; i < editorBreakpoints.length; ++i) {
+            var lineInfo = editorBreakpoints[i];
+            var breakpoint = this._breakpointForEditorLineInfo(lineInfo);
+            console.assert(breakpoint);
+            if (breakpoint)
+                breakpoints.push(breakpoint);
+        }
+
+        // No breakpoints.
+        if (!breakpoints.length) {
+            function addBreakpoint()
+            {
+                var data = "" lineNumber, columnNumber);
+                this.setBreakpointInfoForLineAndColumn(data.lineNumber, data.columnNumber, data.breakpointInfo);
+            }
+
+            var contextMenu = new WebInspector.ContextMenu(event);
+            contextMenu.appendItem(WebInspector.UIString("Add Breakpoint"), addBreakpoint.bind(this));
+            contextMenu.show();
+            return;
+        }
+
+        // Single breakpoint.
+        if (breakpoints.length === 1) {
+            var breakpoint = breakpoints[0];
+            function revealInSidebar()
+            {
+                WebInspector.debuggerSidebarPanel.show();
+                var treeElement = WebInspector.debuggerSidebarPanel.treeElementForRepresentedObject(breakpoint);
+                if (treeElement)
+                    treeElement.revealAndSelect();
+            }
+
+            var contextMenu = new WebInspector.ContextMenu(event);
+            breakpoint.appendContextMenuItems(contextMenu, event.target);
+            contextMenu.appendSeparator();
+            contextMenu.appendItem(WebInspector.UIString("Reveal in Debugger Navigation Sidebar"), revealInSidebar);
+            contextMenu.show();
+            return;
+        }
+
+        // Multiple breakpoints.
+        var shouldDisable = false;
+        for (var i = 0; i < breakpoints.length; ++i) {
+            if (!breakpoints[i].disabled) {
+                shouldDisable = true;
+                break;
+            }
+        }
+
+        function removeBreakpoints()
+        {
+            for (var i = 0; i < breakpoints.length; ++i) {
+                var breakpoint = breakpoints[i];
+                if (WebInspector.debuggerManager.isBreakpointRemovable(breakpoint))
+                    WebInspector.debuggerManager.removeBreakpoint(breakpoint);
+            }
+        }
+
+        function toggleBreakpoints()
+        {
+            for (var i = 0; i < breakpoints.length; ++i)
+                breakpoints[i].disabled = shouldDisable;
+        }
+
+        var contextMenu = new WebInspector.ContextMenu(event);
+        if (shouldDisable)
+            contextMenu.appendItem(WebInspector.UIString("Disable Breakpoints"), toggleBreakpoints.bind(this));
+        else
+            contextMenu.appendItem(WebInspector.UIString("Enable Breakpoints"), toggleBreakpoints.bind(this));
+        contextMenu.appendItem(WebInspector.UIString("Delete Breakpoints"), removeBreakpoints.bind(this));
+        contextMenu.show();
+    },
+
     textEditorBreakpointAdded: function(textEditor, lineNumber, columnNumber)
     {
         if (!this._supportsDebugging)

Modified: branches/safari-537.73-branch/Source/WebInspectorUI/UserInterface/TextEditor.js (158790 => 158791)


--- branches/safari-537.73-branch/Source/WebInspectorUI/UserInterface/TextEditor.js	2013-11-06 22:29:17 UTC (rev 158790)
+++ branches/safari-537.73-branch/Source/WebInspectorUI/UserInterface/TextEditor.js	2013-11-06 22:31:38 UTC (rev 158791)
@@ -46,6 +46,7 @@
 
     this._codeMirror.on("change", this._contentChanged.bind(this));
     this._codeMirror.on("gutterClick", this._gutterMouseDown.bind(this));
+    this._codeMirror.on("gutterContextMenu", this._gutterContextMenu.bind(this));
     this._codeMirror.getScrollerElement().addEventListener("click", this._openClickedLinks.bind(this), true);
 
     this._completionController = new WebInspector.CodeMirrorCompletionController(this._codeMirror, this);
@@ -967,6 +968,17 @@
         document.addEventListener("mouseup", this._documentMouseUpEventListener, true);
     },
 
+    _gutterContextMenu: function(codeMirror, lineNumber, gutterElement, event)
+    {
+        if (this._delegate && typeof this._delegate.textEditorGutterContextMenu === "function") {
+            var breakpoints = [];
+            for (var columnNumber in this._breakpoints[lineNumber])
+                breakpoints.push({lineNumber:lineNumber, columnNumber:columnNumber});
+
+            this._delegate.textEditorGutterContextMenu(this, lineNumber, 0, breakpoints, event);
+        }
+    },
+
     _documentMouseMoved: function(event)
     {
         console.assert("_lineNumberWithMousedDownBreakpoint" in this);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to