[ros-diffs] [fireball] 43148: - Update to Wine 1.1.29.

fireball at svn.reactos.org fireball at svn.reactos.org
Fri Sep 25 20:24:36 CEST 2009


Author: fireball
Date: Fri Sep 25 20:24:36 2009
New Revision: 43148

URL: http://svn.reactos.org/svn/reactos?rev=43148&view=rev
Log:
- Update to Wine 1.1.29.

Modified:
    branches/arwinss/reactos/dll/win32/gdi32/   (props changed)
    branches/arwinss/reactos/dll/win32/gdi32/freetype.c
    branches/arwinss/reactos/dll/win32/gdi32/metafile.c
    branches/arwinss/reactos/dll/win32/gdi32/opengl.c
    branches/arwinss/reactos/dll/win32/user32/   (props changed)
    branches/arwinss/reactos/dll/win32/user32/button.c
    branches/arwinss/reactos/dll/win32/user32/defdlg.c
    branches/arwinss/reactos/dll/win32/user32/defwnd.c
    branches/arwinss/reactos/dll/win32/user32/dialog.c
    branches/arwinss/reactos/dll/win32/user32/edit.c
    branches/arwinss/reactos/dll/win32/user32/focus.c
    branches/arwinss/reactos/dll/win32/user32/hook.c
    branches/arwinss/reactos/dll/win32/user32/menu.c
    branches/arwinss/reactos/dll/win32/user32/message.c
    branches/arwinss/reactos/dll/win32/user32/resources/user32.rc
    branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc
    branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc
    branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc
    branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc
    branches/arwinss/reactos/dll/win32/user32/spy.c
    branches/arwinss/reactos/dll/win32/user32/win.c
    branches/arwinss/reactos/dll/win32/user32/winpos.c
    branches/arwinss/reactos/include/reactos/wine/server_protocol.h
    branches/arwinss/reactos/subsystems/win32/win32k/include/request.h   (contents, props changed)

Propchange: branches/arwinss/reactos/dll/win32/gdi32/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Sep 25 20:24:36 2009
@@ -1,0 +1,3 @@
+/branches/ros-amd64-bringup/reactos/dll/win32/gdi32:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080
+/trunk/reactos/dll/win32/gdi32:42000-43126
+/vendor/wine/dlls/gdi32/current:43136

Modified: branches/arwinss/reactos/dll/win32/gdi32/freetype.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32/freetype.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/gdi32/freetype.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/gdi32/freetype.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -1737,7 +1737,7 @@
             if(psub)
             {
                 TRACE("%s: SystemLink entry for substituted font, ignoring\n", debugstr_w(value));
-                continue;
+                goto next;
             }
             font_link = HeapAlloc(GetProcessHeap(), 0, sizeof(*font_link));
             font_link->font_name = strdupW(value);
@@ -1786,6 +1786,7 @@
                 }
             }
             list_add_tail(&system_links, &font_link->entry);
+        next:
             val_len = max_val + 1;
             data_len = max_data;
         }
@@ -5661,7 +5662,19 @@
         TM.tmAveCharWidth = 1; 
     }
     TM.tmMaxCharWidth = (pFT_MulFix(ft_face->bbox.xMax - ft_face->bbox.xMin, x_scale) + 32) >> 6;
-    TM.tmWeight = (font->fake_bold || (ft_face->style_flags & FT_STYLE_FLAG_BOLD)) ? FW_BOLD : FW_REGULAR;
+    TM.tmWeight = FW_REGULAR;
+    if (font->fake_bold)
+        TM.tmWeight = FW_BOLD;
+    else
+    {
+        if (ft_face->style_flags & FT_STYLE_FLAG_BOLD)
+        {
+            if (pOS2->usWeightClass > FW_MEDIUM)
+                TM.tmWeight = pOS2->usWeightClass;
+        }
+        else if (pOS2->usWeightClass <= FW_MEDIUM)
+            TM.tmWeight = pOS2->usWeightClass;
+    }
     TM.tmOverhang = 0;
     TM.tmDigitizedAspectX = 300;
     TM.tmDigitizedAspectY = 300;
@@ -5868,6 +5881,7 @@
     child->font->scale_y = font->scale_y;
     hfontlist = HeapAlloc(GetProcessHeap(), 0, sizeof(*hfontlist));
     hfontlist->hfont = CreateFontIndirectW(&font->font_desc.lf);
+    child->font->name = strdupW(child->face->family->FamilyName);
     list_add_head(&child->font->hfontlist, &hfontlist->entry);
     child->font->base_font = font;
     list_add_head(&child_font_list, &child->font->entry);

Modified: branches/arwinss/reactos/dll/win32/gdi32/metafile.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32/metafile.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/gdi32/metafile.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/gdi32/metafile.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -1222,6 +1222,26 @@
     return ret;
 }
 
+/*******************************************************************
+ *        muldiv
+ *
+ * Behaves somewhat differently to MulDiv when the answer is -ve
+ * and also rounds n.5 towards zero
+ */
+static INT muldiv(INT m1, INT m2, INT d)
+{
+    LONGLONG ret;
+
+    ret = ((LONGLONG)m1 * m2 + d/2) / d; /* Always add d/2 even if ret will be -ve */
+
+    if((LONGLONG)m1 * m2 * 2 == (2 * ret - 1) * d) /* If the answer is exactly n.5 round towards zero */
+    {
+        if(ret > 0) ret--;
+        else ret++;
+    }
+    return ret;
+}
+
 /******************************************************************
  *         set_window
  *
@@ -1247,28 +1267,28 @@
     case MM_TEXT:
     case MM_ISOTROPIC:
     case MM_ANISOTROPIC:
-        pt.y = MulDiv(header.rclFrame.top, vert_res, vert_size * 100);
-        pt.x = MulDiv(header.rclFrame.left, horz_res, horz_size * 100);
+        pt.y = muldiv(header.rclFrame.top, vert_res, vert_size * 100);
+        pt.x = muldiv(header.rclFrame.left, horz_res, horz_size * 100);
         break;
     case MM_LOMETRIC:
-        pt.y = MulDiv(-header.rclFrame.top, 1, 10) + 1;
-        pt.x = MulDiv( header.rclFrame.left, 1, 10);
+        pt.y = muldiv(-header.rclFrame.top, 1, 10) + 1;
+        pt.x = muldiv( header.rclFrame.left, 1, 10);
         break;
     case MM_HIMETRIC:
         pt.y = -header.rclFrame.top + 1;
-        pt.x = header.rclFrame.left;
+        pt.x = (header.rclFrame.left >= 0) ? header.rclFrame.left : header.rclFrame.left + 1; /* See the tests */
         break;
     case MM_LOENGLISH:
-        pt.y = MulDiv(-header.rclFrame.top, 10, 254) + 1;
-        pt.x = MulDiv( header.rclFrame.left, 10, 254);
+        pt.y = muldiv(-header.rclFrame.top, 10, 254) + 1;
+        pt.x = muldiv( header.rclFrame.left, 10, 254);
         break;
     case MM_HIENGLISH:
-        pt.y = MulDiv(-header.rclFrame.top, 100, 254) + 1;
-        pt.x = MulDiv( header.rclFrame.left, 100, 254);
+        pt.y = muldiv(-header.rclFrame.top, 100, 254) + 1;
+        pt.x = muldiv( header.rclFrame.left, 100, 254);
         break;
     case MM_TWIPS:
-        pt.y = MulDiv(-header.rclFrame.top, 72 * 20, 2540) + 1;
-        pt.x = MulDiv( header.rclFrame.left, 72 * 20, 2540);
+        pt.y = muldiv(-header.rclFrame.top, 72 * 20, 2540) + 1;
+        pt.x = muldiv( header.rclFrame.left, 72 * 20, 2540);
         break;
     default:
         WARN("Unknown map mode %d\n", map_mode);
@@ -1276,8 +1296,8 @@
     }
     SetWindowOrgEx(hdc, pt.x, pt.y, NULL);
 
-    pt.x = MulDiv(header.rclFrame.right - header.rclFrame.left, horz_res, horz_size * 100);
-    pt.y = MulDiv(header.rclFrame.bottom - header.rclFrame.top, vert_res, vert_size * 100);
+    pt.x = muldiv(header.rclFrame.right - header.rclFrame.left, horz_res, horz_size * 100);
+    pt.y = muldiv(header.rclFrame.bottom - header.rclFrame.top, vert_res, vert_size * 100);
     SetWindowExtEx(hdc, pt.x, pt.y, NULL);
     return TRUE;
 }

Modified: branches/arwinss/reactos/dll/win32/gdi32/opengl.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32/opengl.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/gdi32/opengl.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/gdi32/opengl.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -168,7 +168,7 @@
 
     TRACE("(%p)\n", pbuffer);
 
-    if (!dc) return FALSE;
+    if (!dc) return 0;
 
     /* The display driver has to do the rest of the work because
      * we need access to lowlevel datatypes which we can't access here
@@ -338,7 +338,7 @@
 
     /* Retrieve the global hDC to get access to the driver.  */
     dc = OPENGL_GetDefaultDC();
-    if (!dc) return FALSE;
+    if (!dc) return NULL;
 
     if (!dc->funcs->pwglGetProcAddress) FIXME(" :stub\n");
     else ret = dc->funcs->pwglGetProcAddress(func);

Propchange: branches/arwinss/reactos/dll/win32/user32/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Sep 25 20:24:36 2009
@@ -1,0 +1,3 @@
+/branches/ros-amd64-bringup/reactos/dll/win32/user32:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080
+/trunk/reactos/dll/win32/user32:42000-43126
+/vendor/wine/dlls/user32/current:43136

Modified: branches/arwinss/reactos/dll/win32/user32/button.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/button.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/button.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/button.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -836,6 +836,9 @@
     hOldBrush = SelectObject(hDC,GetSysColorBrush(COLOR_BTNFACE));
     oldBkMode = SetBkMode(hDC, TRANSPARENT);
 
+    /* completely skip the drawing if only focus has changed */
+    if (action == ODA_FOCUS) goto draw_focus;
+
     if (get_button_type(style) == BS_DEFPUSHBUTTON)
     {
         Rectangle(hDC, rc.left, rc.top, rc.right, rc.bottom);
@@ -879,7 +882,9 @@
 
     SetTextColor( hDC, oldTxtColor );
 
-    if (state & BUTTON_HASFOCUS)
+draw_focus:
+    if ((action == ODA_FOCUS) ||
+        ((action == ODA_DRAWENTIRE) && (state & BUTTON_HASFOCUS)))
     {
         InflateRect( &focus_rect, -1, -1 );
         IntersectRect(&focus_rect, &focus_rect, &rc);

Modified: branches/arwinss/reactos/dll/win32/user32/defdlg.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/defdlg.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/defdlg.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/defdlg.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -345,7 +345,10 @@
 
     wndPtr = WIN_GetPtr( hwnd );
     if (!wndPtr || wndPtr == WND_OTHER_PROCESS || wndPtr == WND_DESKTOP)
+    {
+        SetLastError( ERROR_INVALID_WINDOW_HANDLE );
         return NULL;
+    }
 
     dlgInfo = wndPtr->dlgInfo;
 
@@ -383,7 +386,7 @@
     BOOL result = FALSE;
 
     /* Perform DIALOGINFO initialization if not done */
-    if(!(dlgInfo = DIALOG_get_info(hwnd32, TRUE))) return -1;
+    if(!(dlgInfo = DIALOG_get_info(hwnd32, TRUE))) return 0;
 
     SetWindowLongPtrW( hwnd32, DWLP_MSGRESULT, 0 );
 
@@ -435,7 +438,7 @@
     BOOL result = FALSE;
 
     /* Perform DIALOGINFO initialization if not done */
-    if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return -1;
+    if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return 0;
 
     SetWindowLongPtrW( hwnd, DWLP_MSGRESULT, 0 );
 
@@ -486,7 +489,7 @@
     DLGPROC dlgproc;
 
     /* Perform DIALOGINFO initialization if not done */
-    if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return -1;
+    if(!(dlgInfo = DIALOG_get_info( hwnd, TRUE ))) return 0;
 
     SetWindowLongPtrW( hwnd, DWLP_MSGRESULT, 0 );
 

Modified: branches/arwinss/reactos/dll/win32/user32/defwnd.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/defwnd.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/defwnd.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/defwnd.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -66,11 +66,16 @@
 
     if (!(winpos->flags & SWP_NOCLIENTSIZE) || (winpos->flags & SWP_STATECHANGED))
     {
-        WPARAM wp = SIZE_RESTORED;
-        if (IsZoomed(hwnd)) wp = SIZE_MAXIMIZED;
-        else if (IsIconic(hwnd)) wp = SIZE_MINIMIZED;
-
-        SendMessageW( hwnd, WM_SIZE, wp, MAKELONG(rect.right-rect.left, rect.bottom-rect.top) );
+        if (IsIconic( hwnd ))
+        {
+            SendMessageW( hwnd, WM_SIZE, SIZE_MINIMIZED, 0 );
+        }
+        else
+        {
+            WPARAM wp = IsZoomed( hwnd ) ? SIZE_MAXIMIZED : SIZE_RESTORED;
+
+            SendMessageW( hwnd, WM_SIZE, wp, MAKELONG(rect.right-rect.left, rect.bottom-rect.top) );
+        }
     }
 }
 
@@ -216,7 +221,7 @@
    * Client area
    */
   if ( uFlags & PRF_CLIENT)
-    SendMessageW(hwnd, WM_PRINTCLIENT, (WPARAM)hdc, PRF_CLIENT);
+    SendMessageW(hwnd, WM_PRINTCLIENT, (WPARAM)hdc, uFlags);
 }
 
 

Modified: branches/arwinss/reactos/dll/win32/user32/dialog.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/dialog.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/dialog.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/dialog.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -673,7 +673,7 @@
     dlgInfo->hMenu       = hMenu;
     dlgInfo->xBaseUnit   = xBaseUnit;
     dlgInfo->yBaseUnit   = yBaseUnit;
-    dlgInfo->idResult    = 0;
+    dlgInfo->idResult    = IDOK;
     dlgInfo->flags       = flags;
     dlgInfo->hDialogHeap = 0;
 
@@ -808,7 +808,7 @@
                 if (!GetMessageW( &msg, 0, 0, 0 )) break;
             }
 
-            if (!IsWindow( hwnd )) return -1;
+            if (!IsWindow( hwnd )) return 0;
             if (!(dlgInfo->flags & DF_END) && !IsDialogMessageW( hwnd, &msg))
             {
                 TranslateMessage( &msg );

Modified: branches/arwinss/reactos/dll/win32/user32/edit.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/edit.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/edit.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/edit.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -83,6 +83,8 @@
 #define EF_USE_SOFTBRK		0x0100	/* Enable soft breaks in text. */
 #define EF_APP_HAS_HANDLE       0x0200  /* Set when an app sends EM_[G|S]ETHANDLE.  We are in sole control of
                                            the text buffer if this is clear. */
+#define EF_DIALOGMODE           0x0400  /* Indicates that we are inside a dialog window */
+
 typedef enum
 {
 	END_0 = 0,			/* line ends with terminating '\0' character */
@@ -3101,22 +3103,9 @@
  * controls without ES_WANTRETURN would attempt to detect whether it is inside
  * a dialog box or not.
  */
-static BOOL EDIT_IsInsideDialog(EDITSTATE *es)
-{
-    WND *pParent;
-    BOOL r = FALSE;
-
-    if (es->hwndParent)
-    {
-        pParent = WIN_GetPtr(es->hwndParent);
-        if (pParent && pParent != WND_OTHER_PROCESS && pParent != WND_DESKTOP)
-        {
-            if (pParent->flags & WIN_ISDIALOG)
-                r = TRUE;
-            WIN_ReleasePtr(pParent);
-        }
-    }
-    return r;
+static inline BOOL EDIT_IsInsideDialog(EDITSTATE *es)
+{
+    return (es->flags & EF_DIALOGMODE);
 }
 
 
@@ -3568,32 +3557,32 @@
 	    /* If the edit doesn't want the return send a message to the default object */
 	    if(!(es->style & ES_MULTILINE) || !(es->style & ES_WANTRETURN))
 	    {
-		HWND hwndParent;
-		DWORD dw;
-
-                if (!EDIT_IsInsideDialog(es)) return 1;
+                DWORD dw;
+
+                if (!EDIT_IsInsideDialog(es)) break;
                 if (control) break;
-                hwndParent = GetParent(es->hwndSelf);
-                dw = SendMessageW( hwndParent, DM_GETDEFID, 0, 0 );
-		if (HIWORD(dw) == DC_HASDEFID)
-		{
-		    SendMessageW( hwndParent, WM_COMMAND,
-				  MAKEWPARAM( LOWORD(dw), BN_CLICKED ),
- 			      (LPARAM)GetDlgItem( hwndParent, LOWORD(dw) ) );
-		}
-                else
-                    SendMessageW( hwndParent, WM_COMMAND, IDOK, (LPARAM)GetDlgItem( hwndParent, IDOK ) );
+                dw = SendMessageW(es->hwndParent, DM_GETDEFID, 0, 0);
+                if (HIWORD(dw) == DC_HASDEFID)
+                {
+                    HWND hwDefCtrl = GetDlgItem(es->hwndParent, LOWORD(dw));
+                    if (hwDefCtrl)
+                    {
+                        SendMessageW(es->hwndParent, WM_NEXTDLGCTL, (WPARAM)hwDefCtrl, (LPARAM)TRUE);
+                        PostMessageW(hwDefCtrl, WM_KEYDOWN, VK_RETURN, 0);
+                    }
+                }
 	    }
 	    break;
         case VK_ESCAPE:
-	    if (!(es->style & ES_MULTILINE))
-                SendMessageW(GetParent(es->hwndSelf), WM_COMMAND, IDCANCEL, (LPARAM)GetDlgItem( GetParent(es->hwndSelf), IDCANCEL ) );
+            if ((es->style & ES_MULTILINE) && EDIT_IsInsideDialog(es))
+                PostMessageW(es->hwndParent, WM_CLOSE, 0, 0);
             break;
         case VK_TAB:
-            SendMessageW(es->hwndParent, WM_NEXTDLGCTL, shift, 0);
+            if ((es->style & ES_MULTILINE) && EDIT_IsInsideDialog(es))
+                SendMessageW(es->hwndParent, WM_NEXTDLGCTL, shift, 0);
             break;
 	}
-	return 0;
+        return TRUE;
 }
 
 
@@ -4946,27 +4935,21 @@
 		if (es->style & ES_MULTILINE)
 		   result |= DLGC_WANTALLKEYS;
 
-		if (lParam && (((LPMSG)lParam)->message == WM_KEYDOWN))
-		{
-		   int vk = (int)((LPMSG)lParam)->wParam;
-
-                   if (es->hwndListBox)
-                   {
-                       if (vk == VK_RETURN || vk == VK_ESCAPE)
-                           if (SendMessageW(GetParent(hwnd), CB_GETDROPPEDSTATE, 0, 0))
-                               result |= DLGC_WANTMESSAGE;
-                   }
-                   else
-                   {
-                       switch (vk)
-                       {
-                           case VK_ESCAPE:
-                               SendMessageW(GetParent(hwnd), WM_CLOSE, 0, 0);
-                               break;
-                           default:
-                               break;
-                       }
-                   }
+                if (lParam)
+                {
+                    es->flags|=EF_DIALOGMODE;
+
+                    if (((LPMSG)lParam)->message == WM_KEYDOWN)
+                    {
+                        int vk = (int)((LPMSG)lParam)->wParam;
+
+                        if (es->hwndListBox)
+                        {
+                            if (vk == VK_RETURN || vk == VK_ESCAPE)
+                                if (SendMessageW(GetParent(hwnd), CB_GETDROPPEDSTATE, 0, 0))
+                                    result |= DLGC_WANTMESSAGE;
+                        }
+                  }
                 }
 		break;
 

Modified: branches/arwinss/reactos/dll/win32/user32/focus.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/focus.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/focus.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/focus.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -193,7 +193,7 @@
     }
     SERVER_END_REQ;
 
-    if (ret)
+    if (ret && previous != hwnd)
     {
         if (send_msg_old)  /* old window belongs to other thread */
             SendNotifyMessageW( previous, WM_WINE_SETACTIVEWINDOW, 0, 0 );

Modified: branches/arwinss/reactos/dll/win32/user32/hook.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/hook.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/hook.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/hook.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -322,7 +322,7 @@
     {
         TRACE( "loading %s\n", debugstr_w(module) );
         /* FIXME: the library will never be freed */
-        if (!(mod = LoadLibraryW(module))) return NULL;
+        if (!(mod = LoadLibraryExW(module, NULL, LOAD_WITH_ALTERED_SEARCH_PATH))) return NULL;
     }
     return (char *)mod + (ULONG_PTR)proc;
 }

Modified: branches/arwinss/reactos/dll/win32/user32/menu.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/menu.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/menu.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/menu.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -113,7 +113,7 @@
     DWORD	dwContextHelpID;
     DWORD	dwMenuData;	/* application defined value */
     HMENU       hSysMenuOwner;  /* Handle to the dummy sys menu holder */
-    SIZE        maxBmpSize;     /* Maximum size of the bitmap items */
+    WORD        textOffset;     /* Offset of text when items have both bitmaps and text */
 } POPUPMENU, *LPPOPUPMENU;
 
 /* internal flags for menu tracking */
@@ -147,6 +147,11 @@
   /*  top and bottom margins for popup menus */
 #define MENU_TOP_MARGIN 3
 #define MENU_BOTTOM_MARGIN 2
+
+/* maximum allowed depth of any branch in the menu tree.
+ * This value is slightly larger than in windows (25) to
+ * stay on the safe side. */
+#define MAXMENUDEPTH 30
 
   /* (other menu->FocusedItem values give the position of the focused item) */
 #define NO_SELECTED_ITEM  0xffff
@@ -185,6 +190,8 @@
 static LRESULT WINAPI PopupMenuWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
 
 DWORD WINAPI DrawMenuBarTemp(HWND hwnd, HDC hDC, LPRECT lprect, HMENU hMenu, HFONT hFont);
+
+static BOOL SetMenuItemInfo_common( MENUITEM *, const MENUITEMINFOW *, BOOL);
 
 /*********************************************************************
  * menu class descriptor
@@ -1065,8 +1072,7 @@
             /* Keep the size of the bitmap in callback mode to be able
              * to draw it correctly */
             lpitem->bmpsize = size;
-            lppop->maxBmpSize.cx = max( lppop->maxBmpSize.cx, size.cx);
-            lppop->maxBmpSize.cy = max( lppop->maxBmpSize.cy, size.cy);
+            lppop->textOffset = max( lppop->textOffset, size.cx);
             lpitem->rect.right += size.cx + 2;
             itemheight = size.cy + 2;
         }
@@ -1160,6 +1166,7 @@
     MENUITEM *lpitem;
     HDC hdc;
     UINT start, i;
+    int textandbmp = FALSE;
     int orgX, orgY, maxX, maxTab, maxTabWidth, maxHeight;
 
     lppop->Width = lppop->Height = 0;
@@ -1171,8 +1178,7 @@
     start = 0;
     maxX = 2 + 1;
 
-    lppop->maxBmpSize.cx = 0;
-    lppop->maxBmpSize.cy = 0;
+    lppop->textOffset = 0;
 
     while (start < lppop->nItems)
     {
@@ -1197,6 +1203,7 @@
 		maxTab = max( maxTab, lpitem->xTab );
 		maxTabWidth = max(maxTabWidth,lpitem->rect.right-lpitem->xTab);
 	    }
+            if( lpitem->text && lpitem->hbmpItem) textandbmp = TRUE;
 	}
 
 	  /* Finish the column (set all items to the largest width found) */
@@ -1212,6 +1219,12 @@
     }
 
     lppop->Width  = maxX;
+    /* if none of the items have both text and bitmap then
+     * the text and bitmaps are all aligned on the left. If there is at
+     * least one item with both text and bitmap then bitmaps are
+     * on the left and texts left aligned with the right hand side
+     * of the bitmaps */
+    if( !textandbmp) lppop->textOffset = 0;
 
     /* space for 3d border */
     lppop->Height += MENU_BOTTOM_MARGIN;
@@ -1258,8 +1271,7 @@
     maxY = lprect->top+1;
     start = 0;
     helpPos = ~0U;
-    lppop->maxBmpSize.cx = 0;
-    lppop->maxBmpSize.cy = 0;
+    lppop->textOffset = 0;
     while (start < lppop->nItems)
     {
 	lpitem = &lppop->items[start];
@@ -1652,7 +1664,7 @@
 			DT_LEFT | DT_VCENTER | DT_SINGLELINE;
 
         if( !(menu->dwStyle & MNS_CHECKORBMP))
-            rect.left += menu->maxBmpSize.cx;
+            rect.left += menu->textOffset;
 
 	if ( lpitem->fState & MFS_DEFAULT )
 	{
@@ -1754,6 +1766,7 @@
 
             if( (menu = MENU_GetMenu( hmenu )))
             {
+                TRACE("hmenu %p Style %08x\n", hmenu, menu->dwStyle);
                 /* draw menu items */
                 if( menu->nItems)
                 {
@@ -2049,92 +2062,6 @@
 
 
 /**********************************************************************
- *         MENU_SetItemData
- *
- * Set an item's flags, id and text ptr. Called by InsertMenu() and
- * ModifyMenu().
- */
-static BOOL MENU_SetItemData( MENUITEM *item, UINT flags, UINT_PTR id,
-                                LPCWSTR str )
-{
-    debug_print_menuitem("MENU_SetItemData from: ", item, "");
-    TRACE("flags=%x str=%p\n", flags, str);
-
-    if (IS_STRING_ITEM(flags))
-    {
-        LPWSTR prevText = item->text;
-        if (!str)
-        {
-            flags |= MF_SEPARATOR;
-            item->text = NULL;
-        }
-        else
-        {
-            LPWSTR text;
-            /* Item beginning with a backspace is a help item */
-            if (*str == '\b')
-            {
-                flags |= MF_HELP;
-                str++;
-            }
-            if (!(text = HeapAlloc( GetProcessHeap(), 0, (strlenW(str)+1) * sizeof(WCHAR) )))
-                return FALSE;
-            strcpyW( text, str );
-            item->text = text;
-        }
-        item->hbmpItem = NULL;
-        HeapFree( GetProcessHeap(), 0, prevText );
-    }
-    else if(( flags & MFT_BITMAP)) {
-        item->hbmpItem = (HBITMAP)(LOWORD(str));
-        /* setting bitmap clears text */
-        HeapFree( GetProcessHeap(), 0, item->text );
-        item->text = NULL;
-    }
-
-    if (flags & MF_SEPARATOR) flags |= MF_GRAYED | MF_DISABLED;
-
-    if (flags & MF_OWNERDRAW)
-        item->dwItemData = (DWORD_PTR)str;
-    else
-        item->dwItemData = 0;
-
-    if ((item->fType & MF_POPUP) && (flags & MF_POPUP) && (item->hSubMenu != (HMENU)id) )
-	DestroyMenu( item->hSubMenu );   /* ModifyMenu() spec */
-
-    if (flags & MF_POPUP)
-    {
-	POPUPMENU *menu = MENU_GetMenu((HMENU)id);
-        if (menu) menu->wFlags |= MF_POPUP;
-	else
-        {
-            item->wID = 0;
-            item->hSubMenu = 0;
-            item->fType = 0;
-            item->fState = 0;
-	    return FALSE;
-        }
-    }
-
-    item->wID = id;
-    if (flags & MF_POPUP) item->hSubMenu = (HMENU)id;
-
-    if ((item->fType & MF_POPUP) && !(flags & MF_POPUP) )
-      flags |= MF_POPUP; /* keep popup */
-
-    item->fType = flags & TYPE_MASK;
-    /* MFS_DEFAULT is not accepted. MF_HILITE is not listed as a valid flag
-       for ModifyMenu, but Windows accepts it */
-    item->fState = flags & MENUITEMINFO_STATE_MASK & ~MFS_DEFAULT;
-
-    /* Don't call SetRectEmpty here! */
-
-    debug_print_menuitem("MENU_SetItemData to  : ", item, "");
-    return TRUE;
-}
-
-
-/**********************************************************************
  *         MENU_InsertItem
  *
  * Insert (allocate) a new item into a menu.
@@ -2165,8 +2092,7 @@
      * Note: XP treats only bitmap handles 1 - 6 as "magic" ones
      * regardless of their id.
      */
-    while (pos > 0 && (menu->items[pos - 1].fType & MFT_BITMAP) &&
-           (INT_PTR)menu->items[pos - 1].hbmpItem >= (INT_PTR)HBMMENU_SYSTEM &&
+    while (pos > 0 && (INT_PTR)menu->items[pos - 1].hbmpItem >= (INT_PTR)HBMMENU_SYSTEM &&
            (INT_PTR)menu->items[pos - 1].hbmpItem <= (INT_PTR)HBMMENU_MBAR_CLOSE_D)
         pos--;
 
@@ -3547,6 +3473,14 @@
 	    EndPaint( hwnd, &ps );
             return 0;
 	}
+
+    case WM_PRINTCLIENT:
+	{
+	    MENU_DrawPopupMenu( hwnd, (HDC)wParam,
+                                (HMENU)GetWindowLongPtrW( hwnd, 0 ) );
+            return 0;
+        }
+
     case WM_ERASEBKGND:
         return 1;
 
@@ -3828,6 +3762,49 @@
 }
 
 
+/**********************************************************************
+ *         MENU_mnu2mnuii
+ *
+ * Uses flags, id and text ptr, passed by InsertMenu() and
+ * ModifyMenu() to setup a MenuItemInfo structure.
+ */
+static void MENU_mnu2mnuii( UINT flags, UINT_PTR id, LPCWSTR str,
+        LPMENUITEMINFOW pmii)
+{
+    ZeroMemory( pmii, sizeof( MENUITEMINFOW));
+    pmii->cbSize = sizeof( MENUITEMINFOW);
+    pmii->fMask = MIIM_STATE | MIIM_ID | MIIM_FTYPE;
+    /* setting bitmap clears text and vice versa */
+    if( IS_STRING_ITEM(flags)) {
+        pmii->fMask |= MIIM_STRING | MIIM_BITMAP;
+        if( !str)
+            flags |= MF_SEPARATOR;
+        /* Item beginning with a backspace is a help item */
+        /* FIXME: wrong place, this is only true in win16 */
+        else if( *str == '\b') {
+            flags |= MF_HELP;
+            str++;
+        }
+        pmii->dwTypeData = (LPWSTR)str;
+    } else if( flags & MFT_BITMAP){
+        pmii->fMask |= MIIM_BITMAP | MIIM_STRING;
+        pmii->hbmpItem = (HBITMAP)(ULONG_PTR)(LOWORD(str));
+    }
+    if( flags & MF_OWNERDRAW){
+        pmii->fMask |= MIIM_DATA;
+        pmii->dwItemData = (ULONG_PTR) str;
+    }
+    if( flags & MF_POPUP) {
+        pmii->fMask |= MIIM_SUBMENU;
+        pmii->hSubMenu = (HMENU)id;
+    }
+    if( flags & MF_SEPARATOR) flags |= MF_GRAYED | MF_DISABLED;
+    pmii->fState = flags & MENUITEMINFO_STATE_MASK & ~MFS_DEFAULT;
+    pmii->fType = flags & MENUITEMINFO_TYPE_MASK;
+    pmii->wID = (UINT)id;
+}
+
+
 /*******************************************************************
  *         InsertMenuW    (USER32.@)
  */
@@ -3835,6 +3812,7 @@
                          UINT_PTR id, LPCWSTR str )
 {
     MENUITEM *item;
+    MENUITEMINFOW mii;
 
     if (IS_STRING_ITEM(flags) && str)
         TRACE("hMenu %p, pos %d, flags %08x, id %04lx, str %s\n",
@@ -3843,8 +3821,8 @@
                hMenu, pos, flags, id, str );
 
     if (!(item = MENU_InsertItem( hMenu, pos, flags ))) return FALSE;
-
-    if (!(MENU_SetItemData( item, flags, id, str )))
+    MENU_mnu2mnuii( flags, id, str, &mii);
+    if (!(SetMenuItemInfo_common( item, &mii, TRUE)))
     {
         RemoveMenu( hMenu, pos, flags );
         return FALSE;
@@ -3956,6 +3934,7 @@
                          UINT_PTR id, LPCWSTR str )
 {
     MENUITEM *item;
+    MENUITEMINFOW mii;
 
     if (IS_STRING_ITEM(flags))
         TRACE("%p %d %04x %04lx %s\n", hMenu, pos, flags, id, debugstr_w(str) );
@@ -3964,7 +3943,8 @@
 
     if (!(item = MENU_FindItem( &hMenu, &pos, flags ))) return FALSE;
     MENU_GetMenu(hMenu)->Height = 0; /* force size recalculate */
-    return MENU_SetItemData( item, flags, id, str );
+    MENU_mnu2mnuii( flags, id, str, &mii);
+    return SetMenuItemInfo_common( item, &mii, TRUE);
 }
 
 
@@ -4671,7 +4651,38 @@
 
 
 /**********************************************************************
+ *		MENU_depth
+ *
+ * detect if there are loops in the menu tree (or the depth is too large)
+ */
+static int MENU_depth( POPUPMENU *pmenu, int depth)
+{
+    int i;
+    MENUITEM *item;
+    int subdepth;
+
+    depth++;
+    if( depth > MAXMENUDEPTH) return depth;
+    item = pmenu->items;
+    subdepth = depth;
+    for( i = 0; i < pmenu->nItems && subdepth <= MAXMENUDEPTH; i++, item++){
+        POPUPMENU *psubmenu =  item->hSubMenu ? MENU_GetMenu( item->hSubMenu) : NULL;
+        if( psubmenu){
+            int bdepth = MENU_depth( psubmenu, depth);
+            if( bdepth > subdepth) subdepth = bdepth;
+        }
+        if( subdepth > MAXMENUDEPTH)
+            TRACE("<- hmenu %p\n", item->hSubMenu);
+    }
+    return subdepth;
+}
+
+
+/**********************************************************************
  *		SetMenuItemInfo_common
+ *
+ * Note: does not support the MIIM_TYPE flag. Use the MIIM_FTYPE,
+ * MIIM_BITMAP and MIIM_STRING flags instead.
  */
 
 static BOOL SetMenuItemInfo_common(MENUITEM * menu,
@@ -4682,30 +4693,7 @@
 
     debug_print_menuitem("SetMenuItemInfo_common from: ", menu, "");
 
-    if (lpmii->fMask & MIIM_TYPE ) {
-        if( lpmii->fMask & ( MIIM_STRING | MIIM_FTYPE | MIIM_BITMAP)) {
-            WARN("invalid combination of fMask bits used\n");
-            /* this does not happen on Win9x/ME */
-            SetLastError( ERROR_INVALID_PARAMETER);
-            return FALSE;
-        }
-
-        /* Remove the old type bits and replace them with the new ones */
-        menu->fType &= ~MENUITEMINFO_TYPE_MASK;
-        menu->fType |= lpmii->fType & MENUITEMINFO_TYPE_MASK;
-
-        if (IS_STRING_ITEM(menu->fType)) {
-	    HeapFree(GetProcessHeap(), 0, menu->text);
-            set_menu_item_text( menu, lpmii->dwTypeData, unicode );
-        } else if( (menu->fType) & MFT_BITMAP)
-                menu->hbmpItem = (HBITMAP)(ULONG_PTR)(LOWORD(lpmii->dwTypeData));
-    }
-
     if (lpmii->fMask & MIIM_FTYPE ) {
-        if(( lpmii->fType & MFT_BITMAP)) {
-            SetLastError( ERROR_INVALID_PARAMETER);
-            return FALSE;
-        }
         menu->fType &= ~MENUITEMINFO_TYPE_MASK;
         menu->fType |= lpmii->fType & MENUITEMINFO_TYPE_MASK;
     }
@@ -4716,11 +4704,9 @@
     }
 
     if (lpmii->fMask & MIIM_STATE)
-    {
          /* Other menu items having MFS_DEFAULT are not converted
            to normal items */
          menu->fState = lpmii->fState & MENUITEMINFO_STATE_MASK;
-    }
 
     if (lpmii->fMask & MIIM_ID)
 	menu->wID = lpmii->wID;
@@ -4730,10 +4716,14 @@
 	if (menu->hSubMenu) {
 	    POPUPMENU *subMenu = MENU_GetMenu(menu->hSubMenu);
 	    if (subMenu) {
+                if( MENU_depth( subMenu, 0) > MAXMENUDEPTH) {
+                    ERR( "Loop detected in menu hierarchy or maximum menu depth exceeded!\n");
+                    menu->hSubMenu = 0;
+                    return FALSE;
+                }
 		subMenu->wFlags |= MF_POPUP;
 		menu->fType |= MF_POPUP;
-	    }
-	    else {
+	    } else {
                 SetLastError( ERROR_INVALID_PARAMETER);
                 return FALSE;
             }
@@ -4761,27 +4751,63 @@
 }
 
 /**********************************************************************
+ *		MENU_NormalizeMenuItemInfoStruct
+ *
+ * Helper for SetMenuItemInfo and InsertMenuItemInfo:
+ * check, copy and extend the MENUITEMINFO struct from the version that the application
+ * supplied to the version used by wine source. */
+static BOOL MENU_NormalizeMenuItemInfoStruct( const MENUITEMINFOW *pmii_in,
+                                              MENUITEMINFOW *pmii_out )
+{
+    /* do we recognize the size? */
+    if( pmii_in->cbSize != sizeof( MENUITEMINFOW) &&
+            pmii_in->cbSize != sizeof( MENUITEMINFOW) - sizeof( pmii_in->hbmpItem)) {
+        SetLastError( ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+    /* copy the fields that we have */
+    memcpy( pmii_out, pmii_in, pmii_in->cbSize);
+    /* if the hbmpItem member is missing then extend */
+    if( pmii_in->cbSize != sizeof( MENUITEMINFOW)) {
+        pmii_out->cbSize = sizeof( MENUITEMINFOW);
+        pmii_out->hbmpItem = NULL;
+    }
+    /* test for invalid bit combinations */
+    if( (pmii_out->fMask & MIIM_TYPE &&
+         pmii_out->fMask & (MIIM_STRING | MIIM_FTYPE | MIIM_BITMAP)) ||
+        (pmii_out->fMask & MIIM_FTYPE && pmii_out->fType & MFT_BITMAP)) {
+        WARN("invalid combination of fMask bits used\n");
+        /* this does not happen on Win9x/ME */
+        SetLastError( ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+    /* convert old style (MIIM_TYPE) to the new */
+    if( pmii_out->fMask & MIIM_TYPE){
+        pmii_out->fMask |= MIIM_FTYPE;
+        if( IS_STRING_ITEM(pmii_out->fType)){
+            pmii_out->fMask |= MIIM_STRING;
+        } else if( (pmii_out->fType) & MFT_BITMAP){
+            pmii_out->fMask |= MIIM_BITMAP;
+            pmii_out->hbmpItem = (HBITMAP)(ULONG_PTR)(LOWORD(pmii_out->dwTypeData));
+        }
+    }
+    return TRUE;
+}
+
+/**********************************************************************
  *		SetMenuItemInfoA    (USER32.@)
  */
 BOOL WINAPI SetMenuItemInfoA(HMENU hmenu, UINT item, BOOL bypos,
                                  const MENUITEMINFOA *lpmii)
 {
-    MENUITEMINFOA mii;
+    MENUITEMINFOW mii;
 
     TRACE("hmenu %p, item %u, by pos %d, info %p\n", hmenu, item, bypos, lpmii);
 
-    if( lpmii->cbSize != sizeof( mii) &&
-            lpmii->cbSize != sizeof( mii) - sizeof ( mii.hbmpItem)) {
-        SetLastError( ERROR_INVALID_PARAMETER);
-        return FALSE;
-    }
-    memcpy( &mii, lpmii, lpmii->cbSize);
-    if( lpmii->cbSize != sizeof( mii)) {
-        mii.cbSize = sizeof( mii);
-        mii.hbmpItem = NULL;
-    }
+    if (!MENU_NormalizeMenuItemInfoStruct( (MENUITEMINFOW *)lpmii, &mii )) return FALSE;
+
     return SetMenuItemInfo_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0),
-				    (const MENUITEMINFOW *)&mii, FALSE);
+                                  &mii, FALSE);
 }
 
 /**********************************************************************
@@ -4794,16 +4820,7 @@
 
     TRACE("hmenu %p, item %u, by pos %d, info %p\n", hmenu, item, bypos, lpmii);
 
-    if( lpmii->cbSize != sizeof( mii) &&
-            lpmii->cbSize != sizeof( mii) - sizeof ( mii.hbmpItem)) {
-        SetLastError( ERROR_INVALID_PARAMETER);
-        return FALSE;
-    }
-    memcpy( &mii, lpmii, lpmii->cbSize);
-    if( lpmii->cbSize != sizeof( mii)) {
-        mii.cbSize = sizeof( mii);
-        mii.hbmpItem = NULL;
-    }
+    if (!MENU_NormalizeMenuItemInfoStruct( lpmii, &mii )) return FALSE;
     return SetMenuItemInfo_common(MENU_FindItem(&hmenu,
                 &item, bypos? MF_BYPOSITION : 0), &mii, TRUE);
 }
@@ -4906,23 +4923,14 @@
                                 const MENUITEMINFOA *lpmii)
 {
     MENUITEM *item;
-    MENUITEMINFOA mii;
+    MENUITEMINFOW mii;
 
     TRACE("hmenu %p, item %04x, by pos %d, info %p\n", hMenu, uItem, bypos, lpmii);
 
-    if( lpmii->cbSize != sizeof( mii) &&
-            lpmii->cbSize != sizeof( mii) - sizeof ( mii.hbmpItem)) {
-        SetLastError( ERROR_INVALID_PARAMETER);
-        return FALSE;
-    }
-    memcpy( &mii, lpmii, lpmii->cbSize);
-    if( lpmii->cbSize != sizeof( mii)) {
-        mii.cbSize = sizeof( mii);
-        mii.hbmpItem = NULL;
-    }
+    if (!MENU_NormalizeMenuItemInfoStruct( (MENUITEMINFOW *)lpmii, &mii )) return FALSE;
 
     item = MENU_InsertItem(hMenu, uItem, bypos ? MF_BYPOSITION : 0 );
-    return SetMenuItemInfo_common(item, (const MENUITEMINFOW *)&mii, FALSE);
+    return SetMenuItemInfo_common(item, &mii, FALSE);
 }
 
 
@@ -4937,16 +4945,7 @@
 
     TRACE("hmenu %p, item %04x, by pos %d, info %p\n", hMenu, uItem, bypos, lpmii);
 
-    if( lpmii->cbSize != sizeof( mii) &&
-            lpmii->cbSize != sizeof( mii) - sizeof ( mii.hbmpItem)) {
-        SetLastError( ERROR_INVALID_PARAMETER);
-        return FALSE;
-    }
-    memcpy( &mii, lpmii, lpmii->cbSize);
-    if( lpmii->cbSize != sizeof( mii)) {
-        mii.cbSize = sizeof( mii);
-        mii.hbmpItem = NULL;
-    }
+    if (!MENU_NormalizeMenuItemInfoStruct( lpmii, &mii )) return FALSE;
 
     item = MENU_InsertItem(hMenu, uItem, bypos ? MF_BYPOSITION : 0 );
     return SetMenuItemInfo_common(item, &mii, TRUE);

Modified: branches/arwinss/reactos/dll/win32/user32/message.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/message.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/message.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/message.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -3016,12 +3016,23 @@
     if (msg->message < WM_KEYFIRST || msg->message > WM_KEYLAST) return FALSE;
     if (msg->message != WM_KEYDOWN && msg->message != WM_SYSKEYDOWN) return TRUE;
 
-    TRACE_(key)("Translating key %s (%04lx), scancode %02x\n",
-                 SPY_GetVKeyName(msg->wParam), msg->wParam, LOBYTE(HIWORD(msg->lParam)));
+    TRACE_(key)("Translating key %s (%04lx), scancode %04x\n",
+                SPY_GetVKeyName(msg->wParam), msg->wParam, HIWORD(msg->lParam));
+
+    switch (msg->wParam)
+    {
+    case VK_PACKET:
+        message = (msg->message == WM_KEYDOWN) ? WM_CHAR : WM_SYSCHAR;
+        TRACE_(key)("PostMessageW(%p,%s,%04x,%08x)\n",
+                    msg->hwnd, SPY_GetMsgName(message, msg->hwnd), HIWORD(msg->lParam), LOWORD(msg->lParam));
+        PostMessageW( msg->hwnd, message, HIWORD(msg->lParam), LOWORD(msg->lParam));
+        return TRUE;
 #if 0
-    if ( msg->wParam == VK_PROCESSKEY )
+    case VK_PROCESSKEY:
         return ImmTranslateMessage(msg->hwnd, msg->message, msg->wParam, msg->lParam);
 #endif
+    }
+
     GetKeyboardState( state );
     /* FIXME : should handle ToUnicode yielding 2 */
     switch (ToUnicode(msg->wParam, HIWORD(msg->lParam), state, wp, 2, 0))

Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32.rc
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/resources/user32.rc?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/resources/user32.rc [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/resources/user32.rc [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -53,13 +53,13 @@
 #include "resources/user32_Da.rc"
 #include "resources/user32_De.rc"
 #include "resources/user32_En.rc"
-#include "resources/user32_Eo.rc"
-#include "resources/user32_Es.rc"
-#include "resources/user32_Fi.rc"
+//#include "resources/user32_Eo.rc"
+//#include "resources/user32_Es.rc"
+//#include "resources/user32_Fi.rc"
 #include "resources/user32_Fr.rc"
-#include "resources/user32_Hu.rc"
-#include "resources/user32_It.rc"
-#include "resources/user32_Ko.rc"
+//#include "resources/user32_Hu.rc"
+//#include "resources/user32_It.rc"
+//#include "resources/user32_Ko.rc"
 #include "resources/user32_Lt.rc"
 #include "resources/user32_Nl.rc"
 //#include "resources/user32_No.rc"

Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/resources/user32_De.rc [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -19,31 +19,33 @@
 
 #include "resources.h"
 
+#pragma code_page(65001)
+
 LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
 
 SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE
 {
  MENUITEM "&Wiederherstellen", 61728
  MENUITEM "&Verschieben", 61456
- MENUITEM "&Größe", 61440
+ MENUITEM "&Größe", 61440
  MENUITEM "Mi&nimieren", 61472
  MENUITEM "Ma&ximieren", 61488
  MENUITEM SEPARATOR
- MENUITEM "&Schließen\tAlt-F4", 61536
+ MENUITEM "&Schließen\tAlt-F4", 61536
  MENUITEM SEPARATOR
- MENUITEM "&Über Wine...", 61761
+ MENUITEM "&Ãœber Wine...", 61761
 }
 
 EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE
 {
 	POPUP ""
 	BEGIN
-		MENUITEM "&Rückgängig", EM_UNDO
+		MENUITEM "&Rückgängig", EM_UNDO
 		MENUITEM SEPARATOR
 		MENUITEM "&Ausschneiden", WM_CUT
 		MENUITEM "&Kopieren", WM_COPY
-		MENUITEM "&Einfügen", WM_PASTE
-		MENUITEM "&Löschen", WM_CLEAR
+		MENUITEM "&Einfügen", WM_PASTE
+		MENUITEM "&Löschen", WM_CLEAR
 		MENUITEM SEPARATOR
 		MENUITEM "&Alles markieren", EM_SETSEL
 	END
@@ -54,21 +56,21 @@
 BEGIN
         ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE
         LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX
-        PUSHBUTTON "&OK", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Abbrechen", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Abbr&uch", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Wiederholen", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Ignorieren", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Ja", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Nein", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Try Again", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Continue", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Help", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&OK", 1, 16, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Abbrechen", 2, 84, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "Abbr&uch", 3, 152, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Wiederholen", 4, 220, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Ignorieren", 5, 288, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Ja", 6, 356, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Nein", 7, 424, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Erneut versuchen", 10, 492, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Fortsetzen", 11, 560, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "Hilfe", 9, 628, 56, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
 END
 
 MDI_MOREWINDOWS DIALOG FIXED IMPURE 20, 20, 232, 122
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Fenster auswählen"
+CAPTION "Fenster auswählen"
 FONT 8, "MS Shell Dlg"
 BEGIN
     LISTBOX         MDI_IDC_LISTBOX, 5, 7, 222, 90, WS_VSCROLL | WS_HSCROLL /* defined in mdi.h */

Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/resources/user32_Fr.rc [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -1,5 +1,5 @@
 /*
- * User
+ * User32
  * French language support
  *
  * Copyright 1995 Alexandre Julliard
@@ -21,19 +21,22 @@
 
 #include "resources.h"
 
+/* UTF-8 */
+#pragma code_page(65001)
+
 LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
 
 SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE
 {
  MENUITEM "&Restauration", 61728
- MENUITEM "&Déplacement", 61456
+ MENUITEM "&Déplacement", 61456
  MENUITEM "Di&mension", 61440
- MENUITEM "Réduct&ion", 61472
+ MENUITEM "Réduct&ion", 61472
  MENUITEM "&Agrandissement", 61488
  MENUITEM SEPARATOR
  MENUITEM "&Fermeture\tAlt-F4", 61536
  MENUITEM SEPARATOR
- MENUITEM "À propos de &Wine...", 61761
+ MENUITEM "À propos de &Wine...", 61761
 }
 
 EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE
@@ -42,12 +45,12 @@
 	BEGIN
 		MENUITEM "&Annuler", EM_UNDO
 		MENUITEM SEPARATOR
-		MENUITEM "Coupe&r", WM_CUT
-		MENUITEM "&Copier", WM_COPY
+		MENUITEM "&Couper", WM_CUT
+		MENUITEM "Co&pier", WM_COPY
 		MENUITEM "C&oller", WM_PASTE
 		MENUITEM "E&ffacer", WM_CLEAR
 		MENUITEM SEPARATOR
-		MENUITEM "Tout &sélectionner", EM_SETSEL
+		MENUITEM "&Tout sélectionner", EM_SETSEL
 	END
 }
 
@@ -58,19 +61,19 @@
         LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX
         PUSHBUTTON "&Ok", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Annuler", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Annuler", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Répéter", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "A&bandonner", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "Ré&péter", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Ignorer", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Oui", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Non", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Try Again", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Continue", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Help", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Réessayer", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Continuer", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "Aide", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
 END
 
 MDI_MOREWINDOWS DIALOG FIXED IMPURE 20, 20, 232, 122
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Sélection de fenêtre"
+CAPTION "Sélection de fenêtre"
 FONT 8, "MS Shell Dlg"
 BEGIN
     LISTBOX         MDI_IDC_LISTBOX, 5, 7, 222, 90, WS_VSCROLL | WS_HSCROLL /* defined in mdi.h */
@@ -82,5 +85,5 @@
 STRINGTABLE DISCARDABLE
 {
     IDS_ERROR "Erreur"
-    IDS_MDI_MOREWINDOWS "&Plus de fenêtres..."
+    IDS_MDI_MOREWINDOWS "&Plus de fenêtres..."
 }

Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/resources/user32_Pt.rc [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -1,6 +1,7 @@
 /*
  * Copyright 1997 Ricardo R. Massaro
- * Copyright 2006 Américo José Melo
+ * Copyright 2006 Américo José Melo
+ * Copyright 2009 Ricardo Filipe
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -18,6 +19,8 @@
  */
 
 #include "resources.h"
+
+#pragma code_page(65001)
 
 LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
 
@@ -85,23 +88,23 @@
 }
 
 
-LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
+LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
 
 MSGBOX DIALOG 100, 80, 216, 168
 STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 BEGIN
         ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE
         LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX
-        PUSHBUTTON "&Ok", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&OK", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Cancelar", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Abortar", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Repetir", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Ignorar", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
         PUSHBUTTON "&Sim", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Não", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Try Again", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Continue", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Help", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Não", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Tente Novamente", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Continuar", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "Ajuda", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
 END
 
 
@@ -130,7 +133,7 @@
 END
 
 
-LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
+LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
 
 STRINGTABLE DISCARDABLE
 {

Modified: branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/resources/user32_Ru.rc [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -18,33 +18,36 @@
 
 #include "resources.h"
 
+/* UTF-8 */
+#pragma code_page(65001)
+
 LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
 
 SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE
 {
- MENUITEM "&Âîññòàíîâèòü", 61728
- MENUITEM "&Ïåðåìåñòèòü", 61456
- MENUITEM "Ðàç&ìåð", 61440
- MENUITEM "&Ñâåðíóòü", 61472
- MENUITEM "&Ðàçâåðíóòü", 61488
+ MENUITEM "&Восстановить", 61728
+ MENUITEM "&Переместить", 61456
+ MENUITEM "Раз&мер", 61440
+ MENUITEM "&Свернуть", 61472
+ MENUITEM "&Развернуть", 61488
  MENUITEM SEPARATOR
- MENUITEM "&Çàêðûòü\tAlt-F4", 61536
+ MENUITEM "&Закрыть\tAlt-F4", 61536
  MENUITEM SEPARATOR
- MENUITEM "&Î ïðîåêòå Wine...", 61761
+ MENUITEM "&О проекте Wine...", 61761
 }
 
 EDITMENU MENU LOADONCALL MOVEABLE DISCARDABLE
 {
 	POPUP ""
 	BEGIN
-		MENUITEM "&Îòìåíèòü", EM_UNDO
+		MENUITEM "&Отменить", EM_UNDO
 		MENUITEM SEPARATOR
-		MENUITEM "&Âûðåçàòü", WM_CUT
-		MENUITEM "&Êîïèðîâàòü", WM_COPY
-		MENUITEM "Âñò&àâèòü", WM_PASTE
-		MENUITEM "&Óäàëèòü", WM_CLEAR
+		MENUITEM "&Вырезать", WM_CUT
+		MENUITEM "&Копировать", WM_COPY
+		MENUITEM "Вст&авить", WM_PASTE
+		MENUITEM "&Удалить", WM_CLEAR
 		MENUITEM SEPARATOR
-		MENUITEM "Âûäåëèòü â&ñå", EM_SETSEL
+		MENUITEM "Выделить в&се", EM_SETSEL
 	END
 }
 
@@ -54,15 +57,15 @@
         ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE
         LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX
         PUSHBUTTON "&OK", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Î&òìåíà", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Îòìåíèòü", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Ïî&âòîð", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Ïðîïóñòèòü", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Äà", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "&Íåò", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Ïî&âòîðèòü", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Ï&ðîëîæèòü", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-        PUSHBUTTON "Ïîìîùü", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "О&тмена", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Отменить", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "По&втор", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Пропустить", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Да", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "&Нет", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "По&вторить", 10, 352, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "П&роложить", 11, 400, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+        PUSHBUTTON "Помощь", 9, 448, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
 END
 
 MDI_MOREWINDOWS DIALOG FIXED IMPURE 20, 20, 232, 122
@@ -72,12 +75,12 @@
 BEGIN
     LISTBOX         MDI_IDC_LISTBOX, 5, 7, 222, 90, WS_VSCROLL | WS_HSCROLL /* defined in mdi.h */
     DEFPUSHBUTTON   "OK", IDOK, 75, 100, 35, 14
-    PUSHBUTTON      "Îòìåíèòü", IDCANCEL, 120, 100, 35, 14
+    PUSHBUTTON      "Отменить", IDCANCEL, 120, 100, 35, 14
 END
 
 
 STRINGTABLE DISCARDABLE
 {
-    IDS_ERROR "ÎØÈÁÊÀ"
-    IDS_MDI_MOREWINDOWS "&Åù¸ îêíà..."
+    IDS_ERROR "ОШИБКА"
+    IDS_MDI_MOREWINDOWS "&Ещё окна..."
 }

Modified: branches/arwinss/reactos/dll/win32/user32/spy.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/spy.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/spy.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/spy.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -731,7 +731,7 @@
 };
 
 
-#define SPY_MAX_LVMMSGNUM   140
+#define SPY_MAX_LVMMSGNUM   182
 static const char * const LVMMessageTypeNames[SPY_MAX_LVMMSGNUM + 1] =
 {
     "LVM_GETBKCOLOR",           /* 1000 */
@@ -872,9 +872,51 @@
     NULL,
     NULL,
     NULL,
-    NULL,
     "LVM_SETBKIMAGEW",
-    "LVM_GETBKIMAGEW"   /* 0x108B */
+    "LVM_GETBKIMAGEW",   /* 0x108B */
+    "LVM_SETSELECTEDCOLUMN",
+    "LVM_SETTILEWIDTH",
+    "LVM_SETVIEW",
+    "LVM_GETVIEW",
+    NULL,
+    "LVM_INSERTGROUP",
+    NULL,
+    "LVM_SETGROUPINFO",
+    NULL,
+    "LVM_GETGROUPINFO",
+    "LVM_REMOVEGROUP",
+    "LVM_MOVEGROUP",
+    NULL,
+    NULL,
+    "LVM_MOVEITEMTOGROUP",
+    "LVM_SETGROUPMETRICS",
+    "LVM_GETGROUPMETRICS",
+    "LVM_ENABLEGROUPVIEW",
+    "LVM_SORTGROUPS",
+    "LVM_INSERTGROUPSORTED",
+    "LVM_REMOVEALLGROUPS",
+    "LVM_HASGROUP",
+    "LVM_SETTILEVIEWINFO",
+    "LVM_GETTILEVIEWINFO",
+    "LVM_SETTILEINFO",
+    "LVM_GETTILEINFO",
+    "LVM_SETINSERTMARK",
+    "LVM_GETINSERTMARK",
+    "LVM_INSERTMARKHITTEST",
+    "LVM_GETINSERTMARKRECT",
+    "LVM_SETINSERTMARKCOLOR",
+    "LVM_GETINSERTMARKCOLOR",
+    NULL,
+    "LVM_SETINFOTIP",
+    "LVM_GETSELECTEDCOLUMN",
+    "LVM_ISGROUPVIEWENABLED",
+    "LVM_GETOUTLINECOLOR",
+    "LVM_SETOUTLINECOLOR",
+    NULL,
+    "LVM_CANCELEDITLABEL",
+    "LVM_MAPINDEXTOID",
+    "LVM_MAPIDTOINDEX",
+    "LVM_ISITEMVISIBLE"
 };
 
 
@@ -1328,7 +1370,7 @@
     "VK_ICO_00",        /* 0xE4 */
     "VK_PROCESSKEY",    /* 0xE5 */
     NULL,               /* 0xE6 */
-    NULL,               /* 0xE7 */
+    "VK_PACKET",        /* 0xE7 */
     NULL,               /* 0xE8 */
     NULL,               /* 0xE9 */
     NULL,               /* 0xEA */

Modified: branches/arwinss/reactos/dll/win32/user32/win.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/win.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/win.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/win.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -1780,6 +1780,7 @@
             static const WCHAR command_line[] = {'\\','e','x','p','l','o','r','e','r','.','e','x','e',' ','/','d','e','s','k','t','o','p',0};
             STARTUPINFOW si;
             PROCESS_INFORMATION pi;
+            WCHAR systemdir[MAX_PATH];
             WCHAR cmdline[MAX_PATH + sizeof(command_line)/sizeof(WCHAR)];
 
             memset( &si, 0, sizeof(si) );
@@ -1789,10 +1790,11 @@
             si.hStdOutput = 0;
             si.hStdError  = GetStdHandle( STD_ERROR_HANDLE );
 
-            GetSystemDirectoryW( cmdline, MAX_PATH );
+            GetSystemDirectoryW( systemdir, MAX_PATH );
+            lstrcpyW( cmdline, systemdir );
             lstrcatW( cmdline, command_line );
             if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
-                                NULL, NULL, &si, &pi ))
+                                NULL, systemdir, &si, &pi ))
             {
                 TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId, pi.dwThreadId );
                 WaitForInputIdle( pi.hProcess, 10000 );

Modified: branches/arwinss/reactos/dll/win32/user32/winpos.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/user32/winpos.c?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/user32/winpos.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/user32/winpos.c [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -86,9 +86,10 @@
 /***********************************************************************
  *		SwitchToThisWindow (USER32.@)
  */
-void WINAPI SwitchToThisWindow( HWND hwnd, BOOL restore )
-{
-    ShowWindow( hwnd, restore ? SW_RESTORE : SW_SHOWMINIMIZED );
+void WINAPI SwitchToThisWindow( HWND hwnd, BOOL alt_tab )
+{
+    if (IsIconic( hwnd )) ShowWindow( hwnd, SW_RESTORE );
+    else BringWindowToTop( hwnd );
 }
 
 
@@ -1078,14 +1079,18 @@
         /* should happen only in CreateWindowEx() */
 	int wParam = SIZE_RESTORED;
         RECT client = wndPtr->rectClient;
+        LPARAM lparam = MAKELONG( client.right - client.left, client.bottom - client.top );
 
 	wndPtr->flags &= ~WIN_NEED_SIZE;
 	if (wndPtr->dwStyle & WS_MAXIMIZE) wParam = SIZE_MAXIMIZED;
-	else if (wndPtr->dwStyle & WS_MINIMIZE) wParam = SIZE_MINIMIZED;
+        else if (wndPtr->dwStyle & WS_MINIMIZE)
+        {
+            wParam = SIZE_MINIMIZED;
+            lparam = 0;
+        }
         WIN_ReleasePtr( wndPtr );
 
-        SendMessageW( hwnd, WM_SIZE, wParam,
-                      MAKELONG( client.right - client.left, client.bottom - client.top ));
+        SendMessageW( hwnd, WM_SIZE, wParam, lparam );
         SendMessageW( hwnd, WM_MOVE, 0, MAKELONG( client.left, client.top ));
     }
     else WIN_ReleasePtr( wndPtr );

Modified: branches/arwinss/reactos/include/reactos/wine/server_protocol.h
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/include/reactos/wine/server_protocol.h?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/include/reactos/wine/server_protocol.h [iso-8859-1] (original)
+++ branches/arwinss/reactos/include/reactos/wine/server_protocol.h [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -140,7 +140,7 @@
     {
         struct { unsigned int eip, ebp, esp, eflags, cs, ss; } i386_regs;
         struct { unsigned __int64 rip, rbp, rsp;
-                 unsigned int cs, ss, flags, mxcsr; } x86_64_regs;
+                 unsigned int cs, ss, flags; } x86_64_regs;
         struct { unsigned __int64 fir;
                  unsigned int psr; } alpha_regs;
         struct { unsigned int iar, msr, ctr, lr, dar, dsisr, trap; } powerpc_regs;
@@ -206,6 +206,42 @@
 
 typedef __int64 timeout_t;
 #define TIMEOUT_INFINITE (((timeout_t)0x7fffffff) << 32 | 0xffffffff)
+
+
+typedef struct
+{
+    unsigned int debug_flags;
+    unsigned int console_flags;
+    obj_handle_t console;
+    obj_handle_t hstdin;
+    obj_handle_t hstdout;
+    obj_handle_t hstderr;
+    unsigned int x;
+    unsigned int y;
+    unsigned int xsize;
+    unsigned int ysize;
+    unsigned int xchars;
+    unsigned int ychars;
+    unsigned int attribute;
+    unsigned int flags;
+    unsigned int show;
+    data_size_t  curdir_len;
+    data_size_t  dllpath_len;
+    data_size_t  imagepath_len;
+    data_size_t  cmdline_len;
+    data_size_t  title_len;
+    data_size_t  desktop_len;
+    data_size_t  shellinfo_len;
+    data_size_t  runtime_len;
+
+
+
+
+
+
+
+
+} startup_info_t;
 
 
 typedef struct
@@ -532,14 +568,12 @@
     unsigned int create_flags;
     int          socket_fd;
     obj_handle_t exe_file;
-    obj_handle_t hstdin;
-    obj_handle_t hstdout;
-    obj_handle_t hstderr;
     unsigned int process_access;
     unsigned int process_attr;
     unsigned int thread_access;
     unsigned int thread_attr;
-    /* VARARG(info,startup_info); */
+    data_size_t  info_size;
+    /* VARARG(info,startup_info,info_size); */
     /* VARARG(env,unicode_str); */
 };
 struct new_process_reply
@@ -594,10 +628,8 @@
 {
     struct reply_header __header;
     obj_handle_t exe_file;
-    obj_handle_t hstdin;
-    obj_handle_t hstdout;
-    obj_handle_t hstderr;
-    /* VARARG(info,startup_info); */
+    data_size_t  info_size;
+    /* VARARG(info,startup_info,info_size); */
     /* VARARG(env,unicode_str); */
 };
 
@@ -690,6 +722,8 @@
     timeout_t    end_time;
     int          exit_code;
     int          priority;
+    cpu_type_t   cpu;
+    char __pad_60[4];
 };
 
 
@@ -2854,6 +2888,9 @@
 {
     struct request_header __header;
     obj_handle_t handle;
+    client_ptr_t iosb;
+    int          only_thread;
+    char __pad_28[4];
 };
 struct cancel_async_reply
 {
@@ -5307,6 +5344,6 @@
     struct set_window_layered_info_reply set_window_layered_info_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 386
+#define SERVER_PROTOCOL_VERSION 390
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */

Modified: branches/arwinss/reactos/subsystems/win32/win32k/include/request.h
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win32/win32k/include/request.h?rev=43148&r1=43147&r2=43148&view=diff
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/include/request.h [iso-8859-1] (original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/include/request.h [iso-8859-1] Fri Sep 25 20:24:36 2009
@@ -589,13 +589,11 @@
 C_ASSERT( FIELD_OFFSET(struct new_process_request, create_flags) == 16 );
 C_ASSERT( FIELD_OFFSET(struct new_process_request, socket_fd) == 20 );
 C_ASSERT( FIELD_OFFSET(struct new_process_request, exe_file) == 24 );
-C_ASSERT( FIELD_OFFSET(struct new_process_request, hstdin) == 28 );
-C_ASSERT( FIELD_OFFSET(struct new_process_request, hstdout) == 32 );
-C_ASSERT( FIELD_OFFSET(struct new_process_request, hstderr) == 36 );
-C_ASSERT( FIELD_OFFSET(struct new_process_request, process_access) == 40 );
-C_ASSERT( FIELD_OFFSET(struct new_process_request, process_attr) == 44 );
-C_ASSERT( FIELD_OFFSET(struct new_process_request, thread_access) == 48 );
-C_ASSERT( FIELD_OFFSET(struct new_process_request, thread_attr) == 52 );
+C_ASSERT( FIELD_OFFSET(struct new_process_request, process_access) == 28 );
+C_ASSERT( FIELD_OFFSET(struct new_process_request, process_attr) == 32 );
+C_ASSERT( FIELD_OFFSET(struct new_process_request, thread_access) == 36 );
+C_ASSERT( FIELD_OFFSET(struct new_process_request, thread_attr) == 40 );
+C_ASSERT( FIELD_OFFSET(struct new_process_request, info_size) == 44 );
 C_ASSERT( FIELD_OFFSET(struct new_process_reply, info) == 8 );
 C_ASSERT( FIELD_OFFSET(struct new_process_reply, pid) == 12 );
 C_ASSERT( FIELD_OFFSET(struct new_process_reply, phandle) == 16 );
@@ -614,10 +612,8 @@
 C_ASSERT( FIELD_OFFSET(struct new_thread_reply, handle) == 12 );
 C_ASSERT( sizeof(struct new_thread_reply) == 16 );
 C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, exe_file) == 8 );
-C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, hstdin) == 12 );
-C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, hstdout) == 16 );
-C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, hstderr) == 20 );
-C_ASSERT( sizeof(struct get_startup_info_reply) == 24 );
+C_ASSERT( FIELD_OFFSET(struct get_startup_info_reply, info_size) == 12 );
+C_ASSERT( sizeof(struct get_startup_info_reply) == 16 );
 C_ASSERT( FIELD_OFFSET(struct init_process_done_request, gui) == 12 );
 C_ASSERT( FIELD_OFFSET(struct init_process_done_request, module) == 16 );
 C_ASSERT( FIELD_OFFSET(struct init_process_done_request, ldt_copy) == 24 );
@@ -656,7 +652,8 @@
 C_ASSERT( FIELD_OFFSET(struct get_process_info_reply, end_time) == 40 );
 C_ASSERT( FIELD_OFFSET(struct get_process_info_reply, exit_code) == 48 );
 C_ASSERT( FIELD_OFFSET(struct get_process_info_reply, priority) == 52 );
-C_ASSERT( sizeof(struct get_process_info_reply) == 56 );
+C_ASSERT( FIELD_OFFSET(struct get_process_info_reply, cpu) == 56 );
+C_ASSERT( sizeof(struct get_process_info_reply) == 64 );
 C_ASSERT( FIELD_OFFSET(struct set_process_info_request, handle) == 12 );
 C_ASSERT( FIELD_OFFSET(struct set_process_info_request, mask) == 16 );
 C_ASSERT( FIELD_OFFSET(struct set_process_info_request, priority) == 20 );
@@ -1312,7 +1309,9 @@
 C_ASSERT( FIELD_OFFSET(struct register_async_request, count) == 56 );
 C_ASSERT( sizeof(struct register_async_request) == 64 );
 C_ASSERT( FIELD_OFFSET(struct cancel_async_request, handle) == 12 );
-C_ASSERT( sizeof(struct cancel_async_request) == 16 );
+C_ASSERT( FIELD_OFFSET(struct cancel_async_request, iosb) == 16 );
+C_ASSERT( FIELD_OFFSET(struct cancel_async_request, only_thread) == 24 );
+C_ASSERT( sizeof(struct cancel_async_request) == 32 );
 C_ASSERT( FIELD_OFFSET(struct ioctl_request, code) == 12 );
 C_ASSERT( FIELD_OFFSET(struct ioctl_request, async) == 16 );
 C_ASSERT( FIELD_OFFSET(struct ioctl_request, blocking) == 56 );

Propchange: branches/arwinss/reactos/subsystems/win32/win32k/include/request.h
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Sep 25 20:24:36 2009
@@ -1,0 +1,3 @@
+/branches/ros-amd64-bringup/reactos/subsystems/win32/win32k/include/request.h:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080
+/trunk/reactos/subsystems/win32/win32k/include/request.h:42000-43126
+/vendor/wine/server/current/request.h:43136




More information about the Ros-diffs mailing list