Author: jimtabor
Date: Tue Jul 12 18:23:04 2016
New Revision: 71904
URL:
http://svn.reactos.org/svn/reactos?rev=71904&view=rev
Log:
[Win32SS]
- Cleanup error codes for Classes and Menus.
- Update (Sync/Port) User32:Dialog to Wine Staging 1.9.11, see CORE-11368.
- Now pass exactly the same tests as windows, except for the two ToDos lines 1596 &
1617. The other test failures are on wine for not being compatible!
Modified:
trunk/reactos/win32ss/user/ntuser/class.c
trunk/reactos/win32ss/user/ntuser/window.c
trunk/reactos/win32ss/user/ntuser/window.h
trunk/reactos/win32ss/user/user32/windows/dialog.c
Modified: trunk/reactos/win32ss/user/ntuser/class.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/class.…
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/class.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/class.c [iso-8859-1] Tue Jul 12 18:23:04 2016
@@ -1283,11 +1283,7 @@
}
else
{
- if (Status == STATUS_OBJECT_NAME_NOT_FOUND)
- {
- EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
- }
- else
+ if (Status != STATUS_OBJECT_NAME_NOT_FOUND)
{
SetLastNtError(Status);
}
@@ -1362,7 +1358,6 @@
Link);
if (Class == NULL)
{
- EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
return (RTL_ATOM)0;
}else{TRACE("Step 4: 0x%p\n",Class );}
@@ -1415,7 +1410,6 @@
ERR("Class \"%wZ\" not found\n", ClassName);
}
- EngSetLastError(ERROR_CANNOT_FIND_WND_CLASS);
return NULL;
}
@@ -1539,6 +1533,7 @@
&Link);
if (ClassAtom == (RTL_ATOM)0)
{
+ EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
TRACE("UserUnregisterClass: No Class found.\n");
return FALSE;
}
Modified: trunk/reactos/win32ss/user/ntuser/window.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/window…
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/window.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/window.c [iso-8859-1] Tue Jul 12 18:23:04 2016
@@ -1921,6 +1921,7 @@
Class = IntGetAndReferenceClass(ClassName, Cs->hInstance, FALSE);
if(!Class)
{
+ EngSetLastError(ERROR_CANNOT_FIND_WND_CLASS);
ERR("Failed to find class %wZ\n", ClassName);
goto cleanup;
}
@@ -2856,6 +2857,7 @@
if (!IntGetAtomFromStringOrAtom(&ClassName,
&ClassAtom))
{
+ EngSetLastError(ERROR_CANNOT_FIND_WND_CLASS);
_SEH2_LEAVE;
}
}
Modified: trunk/reactos/win32ss/user/ntuser/window.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/window…
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/window.h [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/window.h [iso-8859-1] Tue Jul 12 18:23:04 2016
@@ -16,7 +16,7 @@
#define HAS_THINFRAME(Style, ExStyle) \
(((Style) & WS_BORDER) || (!((Style) & (WS_CHILD | WS_POPUP))))
-#define HAS_MENU(pWnd,style) ((((style) & (WS_CHILD | WS_POPUP)) != WS_CHILD)
&& IntIsMenu(UlongToHandle(pWnd->IDMenu)))
+#define HAS_MENU(pWnd,style) ((((style) & (WS_CHILD | WS_POPUP)) != WS_CHILD)
&& (pWnd->IDMenu) && IntIsMenu(UlongToHandle(pWnd->IDMenu)))
#define IntIsDesktopWindow(WndObj) \
(WndObj->spwndParent == NULL)
Modified: trunk/reactos/win32ss/user/user32/windows/dialog.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/user32/window…
==============================================================================
--- trunk/reactos/win32ss/user/user32/windows/dialog.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/user32/windows/dialog.c [iso-8859-1] Tue Jul 12 18:23:04
2016
@@ -308,7 +308,7 @@
if (GET_WORD(p))
{
- info->data = p + 1;
+ info->data = p;
p += GET_WORD(p) / sizeof(WORD);
}
else info->data = NULL;
@@ -931,7 +931,10 @@
{
pos.x += MulDiv(template.x, xBaseUnit, 4);
pos.y += MulDiv(template.y, yBaseUnit, 8);
- if (!(template.style & (WS_CHILD|DS_ABSALIGN))) ClientToScreen( owner,
&pos );
+ //
+ // REACTOS : Need an owner to be passed!!!
+ //
+ if (!(template.style & (WS_CHILD|DS_ABSALIGN)) && owner )
ClientToScreen( owner, &pos );
}
if ( !(template.style & WS_CHILD) )
{
@@ -1067,6 +1070,7 @@
if (template.style & WS_VISIBLE && !(GetWindowLongPtrW( hwnd,
GWL_STYLE ) & WS_VISIBLE))
{
ShowWindow( hwnd, SW_SHOWNORMAL ); /* SW_SHOW doesn't always work */
+ UpdateWindow( hwnd );
IntNotifyWinEvent(EVENT_SYSTEM_DIALOGSTART, hwnd, OBJID_WINDOW, CHILDID_SELF,
0);
}
return hwnd;
@@ -1674,7 +1678,7 @@
BOOL result = FALSE;
/* Perform DIALOGINFO initialization if not done */
- if(!(dlgInfo = DIALOG_get_info( hDlg, TRUE ))) return 0;
+ if(!(dlgInfo = DIALOG_get_info( hDlg, Msg == WM_NCCREATE ))) return 0;
SetWindowLongPtrW( hDlg, DWLP_MSGRESULT, 0 );
@@ -1734,7 +1738,7 @@
BOOL result = FALSE;
/* Perform DIALOGINFO initialization if not done */
- if(!(dlgInfo = DIALOG_get_info( hDlg, TRUE ))) return 0;
+ if(!(dlgInfo = DIALOG_get_info( hDlg, Msg == WM_NCCREATE ))) return 0;
SetWindowLongPtrW( hDlg, DWLP_MSGRESULT, 0 );