mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-25 17:33:49 +01:00
Fix some internal UID <-> entry references not being updated when deleting.
Fixes mail splitter docking after deleting 2 rows.
This commit is contained in:
parent
8fe24f1e41
commit
9ef38e33dc
@ -469,11 +469,11 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput],
|
||||
{
|
||||
uid = app + "::" + _row_ids[i];
|
||||
entry = this.controller._selectionMgr._getRegisteredRowsEntry(uid);
|
||||
// grid.deleteRow() changes grid indexes - see below
|
||||
grid_IDs.push(entry.idx);
|
||||
// Trigger controller to remove from internals
|
||||
this.egw().dataStoreUID(uid,null);
|
||||
// Stop caring about this ID
|
||||
this.egw().dataDeleteUID(uid);
|
||||
|
||||
// Delete from internal references
|
||||
this.controller.deleteRow(uid);
|
||||
}
|
||||
|
||||
// Grid indexes change as we delete rows, so go from bottom
|
||||
|
@ -114,6 +114,43 @@ var et2_nextmatch_controller = et2_dataview_controller.extend(et2_IDataProvider,
|
||||
return this._objectManager;
|
||||
},
|
||||
|
||||
/**
|
||||
* Deletes a row from the grid
|
||||
*
|
||||
* @param {string} uid
|
||||
*/
|
||||
deleteRow: function(uid) {
|
||||
var entry = this._selectionMgr._getRegisteredRowsEntry(uid);
|
||||
if(entry && entry.idx)
|
||||
{
|
||||
// Trigger controller to remove from internals
|
||||
this.egw.dataStoreUID(uid,null);
|
||||
// Stop caring about this ID
|
||||
this.egw.dataDeleteUID(uid);
|
||||
// Remove from internal map
|
||||
delete this._indexMap[entry.idx];
|
||||
|
||||
// Update the indices of all elements after the current one
|
||||
for(var mapIndex = entry.idx + 1; typeof this._indexMap[mapIndex] !== 'undefined'; mapIndex++)
|
||||
{
|
||||
var entry = this._indexMap[mapIndex];
|
||||
entry.idx = mapIndex-1;
|
||||
this._indexMap[mapIndex-1] = entry;
|
||||
|
||||
// Update selection mgr too
|
||||
if(entry.uid && typeof this._selectionMgr._registeredRows[entry.uid] !== 'undefined')
|
||||
{
|
||||
var reg = this._selectionMgr._getRegisteredRowsEntry(entry.uid);
|
||||
reg.idx = entry.idx;
|
||||
if(reg.ao && reg.ao._index) reg.ao.index = entry.idx;
|
||||
}
|
||||
}
|
||||
// Remove last one, it was moved to mapIndex-1 before increment
|
||||
delete this._indexMap[mapIndex-1];
|
||||
|
||||
this._selectionMgr.setIndexMap(this._indexMap);
|
||||
}
|
||||
},
|
||||
|
||||
/** -- PRIVATE FUNCTIONS -- **/
|
||||
|
||||
@ -184,7 +221,7 @@ var et2_nextmatch_controller = et2_dataview_controller.extend(et2_IDataProvider,
|
||||
}
|
||||
|
||||
// Call the inherited function
|
||||
this._super.call(this, arguments);
|
||||
this._super.apply(this, arguments);
|
||||
},
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user