Author: cfinck
Date: Fri Jun 13 18:14:27 2008
New Revision: 33958
URL:
http://svn.reactos.org/svn/reactos?rev=33958&view=rev
Log:
Revert parts of r33578:
- First of all, MenuSetItemData is only called from InsertMenuA/W and ModifyMenuA/W.
Therefore the passed MENUITEMINFO structure will always be empty, so it makes no sense
to check for flags in this structure.
This way, I could simplify the code block for MF_BITMAP.
- Also fType = MFT_BITMAP and fMask = MIIM_BITMAP at the same time passed to win32k
don't work.
Changing this back to only set fMask fixes bitmap menus.
- Furthermore the data for MF_OWNERDRAW is really stored in dwItemData and not in
dwTypeData.
The MSDN documentation for InsertMenu applies here, not the one for the MENUITEMINFO
structure.
This fixes owner-drawn menus like the one in Abiword.
See issue #3272 for more details.
Modified:
trunk/reactos/dll/win32/user32/windows/menu.c
Modified: trunk/reactos/dll/win32/user32/windows/menu.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/m…
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/menu.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/windows/menu.c [iso-8859-1] Fri Jun 13 18:14:27 2008
@@ -3712,20 +3712,8 @@
*/
if(Flags & MF_BITMAP)
{
- if (mii->fType & MFT_BITMAP)
- {
- /* use old way of storing bitmap */
- mii->fMask |= (MIIM_TYPE | MIIM_FTYPE);
- mii->fType |= MF_BITMAP;
- mii->dwTypeData = (LPWSTR)NewItem;
- }
- else
- {
- /* use new way of storing type */
- mii->hbmpItem = (HBITMAP) NewItem;
- mii->fType |= MFT_BITMAP;
- mii->fMask |= MIIM_BITMAP;
- }
+ mii->fMask |= MIIM_BITMAP; /* Use the new way of seting hbmpItem.*/
+ mii->hbmpItem = (HBITMAP) NewItem;
if (Flags & MF_HELP)
{
@@ -3736,8 +3724,8 @@
else if(Flags & MF_OWNERDRAW)
{
mii->fType |= MFT_OWNERDRAW;
- mii->fMask |= (MIIM_TYPE | MIIM_FTYPE);
- mii->dwTypeData = (LPWSTR) NewItem;
+ mii->fMask |= MIIM_DATA;
+ mii->dwItemData = (DWORD) NewItem;
}
else if (Flags & MF_SEPARATOR)
{