From: Katayama Hirofumi MZ Date: Fri, 26 Oct 2018 19:20:09 +0000 (+0900) Subject: [WIN32SS][NTUSER] Sunken menu item (#981) X-Git-Tag: 0.4.12-dev~431 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=ed41bd71dd13ad68af40a55b4b36549a834e7eaf [WIN32SS][NTUSER] Sunken menu item (#981) CORE-15226 --- diff --git a/win32ss/user/ntuser/menu.c b/win32ss/user/ntuser/menu.c index f4159030ccd..dfab116bbc5 100644 --- a/win32ss/user/ntuser/menu.c +++ b/win32ss/user/ntuser/menu.c @@ -1657,9 +1657,12 @@ static void FASTCALL MENU_DrawBitmapItem(HDC hdc, PITEM lpitem, const RECT *rect 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)) { @@ -1778,6 +1781,12 @@ static void FASTCALL MENU_DrawBitmapItem(HDC hdc, PITEM lpitem, const RECT *rect 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 ); } @@ -2325,10 +2334,15 @@ static void FASTCALL MENU_DrawMenuItem(PWND Wnd, PMENU Menu, PWND WndOwner, HDC } 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 @@ -2517,6 +2531,12 @@ static void FASTCALL MENU_DrawMenuItem(PWND Wnd, PMENU Menu, PWND WndOwner, HDC 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) ) @@ -2558,6 +2578,12 @@ static void FASTCALL MENU_DrawMenuItem(PWND Wnd, PMENU Menu, PWND WndOwner, HDC 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);