Owen Rudge : shell32: Check CPL_NEWINQUIRE message in control panel applets if we can' t retrieve valid strings/icon.

Alexandre Julliard julliard at winehq.org
Fri Sep 19 07:14:55 CDT 2008


Module: wine
Branch: master
Commit: 4e7a07631efcf54e4df45644fdff95249339ddf7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4e7a07631efcf54e4df45644fdff95249339ddf7

Author: Owen Rudge <owen at 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);




More information about the wine-cvs mailing list