From 3b8bfa0bd2138074a4a3c7220e4d71e44b7b43ef Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Sun, 30 Jan 2022 22:20:06 +0100 Subject: [PATCH] [0.4.13][WIN32SS] Fix Mask for Draw Frame States CORE-8808 Fixes drawing of caption bar buttons (min/max/close in Mozilla Firefox titlebar when its menubar is disabled). See CORE-8808. The fix is a partial port of 0.4.14-dev-1314-g acf135d16d2aede3c12edc4ef47033baf5540751 I left out all changes to the logging and took only the essence of this patch. --- win32ss/user/ntuser/draw.c | 12 ++++++------ win32ss/user/user32/windows/draw.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/win32ss/user/ntuser/draw.c b/win32ss/user/ntuser/draw.c index eb97e1e1f16..98692f33ad2 100644 --- a/win32ss/user/ntuser/draw.c +++ b/win32ss/user/ntuser/draw.c @@ -757,7 +757,7 @@ BOOL FASTCALL UITOOLS95_DFC_ButtonCheckRadio(HDC dc, LPRECT r, UINT uFlags, BOOL /* Ported from WINE20020904 */ BOOL FASTCALL UITOOLS95_DrawFrameButton(HDC hdc, LPRECT rc, UINT uState) { - switch(uState & 0xff) + switch(uState & 0x1f) { case DFCS_BUTTONPUSH: return UITOOLS95_DFC_ButtonPush(hdc, rc, uState); @@ -787,7 +787,7 @@ BOOL FASTCALL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags) RECT myr; INT bkmode; WCHAR Symbol; - switch(uFlags & 0xff) + switch(uFlags & 0xf) { case DFCS_CAPTIONCLOSE: Symbol = 'r'; @@ -854,7 +854,7 @@ BOOL FASTCALL UITOOLS95_DrawFrameScroll(HDC dc, LPRECT r, UINT uFlags) RECT myr; INT bkmode; WCHAR Symbol; - switch(uFlags & 0xff) + switch(uFlags & 0x1f) { case DFCS_SCROLLCOMBOBOX: case DFCS_SCROLLDOWN: @@ -957,7 +957,7 @@ BOOL FASTCALL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags) RECT myr; INT cxy; cxy = UITOOLS_MakeSquareRect(r, &myr); - switch(uFlags & 0xff) + switch(uFlags & 0x1f) { case DFCS_MENUARROWUP: Symbol = '5'; @@ -1000,8 +1000,8 @@ BOOL FASTCALL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags) /* save font */ hOldFont = NtGdiSelectFont(dc, hFont); - if ((uFlags & 0xff) == DFCS_MENUARROWUP || - (uFlags & 0xff) == DFCS_MENUARROWDOWN ) + if ((uFlags & 0x1f) == DFCS_MENUARROWUP || + (uFlags & 0x1f) == DFCS_MENUARROWDOWN ) { #if 0 if (uFlags & DFCS_INACTIVE) diff --git a/win32ss/user/user32/windows/draw.c b/win32ss/user/user32/windows/draw.c index 62798c89b26..cfc6ef458c5 100644 --- a/win32ss/user/user32/windows/draw.c +++ b/win32ss/user/user32/windows/draw.c @@ -777,7 +777,7 @@ static BOOL UITOOLS95_DFC_ButtonCheckRadio(HDC dc, LPRECT r, UINT uFlags, BOOL R /* Ported from WINE20020904 */ static BOOL UITOOLS95_DrawFrameButton(HDC hdc, LPRECT rc, UINT uState) { - switch(uState & 0xff) + switch(uState & 0x1f) { case DFCS_BUTTONPUSH: return UITOOLS95_DFC_ButtonPush(hdc, rc, uState); @@ -808,7 +808,7 @@ static BOOL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags) RECT myr; INT bkmode; TCHAR Symbol; - switch(uFlags & 0xff) + switch(uFlags & 0xf) { case DFCS_CAPTIONCLOSE: Symbol = 'r'; @@ -875,7 +875,7 @@ static BOOL UITOOLS95_DrawFrameScroll(HDC dc, LPRECT r, UINT uFlags) RECT myr; INT bkmode; TCHAR Symbol; - switch(uFlags & 0xff) + switch(uFlags & 0x1f) { case DFCS_SCROLLCOMBOBOX: case DFCS_SCROLLDOWN: @@ -979,7 +979,7 @@ static BOOL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags) RECT myr; INT cxy; cxy = UITOOLS_MakeSquareRect(r, &myr); - switch(uFlags & 0xff) + switch(uFlags & 0x1f) { case DFCS_MENUARROWUP: Symbol = '5'; @@ -1020,8 +1020,8 @@ static BOOL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags) /* save font */ hOldFont = SelectObject(dc, hFont); - if ((uFlags & 0xff) == DFCS_MENUARROWUP || - (uFlags & 0xff) == DFCS_MENUARROWDOWN ) + if ((uFlags & 0x1f) == DFCS_MENUARROWUP || + (uFlags & 0x1f) == DFCS_MENUARROWDOWN ) { #if 0 if (uFlags & DFCS_INACTIVE)