Modified: trunk/Source/WebCore/inspector/front-end/DefaultTextEditor.js (134386 => 134387)
--- trunk/Source/WebCore/inspector/front-end/DefaultTextEditor.js 2012-11-13 09:15:35 UTC (rev 134386)
+++ trunk/Source/WebCore/inspector/front-end/DefaultTextEditor.js 2012-11-13 09:29:17 UTC (rev 134387)
@@ -56,14 +56,11 @@
this._textModel = new WebInspector.TextEditorModel();
this._textModel.addEventListener(WebInspector.TextEditorModel.Events.TextChanged, this._textChanged, this);
- this._textModel.resetUndoStack();
- var enterTextChangeMode = this._enterInternalTextChangeMode.bind(this);
- var exitTextChangeMode = this._exitInternalTextChangeMode.bind(this);
var syncScrollListener = this._syncScroll.bind(this);
var syncDecorationsForLineListener = this._syncDecorationsForLine.bind(this);
var syncLineHeightListener = this._syncLineHeight.bind(this);
- this._mainPanel = new WebInspector.TextEditorMainPanel(this._delegate, this._textModel, url, syncScrollListener, syncDecorationsForLineListener, enterTextChangeMode, exitTextChangeMode);
+ this._mainPanel = new WebInspector.TextEditorMainPanel(this._delegate, this._textModel, url, syncScrollListener, syncDecorationsForLineListener);
this._gutterPanel = new WebInspector.TextEditorGutterPanel(this._textModel, syncDecorationsForLineListener, syncLineHeightListener);
this._mainPanel.element.addEventListener("scroll", this._handleScrollChanged.bind(this), false);
@@ -130,14 +127,6 @@
},
/**
- * @return {WebInspector.TextEditorModel}
- */
- get textModel()
- {
- return this._textModel;
- },
-
- /**
* @return {Element}
*/
defaultFocusedElement: function()
@@ -306,11 +295,11 @@
_textChanged: function(event)
{
- if (!this._internalTextChangeMode)
- this._textModel.resetUndoStack();
this._mainPanel.textChanged(event.data.oldRange, event.data.newRange);
this._gutterPanel.textChanged(event.data.oldRange, event.data.newRange);
this._updatePanelOffsets();
+ if (event.data.editRange)
+ this._delegate.onTextChanged(event.data.oldRange, event.data.newRange);
},
/**
@@ -320,27 +309,9 @@
*/
editRange: function(range, text)
{
- this._enterInternalTextChangeMode();
- var newRange = this._textModel.editRange(range, text);
- this._exitInternalTextChangeMode(range, newRange);
- return newRange;
+ return this._textModel.editRange(range, text);
},
- _enterInternalTextChangeMode: function()
- {
- this._internalTextChangeMode = true;
- },
-
- /**
- * @param {WebInspector.TextRange} oldRange
- * @param {WebInspector.TextRange} newRange
- */
- _exitInternalTextChangeMode: function(oldRange, newRange)
- {
- this._internalTextChangeMode = false;
- this._delegate.onTextChanged(oldRange, newRange);
- },
-
_updatePanelOffsets: function()
{
var lineNumbersWidth = this._gutterPanel.element.offsetWidth;
@@ -618,14 +589,6 @@
WebInspector.TextEditorChunkedPanel.prototype = {
/**
- * @return {WebInspector.TextEditorModel}
- */
- get textModel()
- {
- return this._textModel;
- },
-
- /**
* @param {number} lineNumber
*/
scrollToLine: function(lineNumber)
@@ -1238,15 +1201,13 @@
* @param {WebInspector.TextEditorModel} textModel
* @param {?string} url
*/
-WebInspector.TextEditorMainPanel = function(delegate, textModel, url, syncScrollListener, syncDecorationsForLineListener, enterTextChangeMode, exitTextChangeMode)
+WebInspector.TextEditorMainPanel = function(delegate, textModel, url, syncScrollListener, syncDecorationsForLineListener)
{
WebInspector.TextEditorChunkedPanel.call(this, textModel);
this._delegate = delegate;
this._syncScrollListener = syncScrollListener;
this._syncDecorationsForLineListener = syncDecorationsForLineListener;
- this._enterTextChangeMode = enterTextChangeMode;
- this._exitTextChangeMode = exitTextChangeMode;
this._url = url;
this._highlighter = new WebInspector.TextEditorHighlighter(textModel, this._highlightDataReady.bind(this));
@@ -1428,18 +1389,8 @@
this.beginUpdates();
- function before()
- {
- this._enterTextChangeMode();
- }
+ var range = redo ? this._textModel.redo() : this._textModel.undo();
- function after(oldRange, newRange)
- {
- this._exitTextChangeMode(oldRange, newRange);
- }
-
- var range = redo ? this._textModel.redo(before.bind(this), after.bind(this)) : this._textModel.undo(before.bind(this), after.bind(this));
-
this.endUpdates();
// Restore location post-repaint.
@@ -1464,7 +1415,6 @@
var range = selection.normalize();
this.beginUpdates();
- this._enterTextChangeMode();
var newRange;
var rangeWasEmpty = range.isEmpty();
@@ -1477,7 +1427,6 @@
newRange = this._textModel.indentLines(range);
}
- this._exitTextChangeMode(range, newRange);
this.endUpdates();
if (rangeWasEmpty)
newRange.startColumn = newRange.endColumn;
@@ -1511,7 +1460,6 @@
return false;
this.beginUpdates();
- this._enterTextChangeMode();
var lineBreak = this._textModel.lineBreak;
var newRange;
@@ -1527,7 +1475,6 @@
} else
newRange = this._textModel.editRange(range, lineBreak + indent);
- this._exitTextChangeMode(range, newRange);
this.endUpdates();
this._restoreSelection(newRange.collapseToEnd(), true);
@@ -2214,15 +2161,10 @@
if (lines.length === 1 && lines[0] === "}" && oldRange.isEmpty() && selection.isEmpty() && !this._textModel.line(oldRange.endLine).trim())
this._unindentAfterBlock(oldRange, selection);
- // This is a "foreign" call outside of this class. Should be before we delete the dirty lines flag.
- this._enterTextChangeMode();
-
- var newRange = this._textModel.editRange(oldRange, newContent);
-
+ this._textModel.editRange(oldRange, newContent);
this._paintScheduledLines(true);
this._restoreSelection(selection);
- this._exitTextChangeMode(oldRange, newRange);
},
/**
Modified: trunk/Source/WebCore/inspector/front-end/TextEditorModel.js (134386 => 134387)
--- trunk/Source/WebCore/inspector/front-end/TextEditorModel.js 2012-11-13 09:15:35 UTC (rev 134386)
+++ trunk/Source/WebCore/inspector/front-end/TextEditorModel.js 2012-11-13 09:29:17 UTC (rev 134387)
@@ -225,6 +225,7 @@
*/
setText: function(text)
{
+ this._resetUndoStack();
text = text || "";
var range = this.range();
this._lineBreak = /\r\n/.test(text) ? "\r\n" : "\n";
@@ -258,7 +259,7 @@
var newRange = this._innerSetText(range, text);
this._lastEditedRange = newRange;
this._pushUndoableCommand(newRange, originalText);
- this.dispatchEventToListeners(WebInspector.TextEditorModel.Events.TextChanged, { oldRange: range, newRange: newRange });
+ this.dispatchEventToListeners(WebInspector.TextEditorModel.Events.TextChanged, { oldRange: range, newRange: newRange, editRange: true });
return newRange;
},
@@ -463,11 +464,9 @@
},
/**
- * @param {function()=} beforeCallback
- * @param {function(WebInspector.TextRange, WebInspector.TextRange)=} afterCallback
* @return {?WebInspector.TextRange}
*/
- undo: function(beforeCallback, afterCallback)
+ undo: function()
{
if (!this._undoStack.length)
return null;
@@ -475,25 +474,23 @@
this._markRedoableState();
this._inUndo = true;
- var range = this._doUndo(this._undoStack, beforeCallback, afterCallback);
+ var range = this._doUndo(this._undoStack);
delete this._inUndo;
return range;
},
/**
- * @param {function()=} beforeCallback
- * @param {function(WebInspector.TextRange, WebInspector.TextRange)=} afterCallback
* @return {WebInspector.TextRange}
*/
- redo: function(beforeCallback, afterCallback)
+ redo: function()
{
if (!this._redoStack || !this._redoStack.length)
return null;
this._markUndoableState();
this._inRedo = true;
- var range = this._doUndo(this._redoStack, beforeCallback, afterCallback);
+ var range = this._doUndo(this._redoStack);
delete this._inRedo;
return range;
@@ -501,25 +498,15 @@
/**
* @param {Array.<WebInspector.TextEditorCommand>} stack
- * @param {function()=} beforeCallback
- * @param {function(WebInspector.TextRange, WebInspector.TextRange)=} afterCallback
* @return {WebInspector.TextRange}
*/
- _doUndo: function(stack, beforeCallback, afterCallback)
+ _doUndo: function(stack)
{
var range = null;
for (var i = stack.length - 1; i >= 0; --i) {
var command = stack[i];
stack.length = i;
-
- if (beforeCallback)
- beforeCallback();
-
range = this._innerEditRange(command.newRange, command.originalText);
-
- if (afterCallback)
- afterCallback(command.newRange, range);
-
if (i > 0 && stack[i - 1].explicit)
return range;
}
@@ -538,7 +525,7 @@
this._redoStack[this._redoStack.length - 1].explicit = true;
},
- resetUndoStack: function()
+ _resetUndoStack: function()
{
this._undoStack = [];
},