Commit ea15cdde authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Поправил баг http://bugzserver/show_bug.cgi?id=24221

При быстром вводе числа добавляем проценты в конце.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@56267 954022d7-b5bf-4e40-9824-e11837661b57
parent 2ec93664
...@@ -1880,7 +1880,19 @@ ...@@ -1880,7 +1880,19 @@
//t.setFocus(true); //t.setFocus(true);
t.isUpdateValue = false; t.isUpdateValue = false;
t._addChars(String.fromCharCode(event.which)); var tmpCursorPos;
var newChar = String.fromCharCode(event.which);
t._addChars(newChar);
// При первом быстром вводе стоит добавить в конце проценты (для процентного формата и только для числа)
if (t.options.isAddPersentFormat && isNumber(newChar)) {
t.options.isAddPersentFormat = false;
tmpCursorPos = t.cursorPos;
t.undoMode = true;
t._addChars("%");
t.cursorPos = tmpCursorPos;
t.undoMode = false;
t._updateCursorPosition();
}
if (t.textRender.getEndOfText() === t.cursorPos && !t.isFormula()) { if (t.textRender.getEndOfText() === t.cursorPos && !t.isFormula()) {
var s = t._getFragmentsText(t.options.fragments); var s = t._getFragmentsText(t.options.fragments);
if (!isNumber(s)) { if (!isNumber(s)) {
...@@ -1888,7 +1900,7 @@ ...@@ -1888,7 +1900,7 @@
var lengthInput = s.length; var lengthInput = s.length;
if (1 === arrAutoComplete.length) { if (1 === arrAutoComplete.length) {
var newValue = arrAutoComplete[0]; var newValue = arrAutoComplete[0];
var tmpCursorPos = t.cursorPos; tmpCursorPos = t.cursorPos;
t._addChars(newValue.substring(lengthInput)); t._addChars(newValue.substring(lengthInput));
t.selectionBegin = tmpCursorPos; t.selectionBegin = tmpCursorPos;
t._selectChars(kEndOfText); t._selectChars(kEndOfText);
......
...@@ -720,7 +720,8 @@ ...@@ -720,7 +720,8 @@
// Выставляем блокировку на выход из редактора по клавишам-стрелкам // Выставляем блокировку на выход из редактора по клавишам-стрелкам
t.strictClose = true; t.strictClose = true;
// При F2 выставляем фокус в редакторе // При F2 выставляем фокус в редакторе
t.handlers.trigger("editCell", 0, 0, /*isCoord*/false, /*isFocus*/true, /*isClearCell*/false, /*isHideCursor*/undefined); t.handlers.trigger("editCell", 0, 0, /*isCoord*/false, /*isFocus*/true, /*isClearCell*/false,
/*isHideCursor*/undefined, /*isQuickInput*/false);
return result; return result;
case 8: // backspace case 8: // backspace
...@@ -729,7 +730,7 @@ ...@@ -729,7 +730,7 @@
// При backspace фокус не в редакторе (стираем содержимое) // При backspace фокус не в редакторе (стираем содержимое)
t.handlers.trigger("editCell", 0, 0, /*isCoord*/false, /*isFocus*/false, /*isClearCell*/true, t.handlers.trigger("editCell", 0, 0, /*isCoord*/false, /*isFocus*/false, /*isClearCell*/true,
/*isHideCursor*/undefined, /*callback*/undefined, event); /*isHideCursor*/undefined, /*isQuickInput*/false, /*callback*/undefined, event);
return true; return true;
case 46: // Del case 46: // Del
...@@ -1037,7 +1038,7 @@ ...@@ -1037,7 +1038,7 @@
// При нажатии символа, фокус не ставим // При нажатии символа, фокус не ставим
// Очищаем содержимое ячейки // Очищаем содержимое ячейки
t.handlers.trigger("editCell", 0, 0, /*isCoord*/false, /*isFocus*/false, /*isClearCell*/true, t.handlers.trigger("editCell", 0, 0, /*isCoord*/false, /*isFocus*/false, /*isClearCell*/true,
/*isHideCursor*/undefined, /*callback*/undefined, event); /*isHideCursor*/undefined, /*isQuickInput*/true, /*callback*/undefined, event);
} }
return true; return true;
}; };
......
...@@ -941,11 +941,12 @@ ...@@ -941,11 +941,12 @@
// При dbl клике фокус выставляем в зависимости от наличия текста в ячейке // При dbl клике фокус выставляем в зависимости от наличия текста в ячейке
this._onEditCell (x, y, /*isCoord*/true, /*isFocus*/undefined, /*isClearCell*/undefined, this._onEditCell (x, y, /*isCoord*/true, /*isFocus*/undefined, /*isClearCell*/undefined,
/*isHideCursor*/isHideCursor); /*isHideCursor*/isHideCursor, /*isQuickInput*/false);
} }
}; };
WorkbookView.prototype._onEditCell = function (x, y, isCoord, isFocus, isClearCell, isHideCursor, callback, event) { WorkbookView.prototype._onEditCell = function (x, y, isCoord, isFocus, isClearCell, isHideCursor,
isQuickInput, callback, event) {
var t = this; var t = this;
// Проверка глобального лока // Проверка глобального лока
...@@ -961,7 +962,7 @@ ...@@ -961,7 +962,7 @@
ws.setCellEditMode(true); ws.setCellEditMode(true);
if (!ws.openCellEditor(t.cellEditor, x, y, isCoord, /*fragments*/undefined, if (!ws.openCellEditor(t.cellEditor, x, y, isCoord, /*fragments*/undefined,
/*cursorPos*/undefined, isFocus, isClearCell, /*cursorPos*/undefined, isFocus, isClearCell,
/*isHideCursor*/isHideCursor, /*activeRange*/arn)) { /*isHideCursor*/isHideCursor, /*isQuickInput*/isQuickInput, /*activeRange*/arn)) {
t.controller.setCellEditMode(false); t.controller.setCellEditMode(false);
t.controller.setStrictClose(false); t.controller.setStrictClose(false);
t.controller.setFormulaEditMode(false); t.controller.setFormulaEditMode(false);
......
...@@ -10305,7 +10305,7 @@ ...@@ -10305,7 +10305,7 @@
}; };
WorksheetView.prototype.openCellEditor = function (editor, x, y, isCoord, fragments, cursorPos, WorksheetView.prototype.openCellEditor = function (editor, x, y, isCoord, fragments, cursorPos,
isFocus, isClearCell, isHideCursor, activeRange) { isFocus, isClearCell, isHideCursor, isQuickInput, activeRange) {
var t = this, vr = t.visibleRange.clone(), tc = t.cols, tr = t.rows, col, row, c, fl, mc, bg, isMerged; var t = this, vr = t.visibleRange.clone(), tc = t.cols, tr = t.rows, col, row, c, fl, mc, bg, isMerged;
var offsetX = 0, offsetY = 0; var offsetX = 0, offsetY = 0;
var ar = t.activeRange; var ar = t.activeRange;
...@@ -10469,6 +10469,8 @@ ...@@ -10469,6 +10469,8 @@
focus: isFocus, focus: isFocus,
isClearCell: isClearCell, isClearCell: isClearCell,
isHideCursor: isHideCursor, isHideCursor: isHideCursor,
isQuickInput: isQuickInput,
isAddPersentFormat: isQuickInput && c_oAscNumFormatType.Percent === c.getNumFormat().getType(),
autoComplete: arrAutoComplete, autoComplete: arrAutoComplete,
autoCompleteLC: arrAutoCompleteLC, autoCompleteLC: arrAutoCompleteLC,
saveValueCallback: function (val, flags, skipNLCheck) { saveValueCallback: function (val, flags, skipNLCheck) {
...@@ -10494,8 +10496,9 @@ ...@@ -10494,8 +10496,9 @@
copyValue = []; copyValue = [];
copyValue[0] = new Fragment({text: text, format: v[0].format.clone()}); copyValue[0] = new Fragment({text: text, format: v[0].format.clone()});
var bSuccess = t.openCellEditor(editor, 0, 0, /*isCoord*/false, /*fragments*/undefined, /*cursorPos*/undefined, isFocus, /*isClearCell*/true, var bSuccess = t.openCellEditor(editor, 0, 0, /*isCoord*/false, /*fragments*/undefined,
/*isHideCursor*/false, activeRange); /*cursorPos*/undefined, isFocus, /*isClearCell*/true, /*isHideCursor*/false,
/*isQuickInput*/false, activeRange);
if (bSuccess) { if (bSuccess) {
editor.paste(copyValue, cursorPos); editor.paste(copyValue, cursorPos);
} }
......
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