shell32: Check CPL_NEWINQUIRE message in control panel applets if we can't retrieve valid strings/icon.
This commit is contained in:
parent
5e07e0cf53
commit
4e7a07631e
|
@ -119,6 +119,22 @@ CPlApplet* Control_LoadApplet(HWND hWnd, LPCWSTR cmd, CPanel* panel)
|
||||||
LoadStringW(applet->hModule, info.idInfo,
|
LoadStringW(applet->hModule, info.idInfo,
|
||||||
applet->info[i].szInfo, sizeof(applet->info[i].szInfo) / sizeof(WCHAR));
|
applet->info[i].szInfo, sizeof(applet->info[i].szInfo) / sizeof(WCHAR));
|
||||||
|
|
||||||
|
/* some broken control panels seem to return incorrect values in CPL_INQUIRE,
|
||||||
|
but proper data in CPL_NEWINQUIRE. if we get an empty string or a null
|
||||||
|
icon, see what we can get from CPL_NEWINQUIRE */
|
||||||
|
|
||||||
|
if ((applet->info[i].szName == 0) || (lstrlenW(applet->info[i].szName) == 0))
|
||||||
|
info.idName = CPL_DYNAMIC_RES;
|
||||||
|
|
||||||
|
/* zero-length szInfo may not be a buggy applet, but it doesn't hurt for us
|
||||||
|
to check anyway */
|
||||||
|
|
||||||
|
if ((applet->info[i].szInfo == 0) || (lstrlenW(applet->info[i].szInfo) == 0))
|
||||||
|
info.idInfo = CPL_DYNAMIC_RES;
|
||||||
|
|
||||||
|
if (applet->info[i].hIcon == NULL)
|
||||||
|
info.idIcon = CPL_DYNAMIC_RES;
|
||||||
|
|
||||||
if ((info.idIcon == CPL_DYNAMIC_RES) || (info.idName == CPL_DYNAMIC_RES) ||
|
if ((info.idIcon == CPL_DYNAMIC_RES) || (info.idName == CPL_DYNAMIC_RES) ||
|
||||||
(info.idInfo == CPL_DYNAMIC_RES)) {
|
(info.idInfo == CPL_DYNAMIC_RES)) {
|
||||||
applet->proc(hWnd, CPL_NEWINQUIRE, i, (LPARAM)&newinfo);
|
applet->proc(hWnd, CPL_NEWINQUIRE, i, (LPARAM)&newinfo);
|
||||||
|
|
Loading…
Reference in New Issue