Merge pull request #1261 from LivelyKernel/fix-onPaste-command-multiselect

Fix onPaste when it is used in a command and multiselect is active
This commit is contained in:
nightwing 2013-02-21 11:04:10 +04:00
commit f7e17a7c38
2 changed files with 43 additions and 25 deletions

View file

@ -523,7 +523,7 @@ var Editor = require("./editor").Editor;
return; return;
this._emit("paste", text); this._emit("paste", text);
if (!this.inMultiSelectMode) if (!this.inMultiSelectMode || this.inVirtualSelectionMode)
return this.insert(text); return this.insert(text);
var lines = text.split(/\r\n|\r|\n/); var lines = text.split(/\r\n|\r|\n/);

View file

@ -42,7 +42,7 @@ var Range = require("./range").Range;
var assert = require("./test/assertions"); var assert = require("./test/assertions");
var MultiSelect = require("./multi_select").MultiSelect; var MultiSelect = require("./multi_select").MultiSelect;
var editor var editor;
var exec = function(name, times, args) { var exec = function(name, times, args) {
do { do {
editor.commands.exec(name, editor, args); editor.commands.exec(name, editor, args);
@ -153,6 +153,24 @@ module.exports = {
var range4 = new Range(0, 0, 4, 0); var range4 = new Range(0, 0, 4, 0);
selection.addRange(range4); selection.addRange(range4);
assert.ok(!editor.inMultiSelectMode); assert.ok(!editor.inMultiSelectMode);
},
"test: onPaste in command with multiselect": function() {
var doc = new EditSession(["l1", "l2"]);
editor = new Editor(new MockRenderer(), doc);
MultiSelect(editor);
editor.commands.addCommand({
name: 'insertfoo',
exec: function(ed) { ed.onPaste('foo'); },
multiSelectAction: "forEach"
});
var selection = editor.selection;
var range1 = new Range(0,2,0,2);
var range2 = new Range(1,2,1,2);
selection.fromOrientedRange(range1)
selection.addRange(range2);
editor.execCommand('insertfoo');
assert.equal('l1foo\nl2foo', editor.getValue());
} }
}; };