Author: gadamopoulos
Date: Fri May 12 12:44:49 2017
New Revision: 74522

URL: http://svn.reactos.org/svn/reactos?rev=74522&view=rev
Log:
[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.

Modified:
    trunk/reactos/dll/win32/uxtheme/themehooks.c

Modified: trunk/reactos/dll/win32/uxtheme/themehooks.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/uxtheme/themehooks.c?rev=74522&r1=74521&r2=74522&view=diff
==============================================================================
--- trunk/reactos/dll/win32/uxtheme/themehooks.c        [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/uxtheme/themehooks.c        [iso-8859-1] Fri May 12 
12:44:49 2017
@@ -312,14 +312,13 @@
         {
             /* 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 @@
             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);


Reply via email to