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

commit a40331b0f4c0a423fae101dfc976376d7c7db647
Author:     Joachim Henze <[email protected]>
AuthorDate: Sun Sep 22 21:17:10 2019 +0200
Commit:     Joachim Henze <[email protected]>
CommitDate: Sun Sep 22 21:17:10 2019 +0200

    [COMCTL32] Workaround v6 button redraw regressions CORE-13278 & CORE-16093
    
    Most likely not correct, as it breaks comctl32:buttonv6 tests
    https://reactos.org/testman/compare.php?ids=68146,68147
    
    But greatly eliminates perceived flickering when hovering
    with the mouse about buttons in unthemed mode.
    We suffered from these regressions for years and nobody did
    find a proper solution, therefore it's time to at least workaround them.
    The patch did not expose any new real-world-issues after I retested
    the whole rapps suite against it in 0.4.12RCs.
    
    I committed the same workaround already into 0.4.12-RC-30-g
    9513c9bf12926e82c6956910366e661539789933
    
    CORE-13278 was once introduced/unhidden by SVN 73806 ==
    c607de714cefce7ce0acc2cdf15837f3bcf3d6dd
    
    CORE-16093 was once introduced/unhidden by SVN 74149 ==
    301c47607451bbf47331983f842cb9470bfe53e5
---
 dll/win32/comctl32/button.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/dll/win32/comctl32/button.c b/dll/win32/comctl32/button.c
index 1b345180870..37dab409b0d 100644
--- a/dll/win32/comctl32/button.c
+++ b/dll/win32/comctl32/button.c
@@ -842,7 +842,9 @@ static LRESULT CALLBACK BUTTON_WindowProc(HWND hWnd, UINT 
uMsg, WPARAM wParam, L
             nmhotitem.dwFlags      = HICF_ENTERING;
             SendMessageW(GetParent(hWnd), WM_NOTIFY, nmhotitem.hdr.idFrom, 
(LPARAM)&nmhotitem);
 
-            InvalidateRect(hWnd, NULL, TRUE);
+            theme = GetWindowTheme( hWnd );
+            if (theme)
+                InvalidateRect(hWnd, NULL, TRUE);
         }
 
         if(!TrackMouseEvent(&mouse_event) || !(mouse_event.dwFlags&TME_LEAVE))
@@ -896,7 +898,9 @@ static LRESULT CALLBACK BUTTON_WindowProc(HWND hWnd, UINT 
uMsg, WPARAM wParam, L
             nmhotitem.dwFlags      = HICF_LEAVING;
             SendMessageW(GetParent(hWnd), WM_NOTIFY, nmhotitem.hdr.idFrom, 
(LPARAM)&nmhotitem);
 
-            InvalidateRect(hWnd, NULL, TRUE);
+            theme = GetWindowTheme( hWnd );
+            if (theme)
+                InvalidateRect(hWnd, NULL, TRUE);
         }
         break;
 #else

Reply via email to