1
0
mirror of https://github.com/narzoul/DDrawCompat synced 2024-12-30 08:55:36 +01:00

Avoid forced invalidation of the scroll bar child control when scrolling

This was causing the scroll bar arrows to lose their pressed appearance.
This commit is contained in:
narzoul 2016-03-31 23:00:47 +02:00
parent d0fbd5cfd0
commit 3827007c0c

View File

@ -19,6 +19,7 @@ namespace
void disableDwmAttributes(HWND hwnd); void disableDwmAttributes(HWND hwnd);
void onMenuSelect(); void onMenuSelect();
void onScroll(HWND hwnd, HWND scrollBar);
void onWindowPosChanged(HWND hwnd); void onWindowPosChanged(HWND hwnd);
void removeDropShadow(HWND hwnd); void removeDropShadow(HWND hwnd);
@ -45,7 +46,7 @@ namespace
} }
else if (WM_VSCROLL == ret->message || WM_HSCROLL == ret->message) else if (WM_VSCROLL == ret->message || WM_HSCROLL == ret->message)
{ {
CompatGdiScrollFunctions::updateScrolledWindow(ret->hwnd); onScroll(ret->hwnd, reinterpret_cast<HWND>(ret->lParam));
} }
else if (WM_COMMAND == ret->message) else if (WM_COMMAND == ret->message)
{ {
@ -146,6 +147,21 @@ namespace
} }
} }
void onScroll(HWND hwnd, HWND scrollBar)
{
if (scrollBar)
{
UpdateWindow(scrollBar);
}
CompatGdiScrollFunctions::updateScrolledWindow(hwnd);
if (scrollBar)
{
ValidateRect(scrollBar, nullptr);
}
}
void onWindowPosChanged(HWND hwnd) void onWindowPosChanged(HWND hwnd)
{ {
CompatGdi::GdiScopedThreadLock lock; CompatGdi::GdiScopedThreadLock lock;