static void InsertToHead(CRecordVector<UInt64> &dest, UInt32 item) { for (int i = 0; i < dest.Size(); i++) if (dest[i] == item) { dest.Delete(i); break; } dest.Insert(0, item); }
void CPanel::OpenSelectedItems(bool tryInternal) { CRecordVector<UInt32> indices; GetOperatedItemIndices(indices); if (indices.Size() > 20) { MessageBoxErrorLang(IDS_TOO_MANY_ITEMS, 0x02000606); return; } int focusedItem = _listView.GetFocusedItem(); if (focusedItem >= 0) { int realIndex = GetRealItemIndex(focusedItem); if (realIndex == kParentIndex && (tryInternal || indices.Size() == 0) && _listView.GetItemState(focusedItem, LVIS_SELECTED) == LVIS_SELECTED) indices.Insert(0, realIndex); } bool dirIsStarted = false; for (int i = 0; i < indices.Size(); i++) { UInt32 index = indices[i]; // CFileInfo &aFile = m_Files[index]; if (IsItemFolder(index)) { if (!dirIsStarted) { if (tryInternal) { OpenFolder(index); dirIsStarted = true; break; } else OpenFolderExternal(index); } } else OpenItem(index, (tryInternal && indices.Size() == 1), true); } }