int h = rect->bottom - rect->top;
int bmp_xoffset = 0;
int left, top;
+ BOOL flat_menu;
HBITMAP hbmToDraw = lpitem->hbmp;
bmp = hbmToDraw;
+ UserSystemParametersInfo(SPI_GETFLATMENU, 0, &flat_menu, 0);
+
/* Check if there is a magic menu item associated with this item */
if (IS_MAGIC_BITMAP(hbmToDraw))
{
rop=((lpitem->fState & MF_HILITE) && !IS_MAGIC_BITMAP(hbmToDraw)) ? NOTSRCCOPY : SRCCOPY;
if ((lpitem->fState & MF_HILITE) && lpitem->hbmp)
IntGdiSetBkColor(hdc, IntGetSysColor(COLOR_HIGHLIGHT));
+ if (!flat_menu &&
+ (lpitem->fState & (MF_HILITE | MF_GRAYED)) == MF_HILITE)
+ {
+ ++left;
+ ++top;
+ }
NtGdiBitBlt( hdc, left, top, w, h, hdcMem, bmp_xoffset, 0, rop , 0, 0);
IntGdiDeleteDC( hdcMem, FALSE );
}
}
else
{
- if(menuBar)
+ if (menuBar)
+ {
+ FillRect(hdc, &rect, IntGetSysColorBrush(COLOR_MENU));
DrawEdge(hdc, &rect, BDR_SUNKENOUTER, BF_RECT);
+ }
else
+ {
FillRect(hdc, &rect, IntGetSysColorBrush(COLOR_HIGHLIGHT));
+ }
}
}
else
break;
}
+ if (!flat_menu &&
+ (lpitem->fState & (MF_HILITE | MF_GRAYED)) == MF_HILITE)
+ {
+ RECTL_vOffsetRect(&rect, +1, +1);
+ }
+
if(lpitem->fState & MF_GRAYED)
{
if (!(lpitem->fState & MF_HILITE) )
DrawTextW( hdc, Text + i + 1, -1, &rect, uFormat );
}
+ if (!flat_menu &&
+ (lpitem->fState & (MF_HILITE | MF_GRAYED)) == MF_HILITE)
+ {
+ RECTL_vOffsetRect(&rect, -1, -1);
+ }
+
if (hfontOld)
{
NtGdiSelectFont (hdc, hfontOld);