Add percentage sign to cell automatically.

Signed-off-by: Gülşah Köse <gulsah.kose@collabora.com>
Change-Id: I422f63c6d3963bdf125fc00e7dafc4428883c7ce
This commit is contained in:
Gülşah Köse 2022-10-07 12:13:38 +03:00 committed by pedropintosilva
parent bded36d222
commit 38abc5ca91

View file

@ -79,6 +79,21 @@ L.TextInput = L.Layer.extend({
'?': [ 63, 0, 0, 4287 ],
'_': [ 95, 0, 0, 5384 ]
};
// unoKeyCode values of the digits.
this._unoKeyMap = {
'48': 96, // 0
'49': 97, // 1
'50': 98, // 2
'51': 99, // 3
'52': 100, // 4
'53': 101, // 5
'54': 102, // 6
'55': 103, // 7
'56': 104, // 8
'57': 105 // 9
};
},
onAdd: function() {
@ -563,6 +578,12 @@ L.TextInput = L.Layer.extend({
this._lastContent = oldContent;
},
_isDigit: function(asciiChar) {
if (asciiChar >= 48 && asciiChar <= 57)
return true;
return false;
},
// Fired when text has been inputed, *during* and after composing/spellchecking
_onInput: function(ev) {
if (this._map.uiManager.isUIBlocked())
@ -680,7 +701,15 @@ L.TextInput = L.Layer.extend({
this._lastContent = content;
if (newText.length > 0) {
this._sendText(this.codePointsToString(newText));
// When the cell formatted as percent, to trig percentage sign addition
// automatically we send the first digit character as KeyEvent.
if (this._map.getDocType() === 'spreadsheet' &&
content.length === 1 && ev.inputType === 'insertText' &&
this._isDigit(newText)) {
this._sendKeyEvent(newText, this._unoKeyMap[newText], 'input');
}
else
this._sendText(this.codePointsToString(newText));
}
// was a 'delete' and we need to reset world.