Commit 29cfab10 authored by Alexander.Trofimov's avatar Alexander.Trofimov

fix bug with enter in cell

- f2
- enter =NOW(
- go to formula bar
- enter )
- value in cell not updated
parent c0b5840a
...@@ -155,7 +155,6 @@ ...@@ -155,7 +155,6 @@
this.callTopLineMouseup = false; this.callTopLineMouseup = false;
this.lastKeyCode = undefined; this.lastKeyCode = undefined;
this.m_nEditorState = c_oAscCellEditorState.editEnd; // Состояние редактора this.m_nEditorState = c_oAscCellEditorState.editEnd; // Состояние редактора
this.isUpdateValue = true; // Обновлять ли состояние строки при вводе в TextArea
// Функции, которые будем отключать // Функции, которые будем отключать
this.fKeyMouseUp = null; this.fKeyMouseUp = null;
...@@ -2503,17 +2502,17 @@ ...@@ -2503,17 +2502,17 @@
}; };
/** @param event {KeyboardEvent} */ /** @param event {KeyboardEvent} */
CellEditor.prototype._onWindowKeyPress = function ( event ) { CellEditor.prototype._onWindowKeyPress = function (event) {
var t = this; var t = this;
var ctrlKey = event.metaKey || event.ctrlKey; var ctrlKey = event.metaKey || event.ctrlKey;
if ( !window['IS_NATIVE_EDITOR'] ) { if (!window['IS_NATIVE_EDITOR']) {
if ( !t.isOpened || !t.enableKeyEvents ) { if (!t.isOpened || !t.enableKeyEvents) {
return true; return true;
} }
if ( t.skipKeyPress || event.which < 32 || event.altKey || ctrlKey ) { if (t.skipKeyPress || event.which < 32 || event.altKey || ctrlKey) {
t.skipKeyPress = true; t.skipKeyPress = true;
return true; return true;
} }
...@@ -2522,44 +2521,42 @@ ...@@ -2522,44 +2521,42 @@
//if (t.handlers.trigger("isGlobalLockEditCell")) //if (t.handlers.trigger("isGlobalLockEditCell"))
// return true; // return true;
if ( !t.hasFocus ) { if (!t.hasFocus) {
t.setFocus( true ); t.setFocus(true);
} }
// определение ввода иероглифов // определение ввода иероглифов
if ( t.isTopLineActive && t._getFragmentsLength( t.options.fragments ) !== t.input.value.length ) { if (t.isTopLineActive && t._getFragmentsLength(t.options.fragments) !== t.input.value.length) {
t._syncEditors(); t._syncEditors();
} }
//t.setFocus(true); //t.setFocus(true);
} }
t.isUpdateValue = false;
var tmpCursorPos; var tmpCursorPos;
var newChar = String.fromCharCode( event.which ); var newChar = String.fromCharCode(event.which);
t._addChars( newChar ); t._addChars(newChar);
// При первом быстром вводе стоит добавить в конце проценты (для процентного формата и только для числа) // При первом быстром вводе стоит добавить в конце проценты (для процентного формата и только для числа)
if ( t.options.isAddPersentFormat && AscCommon.isNumber( newChar ) ) { if (t.options.isAddPersentFormat && AscCommon.isNumber(newChar)) {
t.options.isAddPersentFormat = false; t.options.isAddPersentFormat = false;
tmpCursorPos = t.cursorPos; tmpCursorPos = t.cursorPos;
t.undoMode = true; t.undoMode = true;
t._addChars( "%" ); t._addChars("%");
t.cursorPos = tmpCursorPos; t.cursorPos = tmpCursorPos;
t.undoMode = false; t.undoMode = false;
t._updateCursorPosition(); 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 ( !AscCommon.isNumber( s ) ) { if (!AscCommon.isNumber(s)) {
var arrAutoComplete = t._getAutoComplete( s.toLowerCase() ); var arrAutoComplete = t._getAutoComplete(s.toLowerCase());
var lengthInput = s.length; var lengthInput = s.length;
if ( 1 === arrAutoComplete.length ) { if (1 === arrAutoComplete.length) {
var newValue = arrAutoComplete[0]; var newValue = arrAutoComplete[0];
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);
} }
} }
} }
...@@ -2664,17 +2661,12 @@ ...@@ -2664,17 +2661,12 @@
}; };
/** @param event {jQuery.Event} */ /** @param event {jQuery.Event} */
CellEditor.prototype._onInputTextArea = function ( event ) { CellEditor.prototype._onInputTextArea = function (event) {
if ( this.handlers.trigger( "isViewerMode" ) ) { if (this.handlers.trigger("isViewerMode")) {
return true; return true;
} }
this.skipTLUpdate = true;
if ( this.isUpdateValue ) { this.replaceText(0, this.textRender.getEndOfLine(this.cursorPos), this.input.value);
// Для языков с иероглифами не приходят эвенты с клавиатуры, поэтому обработаем здесь
this.skipTLUpdate = true;
this.replaceText( 0, this.textRender.getEndOfLine( this.cursorPos ), this.input.value );
}
this.isUpdateValue = true;
return true; return true;
}; };
......
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