[ros-diffs] [jgardou] 48031: [USER32] - Partly merge 48026

jgardou at svn.reactos.org jgardou at svn.reactos.org
Tue Jul 13 21:38:36 UTC 2010


Author: jgardou
Date: Tue Jul 13 21:38:34 2010
New Revision: 48031

URL: http://svn.reactos.org/svn/reactos?rev=48031&view=rev
Log:
[USER32]
  - Partly merge 48026

Modified:
    trunk/reactos/   (props changed)
    trunk/reactos/dll/win32/user32/windows/cursoricon.c

Propchange: trunk/reactos/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jul 13 21:38:34 2010
@@ -1,4 +1,4 @@
 /branches/header-work:45691-47721
-/branches/reactos-yarotows:46372,46848,46966,47800
+/branches/reactos-yarotows:46372,46848,46966,47800,48026
 /branches/ros-amd64-bringup:36852
 /branches/ros-amd64-bringup/reactos:34711-34712,34741,34743,34780-34782,34803,34812,34839,34842,34864,34870,34874,34877,34908-34909,34917,34965,35323-35324,35347-35348,35361,35436,35509,35515,35588,35655,35683,35739,35746,35762,35771,35777,35781,35789,35805,35823,35827,35902,35904-35906,35942,35947-35949,35952-35953,35966,36011-36013,36172,36360,36380,36388-36389,36393,36397,36445,36502-36503,36505,36570,36614,36898-36899,36930,36936,36949,36951,36958,36961,36964,36969,36972,36987-36988,36992,37323,37434,37472,37475,37536,37820-37821,37868-37869,37873,37990-37991,38013-38014,38092,38100,38148-38151,38264-38265,38268,38355,39151,39333,39335,39345,39639,40120,40122-40123,40125,40127-40128,40155,40247,40324,40608,40753,40927-40928,40986-40987,40989,40991,40993,40995-40996,41000-41001,41027-41030,41044-41045,41047-41050,41052,41070,41082-41086,41097-41098,41101,41449,41479-41480,41484-41485,41499-41500,41502,41531,41536,41540,41546-41547,41549,43080,43426,43454,43506,43566,43574,43598,43600-43602,43604-43605,43677,43682,43757,43775,43836,43838-43840,43857-43858,43860,43905-43907,43965,43969,43992,44002,44036-44037,44039-44040,44044-44045,44065,44095,44123,44144,44205,44238,44294,44338-44339,44385,44389,44391,44426,44460,44467-44468,44470-44471,44499,44501,44503-44504,44506,44510-44512,44521,44523-44526,44530,44540,44601,44634,44639,44772,44818,45124,45126-45127,46394,46478,46511,46523-46524,46526,46534-46535,46537-46539,46589,46805,47472,47846-47847,47878,47882

Modified: trunk/reactos/dll/win32/user32/windows/cursoricon.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/cursoricon.c?rev=48031&r1=48030&r2=48031&view=diff
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/cursoricon.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/windows/cursoricon.c [iso-8859-1] Tue Jul 13 21:38:34 2010
@@ -1393,6 +1393,7 @@
 {
     BITMAP ColorBitmap;
 	BITMAP MaskBitmap;
+	ICONINFO safeIconInfo;
 
 	if(!iconinfo)
 	{
@@ -1400,13 +1401,15 @@
 		return (HICON)0;
 	}
 
-	if(!GetObjectW(iconinfo->hbmMask, sizeof(BITMAP), &MaskBitmap))
+	safeIconInfo = *iconinfo;
+
+	if(!GetObjectW(safeIconInfo.hbmMask, sizeof(BITMAP), &MaskBitmap))
 	{
 		return (HICON)0;
 	}
 
 	/* Try to get color bitmap */
-	if (GetObjectW(iconinfo->hbmColor, sizeof(BITMAP), &ColorBitmap))
+	if (GetObjectW(safeIconInfo.hbmColor, sizeof(BITMAP), &ColorBitmap))
 	{
 		/* Compare size of color and mask bitmap*/
 		if (ColorBitmap.bmWidth != MaskBitmap.bmWidth ||
@@ -1416,8 +1419,22 @@
 			SetLastError(ERROR_INVALID_PARAMETER);
 			return (HICON)0;
 		}
+		/* Test if they are inverted */
+		if(ColorBitmap.bmBitsPixel == 1)
+		{
+			if(MaskBitmap.bmBitsPixel != 1)
+			{
+				safeIconInfo.hbmMask = iconinfo->hbmColor;
+				safeIconInfo.hbmColor = iconinfo->hbmMask;
+			}
+			else
+			{
+				/* Wine tests say so */
+				safeIconInfo.hbmColor = NULL;
+			}
+		}
 	}
-	return (HICON)NtUserCreateCursorIconHandle(iconinfo, TRUE);
+	return (HICON)NtUserCreateCursorIconHandle(&safeIconInfo, TRUE);
 }
 
 /******************************************************************************




More information about the Ros-diffs mailing list