Skip to content

Commit

Permalink
[REGEDIT] Add a special popup menu for the tree view root item
Browse files Browse the repository at this point in the history
CORE-16888
  • Loading branch information
EricKohl committed Apr 18, 2020
1 parent 13dd917 commit b280615
Show file tree
Hide file tree
Showing 31 changed files with 272 additions and 33 deletions.
70 changes: 38 additions & 32 deletions base/applications/regedit/childwnd.c
Expand Up @@ -726,6 +726,7 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
HKEY hRootKey;
int iLastPos;
WORD wID;
BOOL isRoot;

pt.x = (short) LOWORD(lParam);
pt.y = (short) HIWORD(lParam);
Expand Down Expand Up @@ -755,9 +756,11 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa

if (hti.flags & TVHT_ONITEM)
{
hContextMenu = GetSubMenu(hPopupMenus, PM_TREECONTEXT);
TreeView_SelectItem(g_pChildWnd->hTreeWnd, hti.hItem);

isRoot = (TreeView_GetParent(g_pChildWnd->hTreeWnd, hti.hItem) == NULL);
hContextMenu = GetSubMenu(hPopupMenus, isRoot ? PM_ROOTITEM : PM_TREECONTEXT);

memset(&item, 0, sizeof(item));
item.mask = TVIF_STATE | TVIF_CHILDREN;
item.hItem = hti.hItem;
Expand All @@ -773,45 +776,48 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
mii.dwTypeData = (LPWSTR) buffer;
SetMenuItemInfo(hContextMenu, 0, TRUE, &mii);

/* Remove any existing suggestions */
memset(&mii, 0, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_ID;
GetMenuItemInfo(hContextMenu, GetMenuItemCount(hContextMenu) - 1, TRUE, &mii);
if ((mii.wID >= ID_TREE_SUGGESTION_MIN) && (mii.wID <= ID_TREE_SUGGESTION_MAX))
if (isRoot == FALSE)
{
do
/* Remove any existing suggestions */
memset(&mii, 0, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_ID;
GetMenuItemInfo(hContextMenu, GetMenuItemCount(hContextMenu) - 1, TRUE, &mii);
if ((mii.wID >= ID_TREE_SUGGESTION_MIN) && (mii.wID <= ID_TREE_SUGGESTION_MAX))
{
iLastPos = GetMenuItemCount(hContextMenu) - 1;
GetMenuItemInfo(hContextMenu, iLastPos, TRUE, &mii);
RemoveMenu(hContextMenu, iLastPos, MF_BYPOSITION);
do
{
iLastPos = GetMenuItemCount(hContextMenu) - 1;
GetMenuItemInfo(hContextMenu, iLastPos, TRUE, &mii);
RemoveMenu(hContextMenu, iLastPos, MF_BYPOSITION);
}
while((mii.wID >= ID_TREE_SUGGESTION_MIN) && (mii.wID <= ID_TREE_SUGGESTION_MAX));
}
while((mii.wID >= ID_TREE_SUGGESTION_MIN) && (mii.wID <= ID_TREE_SUGGESTION_MAX));
}

/* Come up with suggestions */
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, NULL, &hRootKey);
SuggestKeys(hRootKey, keyPath, Suggestions, COUNT_OF(Suggestions));
if (Suggestions[0])
{
AppendMenu(hContextMenu, MF_SEPARATOR, 0, NULL);
/* Come up with suggestions */
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, NULL, &hRootKey);
SuggestKeys(hRootKey, keyPath, Suggestions, COUNT_OF(Suggestions));
if (Suggestions[0])
{
AppendMenu(hContextMenu, MF_SEPARATOR, 0, NULL);

LoadStringW(hInst, IDS_GOTO_SUGGESTED_KEY, resource, COUNT_OF(resource));
LoadStringW(hInst, IDS_GOTO_SUGGESTED_KEY, resource, COUNT_OF(resource));

s = Suggestions;
wID = ID_TREE_SUGGESTION_MIN;
while(*s && (wID <= ID_TREE_SUGGESTION_MAX))
{
_snwprintf(buffer, COUNT_OF(buffer), resource, s);
s = Suggestions;
wID = ID_TREE_SUGGESTION_MIN;
while(*s && (wID <= ID_TREE_SUGGESTION_MAX))
{
_snwprintf(buffer, COUNT_OF(buffer), resource, s);

memset(&mii, 0, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_STRING | MIIM_ID;
mii.wID = wID++;
mii.dwTypeData = buffer;
InsertMenuItem(hContextMenu, GetMenuItemCount(hContextMenu), TRUE, &mii);
memset(&mii, 0, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_STRING | MIIM_ID;
mii.wID = wID++;
mii.dwTypeData = buffer;
InsertMenuItem(hContextMenu, GetMenuItemCount(hContextMenu), TRUE, &mii);

s += wcslen(s) + 1;
s += wcslen(s) + 1;
}
}
}
TrackPopupMenu(hContextMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, g_pChildWnd->hWnd, NULL);
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/bg-BG.rc
Expand Up @@ -139,6 +139,14 @@ BEGIN
MENUITEM "&Запомняне стойността на ключа", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Разгръщане/Свиване", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Износ", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Изоставяне на рой...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "От&рязване", ID_HEXEDIT_CUT
MENUITEM "За&помняне", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/cs-CZ.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "Z&kopírovat název klíče", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Rozbalit/Sbalit", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Exportovat", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Uvolnit strom registru...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "Vyj&mout", ID_HEXEDIT_CUT
MENUITEM "&Kopírovat", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/de-DE.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "S&chlüsselnamen kopieren", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Erweitern/Schließen", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Exportieren", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Zweig entladen...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "&Ausschneiden", ID_HEXEDIT_CUT
MENUITEM "&Kopieren", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/el-GR.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Αντιγραφή Ονόματος Κλειδιού", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Expand/Collapse", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Εξαγωγή", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Αφαίρεση Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "C&ut", ID_HEXEDIT_CUT
MENUITEM "&Copy", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/en-US.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Expand/Collapse", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Export", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Unload Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "Cu&t", ID_HEXEDIT_CUT
MENUITEM "&Copy", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/es-ES.rc
Expand Up @@ -137,6 +137,14 @@ BEGIN
MENUITEM "&Copiar nombre de clave", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Expandir/Contraer", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Exportar", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Descargar subárbol...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "&Cortar", ID_HEXEDIT_CUT
MENUITEM "Cop&iar", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/fr-FR.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Copier le nom de la clé", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Dérouler/Réduire", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Exporter", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Décharger la ruche...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "C&ouper", ID_HEXEDIT_CUT
MENUITEM "&Copier", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/he-IL.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "העתק שם מפתח", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "הרחב/קפל", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "יצא", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "ביטול טעינת כוורת (Hive)...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "גזור", ID_HEXEDIT_CUT
MENUITEM "העתק", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/hu-HU.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Expand/Collapse", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Export", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Unload Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "C&ut", ID_HEXEDIT_CUT
MENUITEM "&Copy", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/id-ID.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Salin Nama Kunci", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Perluas/Perempit", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Ekspor", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Buang Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "&Gunting", ID_HEXEDIT_CUT
MENUITEM "&Salin", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/it-IT.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Copia il nome della chiave", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Espandi/Raccogli", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Esporta", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Scarica Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "&Taglia", ID_HEXEDIT_CUT
MENUITEM "&Copia", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/ja-JP.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "キー名のコピー(&C)", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "展開する/閉じる", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "エクスポート(&E)", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "ハイブのアンロード...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "切り取り(&C)", ID_HEXEDIT_CUT
MENUITEM "コピー(&C)", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/ko-KR.rc
Expand Up @@ -136,6 +136,14 @@ BEGIN
MENUITEM "키 이름 복사(&C)", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "확장/축소", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "내보내기(&E)", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "하이브 언로드...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "C&ut", ID_HEXEDIT_CUT
MENUITEM "&Copy", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/nl-NL.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Copy Key Name", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Expand/Collapse", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Export", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Unload Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "C&ut", ID_HEXEDIT_CUT
MENUITEM "&Copy", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/no-NO.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Kopier nøkkelnavn", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Utvid/Minimer", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Eksport", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Fjern struktur...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "C&ut", ID_HEXEDIT_CUT
MENUITEM "&Copy", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/pl-PL.rc
Expand Up @@ -144,6 +144,14 @@ BEGIN
MENUITEM "&Kopiuj nazwę klucza", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Rozwiń/Zwiń", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Eksportuj", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Wyładuj Drzewo..", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "W&ytnij", ID_HEXEDIT_CUT
MENUITEM "&Kopiuj", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/pt-BR.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Copiar nome da chave", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Expandir/Reduzir", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Exportar", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "&Descarregar Seção...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "C&ut", ID_HEXEDIT_CUT
MENUITEM "&Copy", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/pt-PT.rc
Expand Up @@ -134,6 +134,14 @@ BEGIN
MENUITEM "&Copiar chave 'Nome'", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Expandir/Recolher", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "&Exportar", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Unload Hive...", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "C&ortar", ID_HEXEDIT_CUT
MENUITEM "&Copiar", ID_HEXEDIT_COPY
Expand Down
8 changes: 8 additions & 0 deletions base/applications/regedit/lang/ro-RO.rc
Expand Up @@ -136,6 +136,14 @@ BEGIN
MENUITEM "&Copiază numele cheii", ID_EDIT_COPYKEYNAME
END
POPUP ""
BEGIN
MENUITEM "Extin&de/Restrânge", ID_TREE_EXPANDBRANCH
MENUITEM SEPARATOR
MENUITEM "E&xportă", ID_TREE_EXPORT
MENUITEM SEPARATOR
MENUITEM "Eli&berare registru…", ID_REGISTRY_UNLOADHIVE, GRAYED
END
POPUP ""
BEGIN
MENUITEM "&Decupează", ID_HEXEDIT_CUT
MENUITEM "&Copiază", ID_HEXEDIT_COPY
Expand Down

0 comments on commit b280615

Please sign in to comment.