diff --git a/etemplate/js/et2_extension_nextmatch.js b/etemplate/js/et2_extension_nextmatch.js index 809f99d7a4..8ebb73dd83 100644 --- a/etemplate/js/et2_extension_nextmatch.js +++ b/etemplate/js/et2_extension_nextmatch.js @@ -473,10 +473,6 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput], for(var i = 0; i < _row_ids.length; i++) { uid = (this.controller.dataStorePrefix || app) + "::" + _row_ids[i]; - entry = this.controller._selectionMgr._getRegisteredRowsEntry(uid); - - // Unselect - this.controller._selectionMgr.setSelected(uid,false); // Delete from internal references this.controller.deleteRow(uid); @@ -489,10 +485,11 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput], this.controller._selectionMgr.setFocused(next.id,true); } - // Update the count, but don't use setTotalCount() since that will - // remove more rows (from the end). + // Update the count var total = this.dataview.grid._total - _row_ids.length; - this.dataview.grid._total = total; + // This will remove the last row! + // That's OK, because grid adds one in this.controller.deleteRow() + this.dataview.grid.setTotalCount(total); // Re-enable automatic updating this.dataview.grid.doInvalidate = true; this.dataview.grid.invalidate(); diff --git a/etemplate/js/et2_extension_nextmatch_controller.js b/etemplate/js/et2_extension_nextmatch_controller.js index 15d95748ab..b6c680d354 100644 --- a/etemplate/js/et2_extension_nextmatch_controller.js +++ b/etemplate/js/et2_extension_nextmatch_controller.js @@ -135,8 +135,16 @@ var et2_nextmatch_controller = et2_dataview_controller.extend(et2_IDataProvider, */ deleteRow: function(uid) { var entry = this._selectionMgr._getRegisteredRowsEntry(uid); + + // Unselect + this._selectionMgr.setSelected(uid,false); + if(entry && entry.idx !== null) { + // This will remove the row, but add an empty to the end. + // That's OK, because it will be removed when we update the row count + this._grid.deleteRow(entry.idx); + // Trigger controller to remove from internals this.egw.dataStoreUID(uid,null); // Stop caring about this ID @@ -162,7 +170,8 @@ var et2_nextmatch_controller = et2_dataview_controller.extend(et2_IDataProvider, // Remove last one, it was moved to mapIndex-1 before increment delete this._indexMap[mapIndex-1]; - this._selectionMgr.setIndexMap(this._indexMap); + // Not needed, they share by reference + // this._selectionMgr.setIndexMap(this._indexMap); } },