commit 9f7437f5caa1ef4161cea0570ba1ee7e1770e5ed
parent 14ba1b8fbc38eb955ef73793157edefb5a890604
Author: David Norton <david@nortoncrew.com>
Date: Fri, 9 Jun 2006 14:01:07 +0000
[interface] itemsTreeView correctly handles notify(erase)
[data access] Collection.removeItem() calls trigger() with the right type
Diffstat:
2 files changed, 19 insertions(+), 27 deletions(-)
diff --git a/chrome/chromeFiles/content/scholar/itemTreeView.js b/chrome/chromeFiles/content/scholar/itemTreeView.js
@@ -191,20 +191,20 @@ Scholar.ItemTreeView.prototype.getCollectionID = function()
//CALLED BY DATA LAYER ON CHANGE:
Scholar.ItemTreeView.prototype.notify = function(action, type, ids)
{
- ids = Scholar.flattenArguments(ids);
var madeChanges = false;
this.selection.selectEventsSuppressed = true;
this.saveSelection();
- if(action == 'remove')
+ if((action == 'remove' && !this._itemGroup.isLibrary()) || (action == 'delete' && this._itemGroup.isLibrary()))
{
+ ids = Scholar.flattenArguments(ids);
//Since a remove involves shifting of rows, we have to do it in order
//sort the ids by row
var rows = new Array();
for(var i=0, len=ids.length; i<len; i++)
- if(this._itemRowMap[ids[i]] != null)
+ if(action == 'delete' || !this._itemGroup.ref.hasItem(ids[i]))
rows.push(this._itemRowMap[ids[i]]);
if(rows.length > 0)
@@ -222,32 +222,24 @@ Scholar.ItemTreeView.prototype.notify = function(action, type, ids)
}
}
- else
+ else if(action == 'modify') //must check for null because it could legitimately be 0
{
- for (var i=0, len=ids.length; i<len; i++)
+ if(this._itemRowMap[ids])
{
-
- var row = this._itemRowMap[ids[i]];
- if(action == 'modify' && row != null) //must check for null because it could legitimately be 0
- {
- var item = Scholar.Items.get(ids[i]);
-
- this._treebox.invalidateRow(row);
- madeChanges = true;
- }
- else if(action == 'add' && row == null)
- {
- var item = Scholar.Items.get(ids[i]);
+ this._treebox.invalidateRow(row);
+ madeChanges = true;
+ }
+ }
+ else if(action == 'add')
+ {
+ var item = Scholar.Items.get(ids);
- if(this._itemGroup.isLibrary() || item.inCollection(this.getCollectionID()))
- {
- this._showItem(item,this.rowCount);
- this._treebox.rowCountChanged(this.rowCount-1,1);
- }
-
- madeChanges = true;
- }
-
+ if(this._itemGroup.isLibrary() || item.inCollection(this.getCollectionID()))
+ {
+ this._showItem(item,this.rowCount);
+ this._treebox.rowCountChanged(this.rowCount-1,1);
+
+ madeChanges = true;
}
}
diff --git a/chrome/chromeFiles/content/scholar/xpcom/data_access.js b/chrome/chromeFiles/content/scholar/xpcom/data_access.js
@@ -1234,7 +1234,7 @@ Scholar.Collection.prototype.removeItem = function(itemID){
// If this was the last item, set collection to empty
if (!this._childItems.length){
this._hasChildItems = false;
- Scholar.Notifier.trigger('modify', 'collections', this.getID());
+ Scholar.Notifier.trigger('modify', 'collection', this.getID());
}
Scholar.Notifier.trigger('remove', 'item', itemID);