Commit ad65cbf3 authored by Alexander.Trofimov's avatar Alexander.Trofimov

Учет удаляемых символов для bug #29043

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@61996 954022d7-b5bf-4e40-9824-e11837661b57
parent fb50c607
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
* Author: Dmitry.Sokolov@avsmedia.net * Author: Dmitry.Sokolov@avsmedia.net
* Date: May 30, 2012 * Date: May 30, 2012
*/ */
( /** (
/**
* @param {jQuery} $ * @param {jQuery} $
* @param {Window} window * @param {Window} window
* @param {undefined} undefined * @param {undefined} undefined
...@@ -517,9 +518,7 @@ ...@@ -517,9 +518,7 @@
var length = text.length; var length = text.length;
if (!(length > 0)) {return;} if (!(length > 0)) {return;}
// Ограничение на ввод (ToDo учитывать удаляемые символы) if (!this._checkMaxCellLength(length)) {return;}
if (this._getFragmentsLength(this.options.fragments) + length > c_oAscMaxCellOrCommentLength)
return false;
var wrap = text.indexOf("\n") >= 0; var wrap = text.indexOf("\n") >= 0;
if (this.selectionBegin !== this.selectionEnd) if (this.selectionBegin !== this.selectionEnd)
...@@ -558,9 +557,7 @@ ...@@ -558,9 +557,7 @@
CellEditor.prototype.paste = function (fragments, cursorPos) { CellEditor.prototype.paste = function (fragments, cursorPos) {
if (!(fragments.length > 0)) {return;} if (!(fragments.length > 0)) {return;}
var length = this._getFragmentsLength(fragments); var length = this._getFragmentsLength(fragments);
// Ограничение на ввод (ToDo учитывать удаляемые символы) if (!this._checkMaxCellLength(length)) {return;}
if (this._getFragmentsLength(this.options.fragments) + length > c_oAscMaxCellOrCommentLength)
return false;
var wrap = fragments.some(function(val){return val.text.indexOf("\n")>=0;}); var wrap = fragments.some(function(val){return val.text.indexOf("\n")>=0;});
...@@ -619,9 +616,9 @@ ...@@ -619,9 +616,9 @@
this.skipTLUpdate = false; this.skipTLUpdate = false;
// Вставим форумулу в текущую позицию // Вставим форумулу в текущую позицию
this._addChars (functionName); this._addChars(functionName);
// Меняем позицию курсора внутрь скобок // Меняем позицию курсора внутрь скобок
this._moveCursor (kPosition, this.cursorPos - 1); this._moveCursor(kPosition, this.cursorPos - 1);
}; };
CellEditor.prototype.replaceText = function (pos, len, newText) { CellEditor.prototype.replaceText = function (pos, len, newText) {
...@@ -1297,9 +1294,7 @@ ...@@ -1297,9 +1294,7 @@
CellEditor.prototype._addChars = function (str, pos, isRange) { CellEditor.prototype._addChars = function (str, pos, isRange) {
var opt = this.options, f, l, s, length = str.length; var opt = this.options, f, l, s, length = str.length;
// Ограничение на ввод (ToDo учитывать удаляемые символы) if (!this._checkMaxCellLength(length)) {return false;}
if (this._getFragmentsLength(this.options.fragments) + length > c_oAscMaxCellOrCommentLength)
return false;
if (this.selectionBegin !== this.selectionEnd) {this._removeChars(undefined, undefined, isRange);} if (this.selectionBegin !== this.selectionEnd) {this._removeChars(undefined, undefined, isRange);}
...@@ -1692,6 +1687,21 @@ ...@@ -1692,6 +1687,21 @@
this.handlers.trigger("updateEditorSelectionInfo", result); this.handlers.trigger("updateEditorSelectionInfo", result);
}; };
CellEditor.prototype._checkMaxCellLength = function (length) {
var newLength = this._getFragmentsLength(this.options.fragments) + length;
// Ограничение на ввод
if (newLength > c_oAscMaxCellOrCommentLength) {
if (this.selectionBegin === this.selectionEnd)
return false;
var b = Math.min(this.selectionBegin, this.selectionEnd);
var e = Math.max(this.selectionBegin, this.selectionEnd);
if (newLength - this._getFragmentsLength(this._getFragments(b, e - b)) > c_oAscMaxCellOrCommentLength)
return false;
}
return true;
};
// Event handlers // Event handlers
/** @param event {KeyboardEvent} */ /** @param event {KeyboardEvent} */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment