/// <summary> /// Resolve Selected Conflicts /// </summary> /// <param name="localChangesWin">true if localchanges</param> private void ResolveSelectedConflicts(bool localChangesWin) { TreeModel tModel; Queue iterQueue; iterQueue = new Queue(); TreeSelection tSelect = ConflictTreeView.Selection; Array treePaths = tSelect.GetSelectedRows(out tModel); // We can't remove anything while getting the iters // because it will change the paths and we'll remove // the wrong stuff. foreach (TreePath tPath in treePaths) { TreeIter iter; if (tModel.GetIter(out iter, tPath)) { iterQueue.Enqueue(iter); } } if (iterQueue.Count > 0) { // Now that we have all of the TreeIters, loop and // remove them all while (iterQueue.Count > 0) { TreeIter iter = (TreeIter)iterQueue.Dequeue(); ConflictHolder ch = (ConflictHolder)tModel.GetValue(iter, 0); if (!ch.IsNameConflict) { try { ifws.ResolveFileConflict( ch.FileConflict.iFolderID, ch.FileConflict.ConflictID, localChangesWin); ConflictTreeStore.Remove(ref iter); } catch {} } } UpdateFields(null, false); } }