Module: wine Branch: master Commit: 4e7a07631efcf54e4df45644fdff95249339ddf7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4e7a07631efcf54e4df45644fd...
Author: Owen Rudge owen@owenrudge.net Date: Fri Sep 19 00:13:58 2008 +0100
shell32: Check CPL_NEWINQUIRE message in control panel applets if we can't retrieve valid strings/icon.
---
dlls/shell32/control.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/dlls/shell32/control.c b/dlls/shell32/control.c index aa5abfe..83b4418 100644 --- a/dlls/shell32/control.c +++ b/dlls/shell32/control.c @@ -119,6 +119,22 @@ CPlApplet* Control_LoadApplet(HWND hWnd, LPCWSTR cmd, CPanel* panel) LoadStringW(applet->hModule, info.idInfo, 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) || (info.idInfo == CPL_DYNAMIC_RES)) { applet->proc(hWnd, CPL_NEWINQUIRE, i, (LPARAM)&newinfo);