Recent langs: fix selecting current item

This commit is contained in:
Julia.Radzhabova
2025-06-04 23:18:40 +03:00
parent 76a1b746fc
commit b70efc7f10
6 changed files with 22 additions and 13 deletions

View File

@ -931,12 +931,10 @@ define([
this.loadRecent();
Common.UI.ComboBox.prototype.onBeforeShowMenu.apply(this, arguments);
if (this._selectedItem && this._selectedItem.get('isRecent')) {
if (this._selectedItem) {// reselect item as the recent can be changed
let obj,
record = this.store.where((obj={}, obj[this.valueField]=this._selectedItem.get(this.valueField), obj));
if (record && record.length) {
this.selectRecord(record[record.length - 1]);
}
record = this.store.findWhere((obj={}, obj[this.valueField]=this._selectedItem.get(this.valueField), obj));
record && this.selectRecord(record);
}
},

View File

@ -1306,6 +1306,8 @@ define([
if (!this.recentArr) {
this.recentArr = [];
}
var checkedItem = _.findWhere(this.items, {checked: true});
this.clearRecent();
var me = this,
@ -1319,6 +1321,12 @@ define([
mnu && me.addItemToRecent(mnu, true, 0);
});
this.recentArr = arr;
if (checkedItem) {
let obj,
index = _.findIndex(me.items, (obj={}, obj[me.recent.valueField]=checkedItem[me.recent.valueField], obj));
(index>-1) && me.setChecked(index, true, true);
}
}
},
@ -1377,11 +1385,12 @@ define([
onInsertRecentItem: function(item, index) {
if (!this.cmpEl) return;
var el = this.cmpEl.find('> li').eq(index || 0);
el.before(_.template('<li><%= itemTemplate(item) %></li>')({
var el = $(_.template('<li><%= itemTemplate(item) %></li>')({
itemTemplate: this.itemTemplate,
item: item
}));
this.cmpEl.find('> li').eq(index || 0).before(el);
el && (item.el = el.find('> a'));
},
onRemoveRecentItem: function(item) {

View File

@ -237,7 +237,7 @@ define([
if (this._currLang.id===null || this._currLang.id===undefined) {
menu.clearAll();
} else {
var index = _.findLastIndex(menu.items, {langid: this._currLang.id});
var index = _.findIndex(menu.items, {langid: this._currLang.id});
(index>-1) && !menu.items[index].checked && menu.setChecked(index, true);
}
},

View File

@ -408,7 +408,6 @@ define([
value : item['value'],
code : item['code'],
checkable : true,
checked : saved == item['displayValue'],
spellcheck : item['spellcheck']
});
});
@ -420,6 +419,8 @@ define([
});
this.langMenu.resetItems(arr);
if (this.langMenu.items.length>0) {
var index = _.findIndex(this.langMenu.items, {caption: saved});
(index>-1) && this.langMenu.setChecked(index, true);
var isProtected = this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly;
this.btnLanguage.setDisabled(this._isDisabled || !!this.mode.isDisconnected || isProtected);
}
@ -430,7 +431,7 @@ define([
this.btnLanguage.setCaption(info.displayValue);
this.langMenu.prevTip = info.value;
var index = _.findLastIndex(this.langMenu.items, {caption: info.displayValue});
var index = _.findIndex(this.langMenu.items, {caption: info.displayValue});
if (index>-1) {
this.langMenu.setChecked(index, true);
} else {

View File

@ -96,7 +96,7 @@ define([
if (me._currLang.id===null || me._currLang.id===undefined) {
menu.clearAll();
} else {
var index = _.findLastIndex(menu.items, {langid: me._currLang.id});
var index = _.findIndex(menu.items, {langid: me._currLang.id});
(index>-1) && !menu.items[index].checked && menu.setChecked(index, true);
}
},

View File

@ -357,7 +357,6 @@ define([
value : item['value'],
code : item['code'],
checkable : true,
checked : saved == item['displayValue'],
spellcheck : item['spellcheck']
});
});
@ -369,6 +368,8 @@ define([
});
this.langMenu.resetItems(arr);
if (this.langMenu.items.length>0) {
var index = _.findIndex(this.langMenu.items, {caption: saved});
(index>-1) && this.langMenu.setChecked(index, true);
this.btnLanguage.setDisabled(false || this._state.no_paragraph);
}
},
@ -377,7 +378,7 @@ define([
if (this.langMenu.prevTip != info.value && info.code !== undefined) {
this.btnLanguage.setCaption(info.displayValue);
this.langMenu.prevTip = info.value;
var index = _.findLastIndex(this.langMenu.items, {caption: info.displayValue});
var index = _.findIndex(this.langMenu.items, {caption: info.displayValue});
if (index>-1) {
this.langMenu.setChecked(index, true);
} else {