Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/comctl32/button.c | 1 +
dlls/comctl32/combo.c | 1 +
dlls/comctl32/datetime.c | 1 +
dlls/comctl32/edit.c | 1 +
dlls/comctl32/header.c | 2 +-
dlls/comctl32/ipaddress.c | 1 +
dlls/comctl32/listbox.c | 1 +
dlls/comctl32/listview.c | 1 +
dlls/comctl32/monthcal.c | 1 +
dlls/comctl32/pager.c | 9 +++++++++
dlls/comctl32/progress.c | 2 +-
dlls/comctl32/static.c | 4 ++++
dlls/comctl32/status.c | 1 +
dlls/comctl32/tab.c | 1 +
dlls/comctl32/tests/misc.c | 36 ++++++++++++++++-----------------
dlls/comctl32/theme_scrollbar.c | 1 +
dlls/comctl32/toolbar.c | 1 +
dlls/comctl32/trackbar.c | 1 +
dlls/comctl32/treeview.c | 1 +
dlls/comctl32/updown.c | 2 +-
20 files changed, 48 insertions(+), 21 deletions(-)
diff --git a/dlls/comctl32/button.c b/dlls/comctl32/button.c
index b5a9ee7f7f6..d3dcc67b169 100644
--- a/dlls/comctl32/button.c
+++ b/dlls/comctl32/button.c
@@ -534,6 +534,7 @@ static LRESULT CALLBACK BUTTON_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, L
theme = GetWindowTheme( hWnd );
CloseThemeData( theme );
OpenThemeData( hWnd, WC_BUTTONW );
+ InvalidateRect( hWnd, NULL, TRUE );
break;
case WM_ERASEBKGND:
diff --git a/dlls/comctl32/combo.c b/dlls/comctl32/combo.c
index 887587a053b..074f54f0937 100644
--- a/dlls/comctl32/combo.c
+++ b/dlls/comctl32/combo.c
@@ -1698,6 +1698,7 @@ static LRESULT CALLBACK COMBO_WindowProc( HWND hwnd, UINT message, WPARAM wParam
theme = GetWindowTheme( hwnd );
CloseThemeData( theme );
OpenThemeData( hwnd, WC_COMBOBOXW );
+ InvalidateRect( hwnd, NULL, TRUE );
break;
case WM_PRINTCLIENT:
diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c
index 93bca8c2f5c..ac5268f146c 100644
--- a/dlls/comctl32/datetime.c
+++ b/dlls/comctl32/datetime.c
@@ -1544,6 +1544,7 @@ static LRESULT DATETIME_ThemeChanged (DATETIME_INFO *infoPtr)
theme = GetWindowTheme(infoPtr->hwndSelf);
CloseThemeData(theme);
OpenThemeData(infoPtr->hwndSelf, themeClass);
+ InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/edit.c b/dlls/comctl32/edit.c
index 639443bc338..d9354a107b1 100644
--- a/dlls/comctl32/edit.c
+++ b/dlls/comctl32/edit.c
@@ -5097,6 +5097,7 @@ static LRESULT CALLBACK EDIT_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPAR
case WM_THEMECHANGED:
CloseThemeData(GetWindowTheme(hwnd));
OpenThemeData(hwnd, WC_EDITW);
+ InvalidateRect(hwnd, NULL, TRUE);
break;
default:
diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c
index 085549fed65..8bb39261dd1 100644
--- a/dlls/comctl32/header.c
+++ b/dlls/comctl32/header.c
@@ -2110,7 +2110,7 @@ static LRESULT HEADER_ThemeChanged(const HEADER_INFO *infoPtr)
HTHEME theme = GetWindowTheme(infoPtr->hwndSelf);
CloseThemeData(theme);
OpenThemeData(infoPtr->hwndSelf, themeClass);
- InvalidateRect(infoPtr->hwndSelf, NULL, FALSE);
+ InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/ipaddress.c b/dlls/comctl32/ipaddress.c
index b6302a89ba6..f24fb4a9335 100644
--- a/dlls/comctl32/ipaddress.c
+++ b/dlls/comctl32/ipaddress.c
@@ -462,6 +462,7 @@ static LRESULT IPADDRESS_ThemeChanged (const IPADDRESS_INFO *infoPtr)
HTHEME theme = GetWindowTheme (infoPtr->Self);
CloseThemeData (theme);
theme = OpenThemeData (theme, WC_EDITW);
+ InvalidateRect (infoPtr->Self, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/listbox.c b/dlls/comctl32/listbox.c
index 239f54aafab..f9283f45282 100644
--- a/dlls/comctl32/listbox.c
+++ b/dlls/comctl32/listbox.c
@@ -3136,6 +3136,7 @@ static LRESULT CALLBACK LISTBOX_WindowProc( HWND hwnd, UINT msg, WPARAM wParam,
theme = GetWindowTheme( hwnd );
CloseThemeData( theme );
OpenThemeData( hwnd, WC_LISTBOXW );
+ InvalidateRect( hwnd, NULL, TRUE );
break;
default:
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 799ec509f33..05a772ab175 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -9345,6 +9345,7 @@ static LRESULT LISTVIEW_ThemeChanged(const LISTVIEW_INFO *infoPtr)
HTHEME theme = GetWindowTheme(infoPtr->hwndSelf);
CloseThemeData(theme);
OpenThemeData(infoPtr->hwndSelf, themeClass);
+ InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c
index 98c682df334..c0bec07f477 100644
--- a/dlls/comctl32/monthcal.c
+++ b/dlls/comctl32/monthcal.c
@@ -2697,6 +2697,7 @@ static LRESULT theme_changed (const MONTHCAL_INFO* infoPtr)
HTHEME theme = GetWindowTheme (infoPtr->hwndSelf);
CloseThemeData (theme);
OpenThemeData (infoPtr->hwndSelf, themeClass);
+ InvalidateRect (infoPtr->hwndSelf, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/pager.c b/dlls/comctl32/pager.c
index 4763ed5640d..b8baa93e15f 100644
--- a/dlls/comctl32/pager.c
+++ b/dlls/comctl32/pager.c
@@ -966,6 +966,12 @@ PAGER_Timer (PAGER_INFO* infoPtr, INT nTimerId)
return 0;
}
+static LRESULT PAGER_ThemeChanged (const PAGER_INFO* infoPtr)
+{
+ InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
+ return 0;
+}
+
static LRESULT
PAGER_EraseBackground (const PAGER_INFO* infoPtr, HDC hdc)
{
@@ -1553,6 +1559,9 @@ PAGER_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_COMMAND:
return SendMessageW (infoPtr->hwndNotify, uMsg, wParam, lParam);
+ case WM_THEMECHANGED:
+ return PAGER_ThemeChanged (infoPtr);
+
default:
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
}
diff --git a/dlls/comctl32/progress.c b/dlls/comctl32/progress.c
index 5cf2ccda20f..fb4c2dc66dd 100644
--- a/dlls/comctl32/progress.c
+++ b/dlls/comctl32/progress.c
@@ -615,7 +615,7 @@ static LRESULT WINAPI ProgressWindowProc(HWND hwnd, UINT message,
dwExStyle |= WS_EX_STATICEDGE;
SetWindowLongW (hwnd, GWL_EXSTYLE, dwExStyle);
- InvalidateRect (hwnd, NULL, FALSE);
+ InvalidateRect (hwnd, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/static.c b/dlls/comctl32/static.c
index b3254e5761b..2bd2b22bc20 100644
--- a/dlls/comctl32/static.c
+++ b/dlls/comctl32/static.c
@@ -505,6 +505,10 @@ static LRESULT CALLBACK STATIC_WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam,
STATIC_TryPaintFcn( hwnd, full_style );
break;
+ case WM_THEMECHANGED:
+ InvalidateRect( hwnd, 0, TRUE );
+ break;
+
case WM_NCCREATE:
{
CREATESTRUCTW *cs = (CREATESTRUCTW *)lParam;
diff --git a/dlls/comctl32/status.c b/dlls/comctl32/status.c
index 0c3a90887c8..7bc9ec4386f 100644
--- a/dlls/comctl32/status.c
+++ b/dlls/comctl32/status.c
@@ -1111,6 +1111,7 @@ static LRESULT theme_changed (const STATUS_INFO* infoPtr)
HTHEME theme = GetWindowTheme (infoPtr->Self);
CloseThemeData (theme);
OpenThemeData (infoPtr->Self, themeClass);
+ InvalidateRect (infoPtr->Self, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/tab.c b/dlls/comctl32/tab.c
index 3bb5310d1f3..017719a183d 100644
--- a/dlls/comctl32/tab.c
+++ b/dlls/comctl32/tab.c
@@ -3106,6 +3106,7 @@ static LRESULT theme_changed(const TAB_INFO *infoPtr)
HTHEME theme = GetWindowTheme (infoPtr->hwnd);
CloseThemeData (theme);
OpenThemeData (infoPtr->hwnd, themeClass);
+ InvalidateRect (infoPtr->hwnd, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/tests/misc.c b/dlls/comctl32/tests/misc.c
index f4fcb300bb2..4b0c1f9a4d0 100644
--- a/dlls/comctl32/tests/misc.c
+++ b/dlls/comctl32/tests/misc.c
@@ -556,30 +556,30 @@ static void test_WM_THEMECHANGED(void)
static const struct wm_themechanged_test tests[] =
{
{ANIMATE_CLASSA, wm_themechanged_no_paint_seq},
- {WC_BUTTONA, wm_themechanged_paint_erase_seq, 2, {WM_GETTEXT, WM_GETTEXTLENGTH}, TRUE},
- {WC_COMBOBOXA, wm_themechanged_paint_erase_seq, 1, {WM_CTLCOLOREDIT}, TRUE},
+ {WC_BUTTONA, wm_themechanged_paint_erase_seq, 2, {WM_GETTEXT, WM_GETTEXTLENGTH}},
+ {WC_COMBOBOXA, wm_themechanged_paint_erase_seq, 1, {WM_CTLCOLOREDIT}},
{WC_COMBOBOXEXA, wm_themechanged_no_paint_seq},
- {DATETIMEPICK_CLASSA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
- {WC_EDITA, wm_themechanged_paint_erase_seq, 7, {WM_GETTEXTLENGTH, WM_GETFONT, EM_GETSEL, EM_GETRECT, EM_CHARFROMPOS, EM_LINEFROMCHAR, EM_POSFROMCHAR}, TRUE},
- {WC_HEADERA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
+ {DATETIMEPICK_CLASSA, wm_themechanged_paint_erase_seq},
+ {WC_EDITA, wm_themechanged_paint_erase_seq, 7, {WM_GETTEXTLENGTH, WM_GETFONT, EM_GETSEL, EM_GETRECT, EM_CHARFROMPOS, EM_LINEFROMCHAR, EM_POSFROMCHAR}},
+ {WC_HEADERA, wm_themechanged_paint_erase_seq},
{HOTKEY_CLASSA, wm_themechanged_no_paint_seq},
- {WC_IPADDRESSA, wm_themechanged_paint_erase_seq, 1, {WM_CTLCOLOREDIT}, TRUE},
- {WC_LISTBOXA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
- {WC_LISTVIEWA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
- {MONTHCAL_CLASSA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
+ {WC_IPADDRESSA, wm_themechanged_paint_erase_seq, 1, {WM_CTLCOLOREDIT}},
+ {WC_LISTBOXA, wm_themechanged_paint_erase_seq},
+ {WC_LISTVIEWA, wm_themechanged_paint_erase_seq},
+ {MONTHCAL_CLASSA, wm_themechanged_paint_erase_seq},
{WC_NATIVEFONTCTLA, wm_themechanged_no_paint_seq},
- {WC_PAGESCROLLERA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
- {PROGRESS_CLASSA, wm_themechanged_paint_erase_seq, 3, {WM_STYLECHANGING, WM_STYLECHANGED, WM_NCPAINT}, TRUE},
+ {WC_PAGESCROLLERA, wm_themechanged_paint_erase_seq},
+ {PROGRESS_CLASSA, wm_themechanged_paint_erase_seq, 3, {WM_STYLECHANGING, WM_STYLECHANGED, WM_NCPAINT}},
{REBARCLASSNAMEA, wm_themechanged_no_paint_seq, 1, {WM_WINDOWPOSCHANGING}},
- {WC_STATICA, wm_themechanged_paint_erase_seq, 2, {WM_GETTEXT, WM_GETTEXTLENGTH}, TRUE},
- {STATUSCLASSNAMEA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
+ {WC_STATICA, wm_themechanged_paint_erase_seq, 2, {WM_GETTEXT, WM_GETTEXTLENGTH}},
+ {STATUSCLASSNAMEA, wm_themechanged_paint_erase_seq},
{"SysLink", wm_themechanged_no_paint_seq},
- {WC_TABCONTROLA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
- {TOOLBARCLASSNAMEA, wm_themechanged_paint_erase_seq, 1, {WM_WINDOWPOSCHANGING}, TRUE},
+ {WC_TABCONTROLA, wm_themechanged_paint_erase_seq},
+ {TOOLBARCLASSNAMEA, wm_themechanged_paint_erase_seq, 1, {WM_WINDOWPOSCHANGING}},
{TOOLTIPS_CLASSA, wm_themechanged_no_paint_seq},
- {TRACKBAR_CLASSA, wm_themechanged_paint_seq, 0, {0}, TRUE},
- {WC_TREEVIEWA, wm_themechanged_paint_erase_seq, 1, {0x1128}, TRUE},
- {UPDOWN_CLASSA, wm_themechanged_paint_erase_seq, 0, {0}, TRUE},
+ {TRACKBAR_CLASSA, wm_themechanged_paint_seq},
+ {WC_TREEVIEWA, wm_themechanged_paint_erase_seq, 1, {0x1128}},
+ {UPDOWN_CLASSA, wm_themechanged_paint_erase_seq},
{WC_SCROLLBARA, wm_themechanged_paint_erase_seq, 1, {SBM_GETSCROLLINFO}, TRUE},
};
diff --git a/dlls/comctl32/theme_scrollbar.c b/dlls/comctl32/theme_scrollbar.c
index 27d31bd4ac5..304ff5bacbc 100644
--- a/dlls/comctl32/theme_scrollbar.c
+++ b/dlls/comctl32/theme_scrollbar.c
@@ -547,6 +547,7 @@ LRESULT CALLBACK THEMING_ScrollbarSubclassProc (HWND hwnd, UINT msg,
theme = GetWindowTheme(hwnd);
CloseThemeData(theme);
OpenThemeData(hwnd, themeClass);
+ InvalidateRect(hwnd, NULL, TRUE);
break;
case WM_SYSCOLORCHANGE:
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index 667a2f4c277..1aeb499c45f 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -6556,6 +6556,7 @@ static LRESULT theme_changed (HWND hwnd)
HTHEME theme = GetWindowTheme (hwnd);
CloseThemeData (theme);
OpenThemeData (hwnd, themeClass);
+ InvalidateRect (hwnd, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/trackbar.c b/dlls/comctl32/trackbar.c
index 66522fd8582..1859cf0f516 100644
--- a/dlls/comctl32/trackbar.c
+++ b/dlls/comctl32/trackbar.c
@@ -1720,6 +1720,7 @@ static LRESULT theme_changed (const TRACKBAR_INFO* infoPtr)
HTHEME theme = GetWindowTheme (infoPtr->hwndSelf);
CloseThemeData (theme);
OpenThemeData (infoPtr->hwndSelf, themeClass);
+ InvalidateRect (infoPtr->hwndSelf, NULL, FALSE);
return 0;
}
diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c
index a45096d8239..98cf5489f2b 100644
--- a/dlls/comctl32/treeview.c
+++ b/dlls/comctl32/treeview.c
@@ -5633,6 +5633,7 @@ static LRESULT TREEVIEW_ThemeChanged(const TREEVIEW_INFO *infoPtr)
HTHEME theme = GetWindowTheme (infoPtr->hwnd);
CloseThemeData (theme);
OpenThemeData (infoPtr->hwnd, themeClass);
+ InvalidateRect (infoPtr->hwnd, NULL, TRUE);
return 0;
}
diff --git a/dlls/comctl32/updown.c b/dlls/comctl32/updown.c
index a804018d5f8..d5625839db3 100644
--- a/dlls/comctl32/updown.c
+++ b/dlls/comctl32/updown.c
@@ -966,7 +966,7 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
theme = GetWindowTheme (hwnd);
CloseThemeData (theme);
OpenThemeData (hwnd, L"Spin");
- InvalidateRect (hwnd, NULL, FALSE);
+ InvalidateRect (hwnd, NULL, TRUE);
break;
case WM_TIMER:
--
2.30.2