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/cu... ============================================================================== --- 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); }
/******************************************************************************