TreeView refactoring
Shift the allocation of TreeView item's "lParam" member from TreeView class to the derived class, so "lParam" could be the pointer of anything, not necessary anymore the string pointer.
This commit is contained in:
parent
13f0717a1b
commit
cb8fd0c438
|
@ -64,6 +64,11 @@ FileBrowser::~FileBrowser()
|
||||||
folder->stopWatcher();
|
folder->stopWatcher();
|
||||||
delete folder;
|
delete folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const auto s : rootPaths)
|
||||||
|
{
|
||||||
|
delete s;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<generic_string> split(const generic_string & string2split, TCHAR sep)
|
vector<generic_string> split(const generic_string & string2split, TCHAR sep)
|
||||||
|
@ -1043,7 +1048,11 @@ HTREEITEM FileBrowser::createFolderItemsFromDirStruct(HTREEITEM hParentItem, con
|
||||||
size_t len = lstrlen(rootPath);
|
size_t len = lstrlen(rootPath);
|
||||||
if (rootPath[len - 1] == '\\')
|
if (rootPath[len - 1] == '\\')
|
||||||
rootPath[len - 1] = '\0';
|
rootPath[len - 1] = '\0';
|
||||||
hFolderItem = _treeView.addItem(directoryStructure._name.c_str(), TVI_ROOT, INDEX_CLOSE_ROOT, rootPath);
|
|
||||||
|
generic_string* rootPathStr = new generic_string(rootPath);
|
||||||
|
rootPaths.push_back(rootPathStr);
|
||||||
|
LPARAM lParamRootPath = reinterpret_cast<LPARAM>(rootPathStr);
|
||||||
|
hFolderItem = _treeView.addItem(directoryStructure._name.c_str(), TVI_ROOT, INDEX_CLOSE_ROOT, lParamRootPath);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -168,6 +168,8 @@ protected:
|
||||||
HMENU _hFileMenu = NULL;
|
HMENU _hFileMenu = NULL;
|
||||||
std::vector<FolderUpdater *> _folderUpdaters;
|
std::vector<FolderUpdater *> _folderUpdaters;
|
||||||
|
|
||||||
|
std::vector<generic_string*> rootPaths;
|
||||||
|
|
||||||
void initPopupMenus();
|
void initPopupMenus();
|
||||||
void destroyMenus();
|
void destroyMenus();
|
||||||
BOOL setImageList(int root_open_id, int root_close_id, int open_node_id, int closed_node_id, int leaf_id);
|
BOOL setImageList(int root_open_id, int root_close_id, int open_node_id, int closed_node_id, int leaf_id);
|
||||||
|
|
|
@ -41,6 +41,13 @@ using namespace std;
|
||||||
#define INDEX_NODE 1
|
#define INDEX_NODE 1
|
||||||
#define INDEX_LEAF 2
|
#define INDEX_LEAF 2
|
||||||
|
|
||||||
|
FunctionListPanel::~FunctionListPanel()
|
||||||
|
{
|
||||||
|
for (const auto s : posStrs)
|
||||||
|
{
|
||||||
|
delete s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FunctionListPanel::addEntry(const TCHAR *nodeName, const TCHAR *displayText, size_t pos)
|
void FunctionListPanel::addEntry(const TCHAR *nodeName, const TCHAR *displayText, size_t pos)
|
||||||
{
|
{
|
||||||
|
@ -54,13 +61,21 @@ void FunctionListPanel::addEntry(const TCHAR *nodeName, const TCHAR *displayText
|
||||||
itemParent = _treeView.searchSubItemByName(nodeName, root);
|
itemParent = _treeView.searchSubItemByName(nodeName, root);
|
||||||
if (!itemParent)
|
if (!itemParent)
|
||||||
{
|
{
|
||||||
itemParent = _treeView.addItem(nodeName, root, INDEX_NODE, TEXT("-1"));
|
generic_string* invalidValueStr = new generic_string(TEXT("-1"));
|
||||||
|
posStrs.push_back(invalidValueStr);
|
||||||
|
LPARAM lParamInvalidPosStr = reinterpret_cast<LPARAM>(invalidValueStr);
|
||||||
|
|
||||||
|
itemParent = _treeView.addItem(nodeName, root, INDEX_NODE, lParamInvalidPosStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
itemParent = root;
|
itemParent = root;
|
||||||
|
|
||||||
_treeView.addItem(displayText, itemParent, INDEX_LEAF, posStr);
|
generic_string* posString = new generic_string(posStr);
|
||||||
|
posStrs.push_back(posString);
|
||||||
|
LPARAM lParamPosStr = reinterpret_cast<LPARAM>(posString);
|
||||||
|
|
||||||
|
_treeView.addItem(displayText, itemParent, INDEX_LEAF, lParamPosStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FunctionListPanel::removeAllEntries()
|
void FunctionListPanel::removeAllEntries()
|
||||||
|
@ -217,7 +232,12 @@ void FunctionListPanel::sortOrUnsort()
|
||||||
|
|
||||||
_treeViewSearchResult.removeAllItems();
|
_treeViewSearchResult.removeAllItems();
|
||||||
const TCHAR *fn = ((*_ppEditView)->getCurrentBuffer())->getFileName();
|
const TCHAR *fn = ((*_ppEditView)->getCurrentBuffer())->getFileName();
|
||||||
_treeViewSearchResult.addItem(fn, NULL, INDEX_ROOT, TEXT("-1"));
|
|
||||||
|
generic_string* invalidValueStr = new generic_string(TEXT("-1"));
|
||||||
|
posStrs.push_back(invalidValueStr);
|
||||||
|
LPARAM lParamInvalidPosStr = reinterpret_cast<LPARAM>(invalidValueStr);
|
||||||
|
_treeViewSearchResult.addItem(fn, NULL, INDEX_ROOT, lParamInvalidPosStr);
|
||||||
|
|
||||||
_treeView.searchLeafAndBuildTree(_treeViewSearchResult, text2search, INDEX_LEAF);
|
_treeView.searchLeafAndBuildTree(_treeViewSearchResult, text2search, INDEX_LEAF);
|
||||||
_treeViewSearchResult.display(true);
|
_treeViewSearchResult.display(true);
|
||||||
_treeViewSearchResult.expand(_treeViewSearchResult.getRoot());
|
_treeViewSearchResult.expand(_treeViewSearchResult.getRoot());
|
||||||
|
@ -338,7 +358,11 @@ void FunctionListPanel::reload()
|
||||||
bool parsedOK = _funcParserMgr.parse(_foundFuncInfos, AssociationInfo(-1, langID, ext, udln));
|
bool parsedOK = _funcParserMgr.parse(_foundFuncInfos, AssociationInfo(-1, langID, ext, udln));
|
||||||
if (parsedOK)
|
if (parsedOK)
|
||||||
{
|
{
|
||||||
_treeView.addItem(fn, NULL, INDEX_ROOT, TEXT("-1"));
|
generic_string* invalidValueStr = new generic_string(TEXT("-1"));
|
||||||
|
posStrs.push_back(invalidValueStr);
|
||||||
|
LPARAM lParamInvalidPosStr = reinterpret_cast<LPARAM>(invalidValueStr);
|
||||||
|
|
||||||
|
_treeView.addItem(fn, NULL, INDEX_ROOT, lParamInvalidPosStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0, len = _foundFuncInfos.size(); i < len; ++i)
|
for (size_t i = 0, len = _foundFuncInfos.size(); i < len; ++i)
|
||||||
|
@ -352,7 +376,12 @@ void FunctionListPanel::reload()
|
||||||
{
|
{
|
||||||
currentBuf = (*_ppEditView)->getCurrentBuffer();
|
currentBuf = (*_ppEditView)->getCurrentBuffer();
|
||||||
const TCHAR *fullFilePath = currentBuf->getFullPathName();
|
const TCHAR *fullFilePath = currentBuf->getFullPathName();
|
||||||
_treeView.setItemParam(root, fullFilePath);
|
|
||||||
|
generic_string* fullPathStr = new generic_string(fullFilePath);
|
||||||
|
posStrs.push_back(fullPathStr);
|
||||||
|
LPARAM lParamFullPathStr = reinterpret_cast<LPARAM>(fullPathStr);
|
||||||
|
|
||||||
|
_treeView.setItemParam(root, lParamFullPathStr);
|
||||||
TreeParams *previousParams = getFromStateArray(fullFilePath);
|
TreeParams *previousParams = getFromStateArray(fullFilePath);
|
||||||
if (!previousParams)
|
if (!previousParams)
|
||||||
{
|
{
|
||||||
|
@ -615,7 +644,12 @@ void FunctionListPanel::searchFuncAndSwitchView()
|
||||||
|
|
||||||
_treeViewSearchResult.removeAllItems();
|
_treeViewSearchResult.removeAllItems();
|
||||||
const TCHAR *fn = ((*_ppEditView)->getCurrentBuffer())->getFileName();
|
const TCHAR *fn = ((*_ppEditView)->getCurrentBuffer())->getFileName();
|
||||||
_treeViewSearchResult.addItem(fn, NULL, INDEX_ROOT, TEXT("-1"));
|
|
||||||
|
generic_string* invalidValueStr = new generic_string(TEXT("-1"));
|
||||||
|
posStrs.push_back(invalidValueStr);
|
||||||
|
LPARAM lParamInvalidPosStr = reinterpret_cast<LPARAM>(invalidValueStr);
|
||||||
|
_treeViewSearchResult.addItem(fn, NULL, INDEX_ROOT, lParamInvalidPosStr);
|
||||||
|
|
||||||
_treeView.searchLeafAndBuildTree(_treeViewSearchResult, text2search, INDEX_LEAF);
|
_treeView.searchLeafAndBuildTree(_treeViewSearchResult, text2search, INDEX_LEAF);
|
||||||
_treeViewSearchResult.display(true);
|
_treeViewSearchResult.display(true);
|
||||||
_treeViewSearchResult.expand(_treeViewSearchResult.getRoot());
|
_treeViewSearchResult.expand(_treeViewSearchResult.getRoot());
|
||||||
|
|
|
@ -85,6 +85,7 @@ class FunctionListPanel : public DockingDlgInterface {
|
||||||
public:
|
public:
|
||||||
FunctionListPanel(): DockingDlgInterface(IDD_FUNCLIST_PANEL), _ppEditView(NULL), _pTreeView(&_treeView),
|
FunctionListPanel(): DockingDlgInterface(IDD_FUNCLIST_PANEL), _ppEditView(NULL), _pTreeView(&_treeView),
|
||||||
_reloadTipStr(TEXT("Reload")), _sortTipStr(TEXT("Sort")) {};
|
_reloadTipStr(TEXT("Reload")), _sortTipStr(TEXT("Sort")) {};
|
||||||
|
~FunctionListPanel();
|
||||||
|
|
||||||
void init(HINSTANCE hInst, HWND hPere, ScintillaEditView **ppEditView);
|
void init(HINSTANCE hInst, HWND hPere, ScintillaEditView **ppEditView);
|
||||||
|
|
||||||
|
@ -134,6 +135,8 @@ private:
|
||||||
|
|
||||||
std::vector<foundInfo> _foundFuncInfos;
|
std::vector<foundInfo> _foundFuncInfos;
|
||||||
|
|
||||||
|
std::vector<generic_string*> posStrs;
|
||||||
|
|
||||||
ScintillaEditView **_ppEditView;
|
ScintillaEditView **_ppEditView;
|
||||||
FunctionParsersManager _funcParserMgr;
|
FunctionParsersManager _funcParserMgr;
|
||||||
std::vector< std::pair<int, int> > _skipZones;
|
std::vector< std::pair<int, int> > _skipZones;
|
||||||
|
|
|
@ -45,6 +45,14 @@
|
||||||
#define INDEX_LEAF 5
|
#define INDEX_LEAF 5
|
||||||
#define INDEX_LEAF_INVALID 6
|
#define INDEX_LEAF_INVALID 6
|
||||||
|
|
||||||
|
ProjectPanel::~ProjectPanel()
|
||||||
|
{
|
||||||
|
for (const auto s : fullPathStrs)
|
||||||
|
{
|
||||||
|
delete s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
INT_PTR CALLBACK ProjectPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam)
|
INT_PTR CALLBACK ProjectPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
switch (message)
|
switch (message)
|
||||||
|
@ -530,7 +538,12 @@ bool ProjectPanel::buildTreeFrom(TiXmlNode *projectRoot, HTREEITEM hParentItem)
|
||||||
generic_string fullPath = getAbsoluteFilePath(strValue);
|
generic_string fullPath = getAbsoluteFilePath(strValue);
|
||||||
TCHAR *strValueLabel = ::PathFindFileName(strValue);
|
TCHAR *strValueLabel = ::PathFindFileName(strValue);
|
||||||
int iImage = ::PathFileExists(fullPath.c_str())?INDEX_LEAF:INDEX_LEAF_INVALID;
|
int iImage = ::PathFileExists(fullPath.c_str())?INDEX_LEAF:INDEX_LEAF_INVALID;
|
||||||
_treeView.addItem(strValueLabel, hParentItem, iImage, fullPath.c_str());
|
|
||||||
|
generic_string* fullPathStr = new generic_string(fullPath);
|
||||||
|
fullPathStrs.push_back(fullPathStr);
|
||||||
|
LPARAM lParamFullPathStr = reinterpret_cast<LPARAM>(fullPathStr);
|
||||||
|
|
||||||
|
_treeView.addItem(strValueLabel, hParentItem, iImage, lParamFullPathStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -1190,7 +1203,12 @@ void ProjectPanel::addFiles(HTREEITEM hTreeItem)
|
||||||
for (size_t i = 0 ; i < sz ; ++i)
|
for (size_t i = 0 ; i < sz ; ++i)
|
||||||
{
|
{
|
||||||
TCHAR *strValueLabel = ::PathFindFileName(pfns->at(i).c_str());
|
TCHAR *strValueLabel = ::PathFindFileName(pfns->at(i).c_str());
|
||||||
_treeView.addItem(strValueLabel, hTreeItem, INDEX_LEAF, pfns->at(i).c_str());
|
|
||||||
|
generic_string* pathFileStr = new generic_string(pfns->at(i));
|
||||||
|
fullPathStrs.push_back(pathFileStr);
|
||||||
|
LPARAM lParamPathFileStr = reinterpret_cast<LPARAM>(pathFileStr);
|
||||||
|
|
||||||
|
_treeView.addItem(strValueLabel, hTreeItem, INDEX_LEAF, lParamPathFileStr);
|
||||||
}
|
}
|
||||||
_treeView.expand(hTreeItem);
|
_treeView.expand(hTreeItem);
|
||||||
setWorkSpaceDirty(true);
|
setWorkSpaceDirty(true);
|
||||||
|
@ -1247,7 +1265,11 @@ void ProjectPanel::recursiveAddFilesFrom(const TCHAR *folderPath, HTREEITEM hTre
|
||||||
if (folderPath[lstrlen(folderPath)-1] != '\\')
|
if (folderPath[lstrlen(folderPath)-1] != '\\')
|
||||||
pathFile += TEXT("\\");
|
pathFile += TEXT("\\");
|
||||||
pathFile += files[i];
|
pathFile += files[i];
|
||||||
_treeView.addItem(files[i].c_str(), hTreeItem, INDEX_LEAF, pathFile.c_str());
|
|
||||||
|
generic_string* pathFileStr = new generic_string(pathFile);
|
||||||
|
fullPathStrs.push_back(pathFileStr);
|
||||||
|
LPARAM lParamPathFileStr = reinterpret_cast<LPARAM>(pathFileStr);
|
||||||
|
_treeView.addItem(files[i].c_str(), hTreeItem, INDEX_LEAF, lParamPathFileStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
::FindClose(hFile);
|
::FindClose(hFile);
|
||||||
|
|
|
@ -68,7 +68,7 @@ class FileDialog;
|
||||||
class ProjectPanel : public DockingDlgInterface {
|
class ProjectPanel : public DockingDlgInterface {
|
||||||
public:
|
public:
|
||||||
ProjectPanel(): DockingDlgInterface(IDD_PROJECTPANEL) {};
|
ProjectPanel(): DockingDlgInterface(IDD_PROJECTPANEL) {};
|
||||||
|
~ProjectPanel();
|
||||||
|
|
||||||
void init(HINSTANCE hInst, HWND hPere) {
|
void init(HINSTANCE hInst, HWND hPere) {
|
||||||
DockingDlgInterface::init(hInst, hPere);
|
DockingDlgInterface::init(hInst, hPere);
|
||||||
|
@ -140,6 +140,7 @@ protected:
|
||||||
generic_string getAbsoluteFilePath(const TCHAR * relativePath);
|
generic_string getAbsoluteFilePath(const TCHAR * relativePath);
|
||||||
void openSelectFile();
|
void openSelectFile();
|
||||||
void setFileExtFilter(FileDialog & fDlg);
|
void setFileExtFilter(FileDialog & fDlg);
|
||||||
|
std::vector<generic_string*> fullPathStrs;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FileRelocalizerDlg : public StaticDialog
|
class FileRelocalizerDlg : public StaticDialog
|
||||||
|
|
|
@ -80,7 +80,7 @@ void TreeView::makeLabelEditable(bool toBeEnabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TreeView::setItemParam(HTREEITEM Item2Set, const TCHAR *paramStr)
|
bool TreeView::setItemParam(HTREEITEM Item2Set, LPARAM param)
|
||||||
{
|
{
|
||||||
if (!Item2Set)
|
if (!Item2Set)
|
||||||
return false;
|
return false;
|
||||||
|
@ -88,15 +88,8 @@ bool TreeView::setItemParam(HTREEITEM Item2Set, const TCHAR *paramStr)
|
||||||
TVITEM tvItem;
|
TVITEM tvItem;
|
||||||
tvItem.hItem = Item2Set;
|
tvItem.hItem = Item2Set;
|
||||||
tvItem.mask = TVIF_PARAM;
|
tvItem.mask = TVIF_PARAM;
|
||||||
|
tvItem.lParam = param;
|
||||||
|
|
||||||
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
|
||||||
|
|
||||||
if (!tvItem.lParam)
|
|
||||||
tvItem.lParam = reinterpret_cast<LPARAM>(new generic_string(paramStr));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*((generic_string *)tvItem.lParam) = paramStr;
|
|
||||||
}
|
|
||||||
SendMessage(_hSelf, TVM_SETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
SendMessage(_hSelf, TVM_SETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -143,7 +136,7 @@ bool TreeView::renameItem(HTREEITEM Item2Set, const TCHAR *newName)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem, int iImage, const TCHAR *filePath)
|
HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem, int iImage, LPARAM lParam)
|
||||||
{
|
{
|
||||||
TVITEM tvi;
|
TVITEM tvi;
|
||||||
tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
|
tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
|
||||||
|
@ -156,8 +149,7 @@ HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem, int iI
|
||||||
tvi.iImage = iImage;//isNode?INDEX_CLOSED_NODE:INDEX_LEAF;
|
tvi.iImage = iImage;//isNode?INDEX_CLOSED_NODE:INDEX_LEAF;
|
||||||
tvi.iSelectedImage = iImage;//isNode?INDEX_OPEN_NODE:INDEX_LEAF;
|
tvi.iSelectedImage = iImage;//isNode?INDEX_OPEN_NODE:INDEX_LEAF;
|
||||||
|
|
||||||
// Save the full path of file in the item's application-defined data area.
|
tvi.lParam = lParam;
|
||||||
tvi.lParam = (filePath == NULL ? 0 : reinterpret_cast<LPARAM>(new generic_string(filePath)));
|
|
||||||
|
|
||||||
TVINSERTSTRUCT tvInsertStruct;
|
TVINSERTSTRUCT tvInsertStruct;
|
||||||
tvInsertStruct.item = tvi;
|
tvInsertStruct.item = tvi;
|
||||||
|
@ -177,8 +169,6 @@ void TreeView::removeItem(HTREEITEM hTreeItem)
|
||||||
tvItem.hItem = hTreeItem;
|
tvItem.hItem = hTreeItem;
|
||||||
tvItem.mask = TVIF_PARAM;
|
tvItem.mask = TVIF_PARAM;
|
||||||
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
||||||
if (tvItem.lParam)
|
|
||||||
delete (generic_string *)(tvItem.lParam);
|
|
||||||
|
|
||||||
// Remove the node
|
// Remove the node
|
||||||
TreeView_DeleteItem(_hSelf, hTreeItem);
|
TreeView_DeleteItem(_hSelf, hTreeItem);
|
||||||
|
@ -207,10 +197,6 @@ void TreeView::dupTree(HTREEITEM hTree2Dup, HTREEITEM hParentItem)
|
||||||
tvItem.cchTextMax = MAX_PATH;
|
tvItem.cchTextMax = MAX_PATH;
|
||||||
tvItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
|
tvItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
|
||||||
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
||||||
if (tvItem.lParam)
|
|
||||||
{
|
|
||||||
tvItem.lParam = reinterpret_cast<LPARAM>(new generic_string(*(reinterpret_cast<generic_string *>(tvItem.lParam))));
|
|
||||||
}
|
|
||||||
|
|
||||||
TVINSERTSTRUCT tvInsertStruct;
|
TVINSERTSTRUCT tvInsertStruct;
|
||||||
tvInsertStruct.item = tvItem;
|
tvInsertStruct.item = tvItem;
|
||||||
|
@ -255,10 +241,7 @@ void TreeView::cleanSubEntries(HTREEITEM hTreeItem)
|
||||||
tvItem.hItem = hItem;
|
tvItem.hItem = hItem;
|
||||||
tvItem.mask = TVIF_PARAM;
|
tvItem.mask = TVIF_PARAM;
|
||||||
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvItem));
|
||||||
if (tvItem.lParam)
|
|
||||||
{
|
|
||||||
delete reinterpret_cast<generic_string *>(tvItem.lParam);
|
|
||||||
}
|
|
||||||
cleanSubEntries(hItem);
|
cleanSubEntries(hItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -448,9 +431,6 @@ void TreeView::moveTreeViewItem(HTREEITEM draggedItem, HTREEITEM targetItem)
|
||||||
tvDraggingItem.hItem = draggedItem;
|
tvDraggingItem.hItem = draggedItem;
|
||||||
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvDraggingItem));
|
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvDraggingItem));
|
||||||
|
|
||||||
if (tvDraggingItem.lParam)
|
|
||||||
tvDraggingItem.lParam = reinterpret_cast<LPARAM>(new generic_string(*(reinterpret_cast<generic_string *>(tvDraggingItem.lParam))));
|
|
||||||
|
|
||||||
TVINSERTSTRUCT tvInsertStruct;
|
TVINSERTSTRUCT tvInsertStruct;
|
||||||
tvInsertStruct.item = tvDraggingItem;
|
tvInsertStruct.item = tvDraggingItem;
|
||||||
tvInsertStruct.hInsertAfter = (HTREEITEM)TVI_LAST;
|
tvInsertStruct.hInsertAfter = (HTREEITEM)TVI_LAST;
|
||||||
|
@ -507,13 +487,6 @@ bool TreeView::swapTreeViewItem(HTREEITEM itemGoDown, HTREEITEM itemGoUp)
|
||||||
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvUpItem));
|
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvUpItem));
|
||||||
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvDownItem));
|
SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast<LPARAM>(&tvDownItem));
|
||||||
|
|
||||||
// make copy recursively for both items
|
|
||||||
|
|
||||||
if (tvUpItem.lParam)
|
|
||||||
tvUpItem.lParam = reinterpret_cast<LPARAM>(new generic_string(*(reinterpret_cast<generic_string *>(tvUpItem.lParam))));
|
|
||||||
if (tvDownItem.lParam)
|
|
||||||
tvDownItem.lParam = reinterpret_cast<LPARAM>(new generic_string(*(reinterpret_cast<generic_string *>(tvDownItem.lParam))));
|
|
||||||
|
|
||||||
// add 2 new items
|
// add 2 new items
|
||||||
TVINSERTSTRUCT tvInsertUp;
|
TVINSERTSTRUCT tvInsertUp;
|
||||||
tvInsertUp.item = tvUpItem;
|
tvInsertUp.item = tvUpItem;
|
||||||
|
@ -611,10 +584,6 @@ bool TreeView::searchLeafRecusivelyAndBuildTree(HTREEITEM tree2Build, const gene
|
||||||
size_t res = itemNameUpperCase.find(text2SearchUpperCase);
|
size_t res = itemNameUpperCase.find(text2SearchUpperCase);
|
||||||
if (res != generic_string::npos)
|
if (res != generic_string::npos)
|
||||||
{
|
{
|
||||||
if (tvItem.lParam)
|
|
||||||
{
|
|
||||||
tvItem.lParam = reinterpret_cast<LPARAM>(new generic_string(*(reinterpret_cast<generic_string *>(tvItem.lParam))));
|
|
||||||
}
|
|
||||||
TVINSERTSTRUCT tvInsertStruct;
|
TVINSERTSTRUCT tvInsertStruct;
|
||||||
tvInsertStruct.item = tvItem;
|
tvInsertStruct.item = tvItem;
|
||||||
tvInsertStruct.hInsertAfter = TVI_LAST;
|
tvInsertStruct.hInsertAfter = TVI_LAST;
|
||||||
|
|
|
@ -48,8 +48,8 @@ public:
|
||||||
|
|
||||||
virtual void init(HINSTANCE hInst, HWND parent, int treeViewID);
|
virtual void init(HINSTANCE hInst, HWND parent, int treeViewID);
|
||||||
virtual void destroy();
|
virtual void destroy();
|
||||||
HTREEITEM addItem(const TCHAR *itemName, HTREEITEM hParentItem, int iImage, const TCHAR *filePath = NULL);
|
HTREEITEM addItem(const TCHAR *itemName, HTREEITEM hParentItem, int iImage, LPARAM lParam = NULL);
|
||||||
bool setItemParam(HTREEITEM Item2Set, const TCHAR *paramStr);
|
bool setItemParam(HTREEITEM Item2Set, LPARAM param);
|
||||||
LPARAM getItemParam(HTREEITEM Item2Get) const;
|
LPARAM getItemParam(HTREEITEM Item2Get) const;
|
||||||
generic_string getItemDisplayName(HTREEITEM Item2Set) const;
|
generic_string getItemDisplayName(HTREEITEM Item2Set) const;
|
||||||
HTREEITEM searchSubItemByName(const TCHAR *itemName, HTREEITEM hParentItem);
|
HTREEITEM searchSubItemByName(const TCHAR *itemName, HTREEITEM hParentItem);
|
||||||
|
|
Loading…
Reference in New Issue