[ros-diffs] [tretiakov] 25834: Patch from Preston: fix bug 1918 "Keyboard config unavailable".

tretiakov at svn.reactos.org tretiakov at svn.reactos.org
Sun Feb 18 17:35:10 CET 2007


Author: tretiakov
Date: Sun Feb 18 19:35:09 2007
New Revision: 25834

URL: http://svn.reactos.org/svn/reactos?rev=25834&view=rev
Log:
Patch from Preston: 
fix bug 1918 "Keyboard config unavailable".


Modified:
    trunk/reactos/dll/win32/shell32/control.c

Modified: trunk/reactos/dll/win32/shell32/control.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/control.c?rev=25834&r1=25833&r2=25834&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/control.c (original)
+++ trunk/reactos/dll/win32/shell32/control.c Sun Feb 18 19:35:09 2007
@@ -352,6 +352,7 @@
     unsigned 	sp = 0;
     LPWSTR	extraPmts = NULL;
     int        quoted = 0;
+    BOOL	spSet = FALSE;
 
     buffer = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(wszCmd) + 1) * sizeof(*wszCmd));
     if (!buffer) return;
@@ -366,8 +367,10 @@
 	    if (beg) {
 	        if (*beg == '@') {
 		    sp = atoiW(beg + 1);
+                    spSet = TRUE;
 		} else if (*beg == '\0') {
 		    sp = 0;
+                    spSet = TRUE;
 		} else {
 		    extraPmts = beg;
 		}
@@ -381,6 +384,9 @@
     while ((ptr = StrChrW(buffer, '"')))
 	memmove(ptr, ptr+1, lstrlenW(ptr)*sizeof(WCHAR));
 
+    while ((ptr = StrChrW(extraPmts, '"')))
+	memmove(ptr, ptr+1, lstrlenW(ptr)*sizeof(WCHAR));
+
     TRACE("cmd %s, extra %s, sp %d\n", debugstr_w(buffer), debugstr_w(extraPmts), sp);
 
     Control_LoadApplet(hWnd, buffer, panel);
@@ -393,6 +399,13 @@
 	  WARN("Out of bounds (%u >= %u), setting to 0\n", sp, applet->count);
 	  sp = 0;
        }
+
+       if ((extraPmts)&&(!spSet))
+       {
+          while ((lstrcmpiW(extraPmts, applet->info[sp].szName)) && (sp < applet->count))
+            sp++;
+       }
+
        if (applet->info[sp].dwSize) {
 	  if (!applet->proc(applet->hWnd, CPL_STARTWPARMSA, sp, (LPARAM)extraPmts))
 	     applet->proc(applet->hWnd, CPL_DBLCLK, sp, applet->info[sp].lData);




More information about the Ros-diffs mailing list