UPDATEITEM_TYPE updatetype = UpdateDiffAfterOperation(act, ctxt, GetDiffItem(act.context));
if (updatetype == UPDATEITEM_REMOVE)
{
- DeleteItem(act.context);
+ DeleteItem(act.context, true);
bItemsRemoved = true;
}
else if (updatetype == UPDATEITEM_UPDATE)
return GetDiffContext().GetDiffRefAt(diffpos);
}
-void CDirView::DeleteItem(int sel)
+void CDirView::DeleteItem(int sel, bool removeDIFFITEM)
{
if (m_bTreeMode)
CollapseSubdir(sel);
+ if (removeDIFFITEM)
+ {
+ DIFFITEM *diffpos = GetItemKey(sel);
+ if (diffpos != (DIFFITEM *)SPECIAL_ITEM_POS)
+ {
+ if (diffpos->HasChildren())
+ diffpos->RemoveChildren();
+ diffpos->DelinkFromSiblings();
+ delete diffpos;
+ }
+ }
m_pList->DeleteItem(sel);
}
DIFFITEM *GetItemKey(int idx) const;
int GetItemIndex(DIFFITEM *key);
// for populating list
- void DeleteItem(int sel);
+ void DeleteItem(int sel, bool removeDIFFITEM = false);
void DeleteAllDisplayItems();
void SetFont(const LOGFONT & lf);