diff --git a/PowerEditor/src/MISC/PluginsManager/PluginsManager.cpp b/PowerEditor/src/MISC/PluginsManager/PluginsManager.cpp index c7f5f8b5c..4f0dd4836 100644 --- a/PowerEditor/src/MISC/PluginsManager/PluginsManager.cpp +++ b/PowerEditor/src/MISC/PluginsManager/PluginsManager.cpp @@ -371,7 +371,9 @@ void PluginsManager::runPluginCommand(size_t i) try { _pluginsCommands[i]._pFunc(); } catch (...) { - pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), TEXT("runPluginCommand(size_t i)")); + TCHAR funcInfo[128]; + generic_sprintf(funcInfo, TEXT("runPluginCommand(size_t i : %d)"), i); + pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), funcInfo); } } } @@ -389,7 +391,9 @@ void PluginsManager::runPluginCommand(const TCHAR *pluginName, int commandID) try { _pluginsCommands[i]._pFunc(); } catch (...) { - pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), TEXT("runPluginCommand(const TCHAR *pluginName, int commandID)")); + TCHAR funcInfo[128]; + generic_sprintf(funcInfo, TEXT("runPluginCommand(const TCHAR *pluginName : %s, int commandID : %d)"), pluginName, commandID); + pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), funcInfo); } } } @@ -408,7 +412,10 @@ void PluginsManager::notify(SCNotification *notification) try { _pluginInfos[i]->_pBeNotified(&scNotif); } catch (...) { - pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), TEXT("notify(SCNotification *notification)")); + TCHAR funcInfo[128]; + generic_sprintf(funcInfo, TEXT("notify(SCNotification *notification) : \r notification->nmhdr.code == %d\r notification->nmhdr.hwndFrom == %d\r notification->nmhdr.idFrom == %d"),\ + scNotif.nmhdr.code, scNotif.nmhdr.hwndFrom, scNotif.nmhdr.idFrom); + pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), funcInfo); } } } @@ -423,7 +430,9 @@ void PluginsManager::relayNppMessages(UINT Message, WPARAM wParam, LPARAM lParam try { _pluginInfos[i]->_pMessageProc(Message, wParam, lParam); } catch (...) { - pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), TEXT("relayNppMessages(UINT Message, WPARAM wParam, LPARAM lParam)")); + TCHAR funcInfo[128]; + generic_sprintf(funcInfo, TEXT("relayNppMessages(UINT Message : %d, WPARAM wParam : %d, LPARAM lParam : %d)"), Message, wParam, lParam); + pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), TEXT("")); } } } @@ -444,7 +453,9 @@ bool PluginsManager::relayPluginMessages(UINT Message, WPARAM wParam, LPARAM lPa try { _pluginInfos[i]->_pMessageProc(Message, wParam, lParam); } catch (...) { - pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), TEXT("relayPluginMessages(UINT Message, WPARAM wParam, LPARAM lParam)")); + TCHAR funcInfo[128]; + generic_sprintf(funcInfo, TEXT("relayPluginMessages(UINT Message : %d, WPARAM wParam : %d, LPARAM lParam : %d)"), Message, wParam, lParam); + pluginCrashAlert(_pluginsCommands[i]._pluginName.c_str(), funcInfo); } return true; } diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index e54071cfa..0c9e263c7 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -6633,15 +6633,38 @@ void Notepad_plus::changeMenuLang(generic_string & pluginsTrans, generic_string childNode = childNode->NextSibling("Item") ) { TiXmlElementA *element = childNode->ToElement(); - int x, y; - element->Attribute("posX", &x); - element->Attribute("posY", &y); + int x, y, z; + const char *xStr = element->Attribute("posX", &x); + const char *yStr = element->Attribute("posY", &y); const char *name = element->Attribute("name"); + if (!xStr || !yStr || !name) + continue; + + HMENU hSubMenu = ::GetSubMenu(_mainMenuHandle, x); + if (!hSubMenu) + continue; + HMENU hSubMenu2 = ::GetSubMenu(hSubMenu, y); + if (!hSubMenu2) + continue; + + HMENU hMenu = hSubMenu; + int pos = y; + + const char *zStr = element->Attribute("posZ", &z); + if (zStr) + { + HMENU hSubMenu3 = ::GetSubMenu(hSubMenu2, z); + if (!hSubMenu3) + continue; + hMenu = hSubMenu2; + pos = z; + } #ifdef UNICODE + const wchar_t *nameW = wmc->char2wchar(name, _nativeLangEncoding); - ::ModifyMenu(::GetSubMenu(_mainMenuHandle, x), y, MF_BYPOSITION, 0, nameW); + ::ModifyMenu(hMenu, pos, MF_BYPOSITION, 0, nameW); #else - ::ModifyMenu(::GetSubMenu(_mainMenuHandle, x), y, MF_BYPOSITION, 0, name); + ::ModifyMenu(hMenu, pos, MF_BYPOSITION, 0, name); #endif } ::DrawMenuBar(_hSelf);