Why don't we use a macro or wrapper function, unstead of hacking shared code everywhere?

Am 25.02.2015 um 21:02 schrieb [email protected]:
Author: gadamopoulos
Date: Wed Feb 25 20:02:10 2015
New Revision: 66457

URL: http://svn.reactos.org/svn/reactos?rev=66457&view=rev
Log:
[USER32]
- button.c: Use NtUserAlterWindowStyle where wine uses WIN_SetStyle (usage and 
parameters were confirmed with windbg)

[NTUSER]
- Implement NtUserAlterWindowStyle.

Fixes remaining failures in user32:msg_controls test.

Modified:
     trunk/reactos/win32ss/user/ntuser/ntstubs.c
     trunk/reactos/win32ss/user/ntuser/window.c
     trunk/reactos/win32ss/user/user32/controls/button.c

Modified: trunk/reactos/win32ss/user/ntuser/ntstubs.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/ntstubs.c?rev=66457&r1=66456&r2=66457&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/ntstubs.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/ntstubs.c [iso-8859-1] Wed Feb 25 
20:02:10 2015
@@ -1157,19 +1157,6 @@
      return 0;
  }
-/*
- * @unimplemented
- */
-DWORD APIENTRY
-NtUserAlterWindowStyle(DWORD Unknown0,
-                       DWORD Unknown1,
-                       DWORD Unknown2)
-{
-   STUB
-
-   return(0);
-}
-
  BOOL APIENTRY NtUserAddClipboardFormatListener(
      HWND hwnd
  )

Modified: trunk/reactos/win32ss/user/ntuser/window.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/window.c?rev=66457&r1=66456&r2=66457&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/window.c  [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/window.c  [iso-8859-1] Wed Feb 25 
20:02:10 2015
@@ -3537,8 +3537,8 @@
        return FALSE;
  }
-LONG FASTCALL
-co_UserSetWindowLong(HWND hWnd, DWORD Index, LONG NewValue, BOOL Ansi)
+static LONG
+co_IntSetWindowLong(HWND hWnd, DWORD Index, LONG NewValue, BOOL Ansi, BOOL 
bAlter)
  {
     PWND Window, Parent;
     PWINSTATION_OBJECT WindowStation;
@@ -3597,6 +3597,7 @@
                 Style.styleNew &= ~WS_EX_WINDOWEDGE;
Window->ExStyle = (DWORD)Style.styleNew;
+
              co_IntSendMessage(hWnd, WM_STYLECHANGED, GWL_EXSTYLE, (LPARAM) 
&Style);
              break;
@@ -3604,7 +3605,9 @@
              OldValue = (LONG) Window->style;
              Style.styleOld = OldValue;
              Style.styleNew = NewValue;
-            co_IntSendMessage(hWnd, WM_STYLECHANGING, GWL_STYLE, (LPARAM) 
&Style);
+
+            if (!bAlter)
+                co_IntSendMessage(hWnd, WM_STYLECHANGING, GWL_STYLE, (LPARAM) 
&Style);
/* WS_CLIPSIBLINGS can't be reset on top-level windows */
              if (Window->spwndParent == UserGetDesktopWindow()) Style.styleNew 
|= WS_CLIPSIBLINGS;
@@ -3621,7 +3624,9 @@
                 DceResetActiveDCEs( Window );
              }
              Window->style = (DWORD)Style.styleNew;
-            co_IntSendMessage(hWnd, WM_STYLECHANGED, GWL_STYLE, (LPARAM) 
&Style);
+
+            if (!bAlter)
+                co_IntSendMessage(hWnd, WM_STYLECHANGED, GWL_STYLE, (LPARAM) 
&Style);
              break;
case GWL_WNDPROC:
@@ -3672,6 +3677,13 @@
     return( OldValue);
  }
+
+LONG FASTCALL
+co_UserSetWindowLong(HWND hWnd, DWORD Index, LONG NewValue, BOOL Ansi)
+{
+    return co_IntSetWindowLong(hWnd, Index, NewValue, Ansi, FALSE);
+}
+
  /*
   * NtUserSetWindowLong
   *
@@ -3686,24 +3698,45 @@
  LONG APIENTRY
  NtUserSetWindowLong(HWND hWnd, DWORD Index, LONG NewValue, BOOL Ansi)
  {
-   DECLARE_RETURN(LONG);
-
-   TRACE("Enter NtUserSetWindowLong\n");
+   LONG ret;
+
     UserEnterExclusive();
if (hWnd == IntGetDesktopWindow())
     {
        EngSetLastError(STATUS_ACCESS_DENIED);
-      RETURN( 0);
-   }
-
-   RETURN( co_UserSetWindowLong(hWnd, Index, NewValue, Ansi));
-
-CLEANUP:
-   TRACE("Leave NtUserSetWindowLong, ret=%i\n",_ret_);
+      UserLeave();
+      return 0;
+   }
+
+   ret = co_IntSetWindowLong(hWnd, Index, NewValue, Ansi, FALSE);
+
     UserLeave();
-   END_CLEANUP;
-}
+
+   return ret;
+}
+
+DWORD APIENTRY
+NtUserAlterWindowStyle(HWND hWnd, DWORD Index, LONG NewValue)
+{
+   LONG ret;
+
+   UserEnterExclusive();
+
+   if (hWnd == IntGetDesktopWindow())
+   {
+      EngSetLastError(STATUS_ACCESS_DENIED);
+      UserLeave();
+      return 0;
+   }
+
+   ret = co_IntSetWindowLong(hWnd, Index, NewValue, FALSE, TRUE);
+
+   UserLeave();
+
+   return ret;
+}
+
/*
   * NtUserSetWindowWord

Modified: trunk/reactos/win32ss/user/user32/controls/button.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/user32/controls/button.c?rev=66457&r1=66456&r2=66457&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/user32/controls/button.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/user32/controls/button.c [iso-8859-1] Wed Feb 25 
20:02:10 2015
@@ -298,11 +298,10 @@
          /* XP turns a BS_USERBUTTON into BS_PUSHBUTTON */
          if (btn_type == BS_USERBUTTON )
          {
+            style = (style & ~BS_TYPEMASK) | BS_PUSHBUTTON;
  #ifdef __REACTOS__
-            style = (style & ~BS_TYPEMASK) | BS_PUSHBUTTON;
-            SetWindowLongPtrW( hWnd, GWL_STYLE, style );
+            NtUserAlterWindowStyle(hWnd, GWL_STYLE, style );
  #else
-            style = (style & ~BS_TYPEMASK) | BS_PUSHBUTTON;
              WIN_SetStyle( hWnd, style, BS_TYPEMASK & ~style );
  #endif
          }
@@ -508,8 +507,11 @@
          if ((wParam & BS_TYPEMASK) >= MAX_BTN_TYPE) break;
          btn_type = wParam & BS_TYPEMASK;
          style = (style & ~BS_TYPEMASK) | btn_type;
-        SetWindowLongPtrW( hWnd, GWL_STYLE, style );
-        //WIN_SetStyle( hWnd, style, BS_TYPEMASK & ~style );
+#ifdef __REACTOS__
+            NtUserAlterWindowStyle(hWnd, GWL_STYLE, style );
+#else
+            WIN_SetStyle( hWnd, style, BS_TYPEMASK & ~style );
+#endif
/* Only redraw if lParam flag is set.*/
          if (lParam)
@@ -565,7 +567,7 @@
  #ifdef __REACTOS__
              if (wParam) style |= WS_TABSTOP;
              else style &= ~WS_TABSTOP;
-            SetWindowLongPtrW( hWnd, GWL_STYLE, style );
+            NtUserAlterWindowStyle(hWnd, GWL_STYLE, style );
  #else
              if (wParam) WIN_SetStyle( hWnd, WS_TABSTOP, 0 );
              else WIN_SetStyle( hWnd, 0, WS_TABSTOP );





Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to