From e4832e1f99395be54eeb433d3dbbe1ca0bc8c077 Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Fri, 12 May 2017 12:44:49 +0000 Subject: [PATCH] [UXTHEME] -Fix the tab background pattern hack when the background pattern is smaller than the window that we are trying to paint. CORE-13147, CORE-13192. There is still a bug where the pattern doesn't change after a theme change. svn path=/trunk/; revision=74522 --- reactos/dll/win32/uxtheme/themehooks.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/reactos/dll/win32/uxtheme/themehooks.c b/reactos/dll/win32/uxtheme/themehooks.c index 8cc56b129c3..ef54e5248af 100644 --- a/reactos/dll/win32/uxtheme/themehooks.c +++ b/reactos/dll/win32/uxtheme/themehooks.c @@ -312,14 +312,13 @@ HRESULT GetDiaogTextureBrush(HTHEME theme, HWND hwnd, HDC hdc, HBRUSH* result, B { /* Unfortunately SetBrushOrgEx doesn't work at all */ RECT rcWindow, rcParent; - POINT pt; + UINT y; HDC hdcPattern, hdcHackPattern; HBITMAP hbmpOld1, hbmpold2, hbmpHack; GetWindowRect(hwnd, &rcWindow); GetWindowRect(GetParent(hwnd), &rcParent); - pt.x = rcWindow.left - rcParent.left; - pt.y = rcWindow.top - rcParent.top; + y = (rcWindow.top - rcParent.top) % bmpRect.bottom; hdcPattern = CreateCompatibleDC(hdc); hbmpOld1 = (HBITMAP)SelectObject(hdcPattern, hbmp); @@ -328,8 +327,8 @@ HRESULT GetDiaogTextureBrush(HTHEME theme, HWND hwnd, HDC hdc, HBRUSH* result, B hbmpHack = CreateCompatibleBitmap(hdc, bmpRect.right, bmpRect.bottom); hbmpold2 = (HBITMAP)SelectObject(hdcHackPattern, hbmpHack); - BitBlt(hdcHackPattern, 0, 0, bmpRect.right, bmpRect.bottom - pt.y, hdcPattern, 0, pt.y, SRCCOPY); - BitBlt(hdcHackPattern, 0, bmpRect.bottom - pt.y, bmpRect.right, pt.y, hdcPattern, 0, 0, SRCCOPY); + BitBlt(hdcHackPattern, 0, 0, bmpRect.right, bmpRect.bottom - y, hdcPattern, 0, y, SRCCOPY); + BitBlt(hdcHackPattern, 0, bmpRect.bottom - y, bmpRect.right, y, hdcPattern, 0, 0, SRCCOPY); hbmpold2 = (HBITMAP)SelectObject(hdcHackPattern, hbmpold2); hbmpOld1 = (HBITMAP)SelectObject(hdcPattern, hbmpOld1);