mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Fixed crash when tray menu is open while the language combobox is open in Manage Settings.
This commit is contained in:
parent
81b6813e3a
commit
e14ef154f3
@ -244,7 +244,7 @@ INT_PTR CDialogAbout::OnInitDialog(WPARAM wParam, LPARAM lParam)
|
|||||||
HICON hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_RAINMETER), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
|
HICON hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_RAINMETER), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
|
||||||
SendMessage(m_Window, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
|
SendMessage(m_Window, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
|
||||||
|
|
||||||
if (wcscmp(GetString(ID_STR_ISRTL), L"1") == 0)
|
if (*GetString(ID_STR_ISRTL) == L'1')
|
||||||
{
|
{
|
||||||
// Use RTL layout if using a RTL language
|
// Use RTL layout if using a RTL language
|
||||||
SetDialogRTL();
|
SetDialogRTL();
|
||||||
|
@ -226,7 +226,7 @@ INT_PTR CDialogManage::OnInitDialog(WPARAM wParam, LPARAM lParam)
|
|||||||
HICON hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_RAINMETER), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
|
HICON hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_RAINMETER), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
|
||||||
SendMessage(m_Window, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
|
SendMessage(m_Window, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
|
||||||
|
|
||||||
if (wcscmp(GetString(ID_STR_ISRTL), L"1") == 0)
|
if (*GetString(ID_STR_ISRTL) == L'1')
|
||||||
{
|
{
|
||||||
// Use RTL layout if using a RTL language
|
// Use RTL layout if using a RTL language
|
||||||
SetDialogRTL();
|
SetDialogRTL();
|
||||||
@ -882,7 +882,7 @@ INT_PTR CDialogManage::CTabSkins::OnCommand(WPARAM wParam, LPARAM lParam)
|
|||||||
TrackPopupMenu(
|
TrackPopupMenu(
|
||||||
menu,
|
menu,
|
||||||
TPM_RIGHTBUTTON | TPM_LEFTALIGN,
|
TPM_RIGHTBUTTON | TPM_LEFTALIGN,
|
||||||
(wcscmp(GetString(ID_STR_ISRTL), L"1") == 0) ? r.right : r.left,
|
(*GetString(ID_STR_ISRTL) == L'1') ? r.right : r.left,
|
||||||
--r.bottom,
|
--r.bottom,
|
||||||
0,
|
0,
|
||||||
m_Window,
|
m_Window,
|
||||||
@ -1048,7 +1048,7 @@ INT_PTR CDialogManage::CTabSkins::OnCommand(WPARAM wParam, LPARAM lParam)
|
|||||||
TrackPopupMenu(
|
TrackPopupMenu(
|
||||||
subMenu,
|
subMenu,
|
||||||
TPM_RIGHTBUTTON | TPM_LEFTALIGN,
|
TPM_RIGHTBUTTON | TPM_LEFTALIGN,
|
||||||
(wcscmp(GetString(ID_STR_ISRTL), L"1") == 0) ? r.right : r.left,
|
(*GetString(ID_STR_ISRTL) == L'1') ? r.right : r.left,
|
||||||
--r.bottom,
|
--r.bottom,
|
||||||
0,
|
0,
|
||||||
m_Window,
|
m_Window,
|
||||||
@ -1709,43 +1709,46 @@ INT_PTR CDialogManage::CTabSettings::OnCommand(WPARAM wParam, LPARAM lParam)
|
|||||||
case IDC_MANAGESETTINGS_LANGUAGE_COMBOBOX:
|
case IDC_MANAGESETTINGS_LANGUAGE_COMBOBOX:
|
||||||
if (HIWORD(wParam) == CBN_SELCHANGE)
|
if (HIWORD(wParam) == CBN_SELCHANGE)
|
||||||
{
|
{
|
||||||
WCHAR buffer[16];
|
|
||||||
int sel = ComboBox_GetCurSel((HWND)lParam);
|
int sel = ComboBox_GetCurSel((HWND)lParam);
|
||||||
LCID lcid = (LCID)ComboBox_GetItemData((HWND)lParam, sel);
|
LCID lcid = (LCID)ComboBox_GetItemData((HWND)lParam, sel);
|
||||||
_ultow(lcid, buffer, 10);
|
if (lcid != Rainmeter->m_ResourceLCID)
|
||||||
WritePrivateProfileString(L"Rainmeter", L"Language", buffer, Rainmeter->GetIniFile().c_str());
|
|
||||||
|
|
||||||
std::wstring resource = Rainmeter->GetPath() + L"Languages\\";
|
|
||||||
resource += buffer;
|
|
||||||
resource += L".dll";
|
|
||||||
FreeLibrary(Rainmeter->m_ResourceInstance);
|
|
||||||
Rainmeter->m_ResourceInstance = LoadLibraryEx(resource.c_str(), NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
|
|
||||||
Rainmeter->m_ResourceLCID = lcid;
|
|
||||||
|
|
||||||
if (CDialogAbout::c_Dialog)
|
|
||||||
{
|
{
|
||||||
int sel = TabCtrl_GetCurSel(GetDlgItem(CDialogAbout::c_Dialog->GetWindow(), IDC_ABOUT_TAB));
|
WCHAR buffer[16];
|
||||||
SendMessage(CDialogAbout::c_Dialog->GetWindow(), WM_DELAYED_CLOSE, 0, 0);
|
_ultow(lcid, buffer, 10);
|
||||||
if (sel == 0)
|
WritePrivateProfileString(L"Rainmeter", L"Language", buffer, Rainmeter->GetIniFile().c_str());
|
||||||
{
|
|
||||||
ExecuteBang(L"!About"); // Delayed execute
|
|
||||||
}
|
|
||||||
else if (sel == 1)
|
|
||||||
{
|
|
||||||
ExecuteBang(L"!About Measures"); // Delayed execute
|
|
||||||
}
|
|
||||||
else if (sel == 2)
|
|
||||||
{
|
|
||||||
ExecuteBang(L"!About Plugins"); // Delayed execute
|
|
||||||
}
|
|
||||||
else //if (sel == 3)
|
|
||||||
{
|
|
||||||
ExecuteBang(L"!About Version"); // Delayed execute
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SendMessage(c_Dialog->GetWindow(), WM_DELAYED_CLOSE, 0, 0);
|
std::wstring resource = Rainmeter->GetPath() + L"Languages\\";
|
||||||
ExecuteBang(L"!Manage Settings"); // Delayed execute
|
resource += buffer;
|
||||||
|
resource += L".dll";
|
||||||
|
FreeLibrary(Rainmeter->m_ResourceInstance);
|
||||||
|
Rainmeter->m_ResourceInstance = LoadLibraryEx(resource.c_str(), NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
|
||||||
|
Rainmeter->m_ResourceLCID = lcid;
|
||||||
|
|
||||||
|
if (CDialogAbout::c_Dialog)
|
||||||
|
{
|
||||||
|
int sel = TabCtrl_GetCurSel(GetDlgItem(CDialogAbout::c_Dialog->GetWindow(), IDC_ABOUT_TAB));
|
||||||
|
SendMessage(CDialogAbout::c_Dialog->GetWindow(), WM_DELAYED_CLOSE, 0, 0);
|
||||||
|
if (sel == 0)
|
||||||
|
{
|
||||||
|
ExecuteBang(L"!About"); // Delayed execute
|
||||||
|
}
|
||||||
|
else if (sel == 1)
|
||||||
|
{
|
||||||
|
ExecuteBang(L"!About Measures"); // Delayed execute
|
||||||
|
}
|
||||||
|
else if (sel == 2)
|
||||||
|
{
|
||||||
|
ExecuteBang(L"!About Plugins"); // Delayed execute
|
||||||
|
}
|
||||||
|
else //if (sel == 3)
|
||||||
|
{
|
||||||
|
ExecuteBang(L"!About Version"); // Delayed execute
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SendMessage(c_Dialog->GetWindow(), WM_DELAYED_CLOSE, 0, 0);
|
||||||
|
ExecuteBang(L"!Manage Settings"); // Delayed execute
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
//
|
//
|
||||||
// Exported functions
|
// Exported functions
|
||||||
//
|
//
|
||||||
EXTERN_C
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
LIBRARY_EXPORT LPCWSTR __stdcall RmReadString(void* rm, LPCWSTR option, LPCWSTR defValue, BOOL replaceMeasures = TRUE);
|
LIBRARY_EXPORT LPCWSTR __stdcall RmReadString(void* rm, LPCWSTR option, LPCWSTR defValue, BOOL replaceMeasures = TRUE);
|
||||||
#else
|
#else
|
||||||
|
Loading…
Reference in New Issue
Block a user