Author: jimtabor
Date: Sat Dec 10 06:00:38 2011
New Revision: 54633

URL: http://svn.reactos.org/svn/reactos?rev=54633&view=rev
Log:
[Win32k]
- Get FlashWindow working, pass all but 2 tests. Add more win32k atoms.

Modified:
    trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c
    trunk/reactos/subsystems/win32/win32k/ntuser/painting.c

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c?rev=54633&r1=54632&r2=54633&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/ntuser.c [iso-8859-1] Sat Dec 
10 06:00:38 2011
@@ -41,6 +41,11 @@
   /* System Context Help Id Atom */
   gpsi->atomContextHelpIdProp = IntAddGlobalAtom(L"SysCH", TRUE);
 
+  gpsi->atomIconSmProp = IntAddGlobalAtom(L"SysICS", TRUE);
+  gpsi->atomIconProp = IntAddGlobalAtom(L"SysIC", TRUE);
+
+  gpsi->atomFrostedWindowProp = IntAddGlobalAtom(L"SysFrostedWindow", TRUE);
+  
   AtomWndObj = IntAddGlobalAtom(L"SysWNDO", TRUE);
   AtomLayer = IntAddGlobalAtom(L"SysLayer", TRUE);
   AtomFlashWndState = IntAddGlobalAtom(L"FlashWState", TRUE);

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/painting.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/painting.c?rev=54633&r1=54632&r2=54633&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/painting.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/painting.c [iso-8859-1] Sat 
Dec 10 06:00:38 2011
@@ -776,6 +776,31 @@
     return TRUE;
 }
 
+BOOL
+FASTCALL 
+IntFlashWindowEx(PWND pWnd, PFLASHWINFO pfwi)
+{
+   PPROPERTY pprop;
+   DWORD FlashState;
+   BOOL Ret = FALSE;
+
+   pprop = IntGetProp(pWnd, AtomFlashWndState);
+   if (!pprop)
+   {
+      FlashState = pfwi->dwFlags;
+      IntSetProp(pWnd, AtomFlashWndState, (HANDLE) FlashState);
+      return TRUE;
+   }
+
+   FlashState = (DWORD)pprop->Data;
+   if ( pfwi->dwFlags == FLASHW_STOP )
+   {
+      IntRemoveProp(pWnd, AtomFlashWndState);
+      Ret = TRUE;
+   }
+   return Ret;
+}
+
 /* PUBLIC FUNCTIONS 
***********************************************************/
 
 /*
@@ -951,7 +976,7 @@
 BOOL APIENTRY
 NtUserFlashWindowEx(IN PFLASHWINFO pfwi)
 {
-   //PWND pWnd;
+   PWND pWnd;
    FLASHWINFO finfo = {0};
    BOOL Ret = TRUE;
 
@@ -971,7 +996,7 @@
 
    if (!Ret) goto Exit;
 
-   if (!(/* pWnd = */ (PWND)UserGetObject(gHandleTable, finfo.hwnd, otWindow)) 
||
+   if (!( pWnd = (PWND)UserGetObject(gHandleTable, finfo.hwnd, otWindow)) ||
         finfo.cbSize != sizeof(FLASHWINFO) ||
         finfo.dwFlags & ~(FLASHW_ALL|FLASHW_TIMER|FLASHW_TIMERNOFG) )
    {
@@ -980,7 +1005,7 @@
       goto Exit;
    }
 
-   //Ret = IntFlashWindowEx(pWnd, &finfo);
+   Ret = IntFlashWindowEx(pWnd, &finfo);
 
 Exit:
    UserLeave();


Reply via email to