https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d8108a64a4922f65020ed0c83c259a517836513b

commit d8108a64a4922f65020ed0c83c259a517836513b
Author:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
AuthorDate: Fri Dec 29 20:58:51 2023 +0900
Commit:     GitHub <nore...@github.com>
CommitDate: Fri Dec 29 20:58:51 2023 +0900

    [COMDLG32] Color Picker: Fix black cross (#6242)
    
    JIRA issue: CORE-19403, CORE-19405
    - Fix HRGN handle leak.
    - Fix black cross coordinates.
---
 dll/win32/comdlg32/colordlg.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/dll/win32/comdlg32/colordlg.c b/dll/win32/comdlg32/colordlg.c
index 1acf3524666..299c740e752 100644
--- a/dll/win32/comdlg32/colordlg.c
+++ b/dll/win32/comdlg32/colordlg.c
@@ -523,10 +523,15 @@ static void CC_PaintCross(CCPRIV *infoPtr)
  if (IsWindowVisible(hwnd))   /* if full size */
  {
    HDC hDC;
+#ifdef __REACTOS__
+   int w = 8, wc = 6;
+#else
    int w = GetDialogBaseUnits() - 1;
    int wc = GetDialogBaseUnits() * 3 / 4;
+#endif
    RECT rect;
    POINT point, p;
+   HRGN region;
    HPEN hPen;
    int x, y;
 
@@ -535,7 +540,9 @@ static void CC_PaintCross(CCPRIV *infoPtr)
 
    GetClientRect(hwnd, &rect);
    hDC = GetDC(hwnd);
-   SelectClipRgn( hDC, CreateRectRgnIndirect(&rect));
+   region = CreateRectRgnIndirect(&rect);
+   SelectClipRgn(hDC, region);
+   DeleteObject(region);
 
    point.x = ((long)rect.right * (long)x) / (long)MAXHORI;
    point.y = rect.bottom - ((long)rect.bottom * (long)y) / (long)MAXVERT;
@@ -544,10 +551,17 @@ static void CC_PaintCross(CCPRIV *infoPtr)
               infoPtr->oldcross.right - infoPtr->oldcross.left,
               infoPtr->oldcross.bottom - infoPtr->oldcross.top,
               infoPtr->hdcMem, infoPtr->oldcross.left, infoPtr->oldcross.top, 
SRCCOPY);
+#ifdef __REACTOS__
+   infoPtr->oldcross.left   = point.x - w - 3;
+   infoPtr->oldcross.right  = point.x + w + 3;
+   infoPtr->oldcross.top    = point.y - w - 3;
+   infoPtr->oldcross.bottom = point.y + w + 3;
+#else
    infoPtr->oldcross.left   = point.x - w - 1;
    infoPtr->oldcross.right  = point.x + w + 1;
    infoPtr->oldcross.top    = point.y - w - 1;
    infoPtr->oldcross.bottom = point.y + w + 1;
+#endif
 
    hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); /* -black- color */
    hPen = SelectObject(hDC, hPen);

Reply via email to