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/ntu... ============================================================================== --- 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/ntu... ============================================================================== --- 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();