[ros-diffs] [greatlrd] 27602: patch from Yaroslav Ponomarenko yarryp at gmail dot com 1. adding support for SPI_GETNONCLIENTMETRICS, SPI_GETICONMETRICS, SPI_SETICONTITLELOGFONT, 2. adding few unsupport spi and print it out, it mean we do not need do a context switch for them 3. and bugfix other spi as well

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Thu Jul 12 00:11:58 CEST 2007


Author: greatlrd
Date: Thu Jul 12 02:11:58 2007
New Revision: 27602

URL: http://svn.reactos.org/svn/reactos?rev=27602&view=rev
Log:
patch from Yaroslav Ponomarenko yarryp at gmail dot com
1. adding support for  SPI_GETNONCLIENTMETRICS,  SPI_GETICONMETRICS, SPI_SETICONTITLELOGFONT, 
2. adding few unsupport spi and print it out, it mean we do not need do a context switch for them
3. and bugfix other spi as well



Modified:
    trunk/reactos/dll/win32/user32/misc/desktop.c

Modified: trunk/reactos/dll/win32/user32/misc/desktop.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/misc/desktop.c?rev=27602&r1=27601&r2=27602&view=diff
==============================================================================
--- trunk/reactos/dll/win32/user32/misc/desktop.c (original)
+++ trunk/reactos/dll/win32/user32/misc/desktop.c Thu Jul 12 02:11:58 2007
@@ -120,76 +120,113 @@
 {
   switch (uiAction)
     {
-      case SPI_SETDOUBLECLKWIDTH:
-      case SPI_SETDOUBLECLKHEIGHT:
-      case SPI_SETDOUBLECLICKTIME:
-      case SPI_SETGRADIENTCAPTIONS:
-      case SPI_SETFONTSMOOTHING:
-      case SPI_SETFOCUSBORDERHEIGHT:
-      case SPI_SETFOCUSBORDERWIDTH:
-      case SPI_SETWORKAREA:
-      case SPI_GETWORKAREA:
-      case SPI_GETFONTSMOOTHING:
-      case SPI_GETGRADIENTCAPTIONS:
-      case SPI_GETFOCUSBORDERHEIGHT:
-      case SPI_GETFOCUSBORDERWIDTH:
-      case SPI_GETMINIMIZEDMETRICS:
-      case SPI_SETMINIMIZEDMETRICS:
-        {
-           return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
-        }
+      case SPI_GETHIGHCONTRAST:
+      case SPI_SETHIGHCONTRAST:
+      case SPI_GETSOUNDSENTRY:
+      case SPI_SETSOUNDSENTRY:
+        {
+            /* FIXME: Support this accessibility SPI actions */
+            DPRINT1("FIXME: Unsupported SPI Code: %lx \n",uiAction );
+            return FALSE;
+        }
+
       case SPI_GETNONCLIENTMETRICS:
         {
-           LPNONCLIENTMETRICSA nclma = (LPNONCLIENTMETRICSA)pvParam;
+           LPNONCLIENTMETRICSA pnclma = (LPNONCLIENTMETRICSA)pvParam;
            NONCLIENTMETRICSW nclmw;
+           if(pnclma->cbSize != sizeof(NONCLIENTMETRICSA))
+           {
+               SetLastError(ERROR_INVALID_PARAMETER);
+               return FALSE;
+           }
            nclmw.cbSize = sizeof(NONCLIENTMETRICSW);
 
            if (!SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
                                       &nclmw, fWinIni))
              return FALSE;
 
-           nclma->iBorderWidth = nclmw.iBorderWidth;
-           nclma->iScrollWidth = nclmw.iScrollWidth;
-           nclma->iScrollHeight = nclmw.iScrollHeight;
-           nclma->iCaptionWidth = nclmw.iCaptionWidth;
-           nclma->iCaptionHeight = nclmw.iCaptionHeight;
-           nclma->iSmCaptionWidth = nclmw.iSmCaptionWidth;
-           nclma->iSmCaptionHeight = nclmw.iSmCaptionHeight;
-           nclma->iMenuWidth = nclmw.iMenuWidth;
-           nclma->iMenuHeight = nclmw.iMenuHeight;
-           LogFontW2A(&(nclma->lfCaptionFont), &(nclmw.lfCaptionFont));
-           LogFontW2A(&(nclma->lfSmCaptionFont), &(nclmw.lfSmCaptionFont));
-           LogFontW2A(&(nclma->lfMenuFont), &(nclmw.lfMenuFont));
-           LogFontW2A(&(nclma->lfStatusFont), &(nclmw.lfStatusFont));
-           LogFontW2A(&(nclma->lfMessageFont), &(nclmw.lfMessageFont));
+           pnclma->iBorderWidth = nclmw.iBorderWidth;
+           pnclma->iScrollWidth = nclmw.iScrollWidth;
+           pnclma->iScrollHeight = nclmw.iScrollHeight;
+           pnclma->iCaptionWidth = nclmw.iCaptionWidth;
+           pnclma->iCaptionHeight = nclmw.iCaptionHeight;
+           pnclma->iSmCaptionWidth = nclmw.iSmCaptionWidth;
+           pnclma->iSmCaptionHeight = nclmw.iSmCaptionHeight;
+           pnclma->iMenuWidth = nclmw.iMenuWidth;
+           pnclma->iMenuHeight = nclmw.iMenuHeight;
+           LogFontW2A(&(pnclma->lfCaptionFont), &(nclmw.lfCaptionFont));
+           LogFontW2A(&(pnclma->lfSmCaptionFont), &(nclmw.lfSmCaptionFont));
+           LogFontW2A(&(pnclma->lfMenuFont), &(nclmw.lfMenuFont));
+           LogFontW2A(&(pnclma->lfStatusFont), &(nclmw.lfStatusFont));
+           LogFontW2A(&(pnclma->lfMessageFont), &(nclmw.lfMessageFont));
            return TRUE;
         }
       case SPI_SETNONCLIENTMETRICS:
         {
-           LPNONCLIENTMETRICSA nclma = (LPNONCLIENTMETRICSA)pvParam;
+           LPNONCLIENTMETRICSA pnclma = (LPNONCLIENTMETRICSA)pvParam;
            NONCLIENTMETRICSW nclmw;
+           if(pnclma->cbSize != sizeof(NONCLIENTMETRICSA))
+           {
+               SetLastError(ERROR_INVALID_PARAMETER);
+               return FALSE;
+           }
            nclmw.cbSize = sizeof(NONCLIENTMETRICSW);
-           nclmw.iBorderWidth = nclma->iBorderWidth;
-           nclmw.iScrollWidth = nclma->iScrollWidth;
-           nclmw.iScrollHeight = nclma->iScrollHeight;
-           nclmw.iCaptionWidth = nclma->iCaptionWidth;
-           nclmw.iCaptionHeight = nclma->iCaptionHeight;
-           nclmw.iSmCaptionWidth = nclma->iSmCaptionWidth;
-           nclmw.iSmCaptionHeight = nclma->iSmCaptionHeight;
-           nclmw.iMenuWidth = nclma->iMenuWidth;
-           nclmw.iMenuHeight = nclma->iMenuHeight;
-           LogFontA2W(&(nclmw.lfCaptionFont), &(nclma->lfCaptionFont));
-           LogFontA2W(&(nclmw.lfSmCaptionFont), &(nclma->lfSmCaptionFont));
-           LogFontA2W(&(nclmw.lfMenuFont), &(nclma->lfMenuFont));
-           LogFontA2W(&(nclmw.lfStatusFont), &(nclma->lfStatusFont));
-           LogFontA2W(&(nclmw.lfMessageFont), &(nclma->lfMessageFont));
-
-           if (!SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
-                                      &nclmw, fWinIni))
-             return FALSE;
-
-           return TRUE;
-        }
+           nclmw.iBorderWidth = pnclma->iBorderWidth;
+           nclmw.iScrollWidth = pnclma->iScrollWidth;
+           nclmw.iScrollHeight = pnclma->iScrollHeight;
+           nclmw.iCaptionWidth = pnclma->iCaptionWidth;
+           nclmw.iCaptionHeight = pnclma->iCaptionHeight;
+           nclmw.iSmCaptionWidth = pnclma->iSmCaptionWidth;
+           nclmw.iSmCaptionHeight = pnclma->iSmCaptionHeight;
+           nclmw.iMenuWidth = pnclma->iMenuWidth;
+           nclmw.iMenuHeight = pnclma->iMenuHeight;
+           LogFontA2W(&(nclmw.lfCaptionFont), &(pnclma->lfCaptionFont));
+           LogFontA2W(&(nclmw.lfSmCaptionFont), &(pnclma->lfSmCaptionFont));
+           LogFontA2W(&(nclmw.lfMenuFont), &(pnclma->lfMenuFont));
+           LogFontA2W(&(nclmw.lfStatusFont), &(pnclma->lfStatusFont));
+           LogFontA2W(&(nclmw.lfMessageFont), &(pnclma->lfMessageFont));
+
+           return SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
+                                        &nclmw, fWinIni);
+        }
+      case SPI_GETICONMETRICS:
+          {
+              LPICONMETRICSA picma = (LPICONMETRICSA)pvParam;
+              ICONMETRICSW icmw;
+              if(picma->cbSize != sizeof(ICONMETRICSA))
+              {
+                  SetLastError(ERROR_INVALID_PARAMETER);
+                  return FALSE;
+              }
+              icmw.cbSize = sizeof(ICONMETRICSW);
+              if (!SystemParametersInfoW(uiAction, sizeof(ICONMETRICSW),
+                                        &icmw, fWinIni))
+                  return FALSE;
+              
+              picma->iHorzSpacing = icmw.iHorzSpacing;
+              picma->iVertSpacing = icmw.iVertSpacing;
+              picma->iTitleWrap = icmw.iTitleWrap;
+              LogFontW2A(&(picma->lfFont), &(icmw.lfFont));
+              return TRUE;
+          }
+      case SPI_SETICONMETRICS:
+          {
+              LPICONMETRICSA picma = (LPICONMETRICSA)pvParam;
+              ICONMETRICSW icmw;
+              if(picma->cbSize != sizeof(ICONMETRICSA))
+              {
+                  SetLastError(ERROR_INVALID_PARAMETER);
+                  return FALSE;
+              }
+              icmw.cbSize = sizeof(ICONMETRICSW);
+              icmw.iHorzSpacing = picma->iHorzSpacing;
+              icmw.iVertSpacing = picma->iVertSpacing;
+              icmw.iTitleWrap = picma->iTitleWrap;
+              LogFontA2W(&(icmw.lfFont), &(picma->lfFont));
+
+              return SystemParametersInfoW(uiAction, sizeof(ICONMETRICSW),
+                                           &icmw, fWinIni);
+          }
       case SPI_GETICONTITLELOGFONT:
         {
            LOGFONTW lfw;
@@ -198,6 +235,13 @@
            LogFontW2A(pvParam, &lfw);
            return TRUE;
         }
+      case SPI_SETICONTITLELOGFONT:
+          {
+              LPLOGFONTA plfa = (LPLOGFONTA)pvParam;
+              LOGFONTW lfw;
+              LogFontA2W(&lfw,plfa);
+              return SystemParametersInfoW(uiAction, 0, &lfw, fWinIni);
+          }
       case SPI_GETDESKWALLPAPER:
       {
         HKEY hKey;
@@ -284,8 +328,7 @@
         return Ret;
       }
     }
-
-  return FALSE;
+    return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
 }
 
 
@@ -300,6 +343,15 @@
 {
   switch(uiAction)
   {
+    case SPI_GETHIGHCONTRAST:
+    case SPI_SETHIGHCONTRAST:
+    case SPI_GETSOUNDSENTRY:
+    case SPI_SETSOUNDSENTRY:
+       {
+           /* FIXME: Support this accessibility SPI actions */
+           DPRINT1("FIXME: Unsupported SPI Code: %lx \n",uiAction );
+           return FALSE;
+       }
     case SPI_GETDESKWALLPAPER:
     {
       HKEY hKey;




More information about the Ros-diffs mailing list