From b70efc7f10960c19b33857d585fc7e916426dd96 Mon Sep 17 00:00:00 2001 From: "Julia.Radzhabova" Date: Wed, 4 Jun 2025 23:18:40 +0300 Subject: [PATCH] Recent langs: fix selecting current item --- apps/common/main/lib/component/ComboBox.js | 8 +++----- apps/common/main/lib/component/Menu.js | 13 +++++++++++-- apps/documenteditor/main/app/view/DocumentHolder.js | 2 +- apps/documenteditor/main/app/view/Statusbar.js | 5 +++-- .../main/app/view/DocumentHolder.js | 2 +- apps/presentationeditor/main/app/view/Statusbar.js | 5 +++-- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/apps/common/main/lib/component/ComboBox.js b/apps/common/main/lib/component/ComboBox.js index 09e02e8491..c6352f8c60 100644 --- a/apps/common/main/lib/component/ComboBox.js +++ b/apps/common/main/lib/component/ComboBox.js @@ -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); } }, diff --git a/apps/common/main/lib/component/Menu.js b/apps/common/main/lib/component/Menu.js index b63fced36f..e185c14dfd 100644 --- a/apps/common/main/lib/component/Menu.js +++ b/apps/common/main/lib/component/Menu.js @@ -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('
  • <%= itemTemplate(item) %>
  • ')({ + var el = $(_.template('
  • <%= itemTemplate(item) %>
  • ')({ itemTemplate: this.itemTemplate, item: item })); + this.cmpEl.find('> li').eq(index || 0).before(el); + el && (item.el = el.find('> a')); }, onRemoveRecentItem: function(item) { diff --git a/apps/documenteditor/main/app/view/DocumentHolder.js b/apps/documenteditor/main/app/view/DocumentHolder.js index 9c58bfef51..b2101d737c 100644 --- a/apps/documenteditor/main/app/view/DocumentHolder.js +++ b/apps/documenteditor/main/app/view/DocumentHolder.js @@ -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); } }, diff --git a/apps/documenteditor/main/app/view/Statusbar.js b/apps/documenteditor/main/app/view/Statusbar.js index e6d6fc1cd3..15bc65c39b 100644 --- a/apps/documenteditor/main/app/view/Statusbar.js +++ b/apps/documenteditor/main/app/view/Statusbar.js @@ -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 { diff --git a/apps/presentationeditor/main/app/view/DocumentHolder.js b/apps/presentationeditor/main/app/view/DocumentHolder.js index ce56f49a15..36cc26eb19 100644 --- a/apps/presentationeditor/main/app/view/DocumentHolder.js +++ b/apps/presentationeditor/main/app/view/DocumentHolder.js @@ -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); } }, diff --git a/apps/presentationeditor/main/app/view/Statusbar.js b/apps/presentationeditor/main/app/view/Statusbar.js index cbf1811c63..1386d4759c 100644 --- a/apps/presentationeditor/main/app/view/Statusbar.js +++ b/apps/presentationeditor/main/app/view/Statusbar.js @@ -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 {