[PATCH] comctl32/tooltips: Reset window subclass data when removing tools
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- Similar to b68dbf4ea1294a98ca653f32e88b07be632a5bae, intentionally separated because it's not essential to fix original bug. dlls/comctl32/tooltips.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/dlls/comctl32/tooltips.c b/dlls/comctl32/tooltips.c index 405b1e9f5c..1c8cb66422 100644 --- a/dlls/comctl32/tooltips.c +++ b/dlls/comctl32/tooltips.c @@ -1142,6 +1142,13 @@ TOOLTIPS_AddToolT (TOOLTIPS_INFO *infoPtr, const TTTOOLINFOW *ti, BOOL isW) return TRUE; } +static void TOOLTIPS_ResetSubclass (const TTTOOL_INFO *toolPtr) +{ + /* Reset subclassing data. */ + if (toolPtr->uInternalFlags & TTF_SUBCLASS) + SetWindowSubclass(toolPtr->uInternalFlags & TTF_IDISHWND ? (HWND)toolPtr->uId : toolPtr->hwnd, + TOOLTIPS_SubclassProc, 1, 0); +} static LRESULT TOOLTIPS_DelToolT (TOOLTIPS_INFO *infoPtr, const TTTOOLINFOW *ti, BOOL isW) @@ -1174,15 +1181,7 @@ TOOLTIPS_DelToolT (TOOLTIPS_INFO *infoPtr, const TTTOOLINFOW *ti, BOOL isW) Free (toolPtr->lpszText); } - /* remove subclassing */ - if (toolPtr->uInternalFlags & TTF_SUBCLASS) { - if (toolPtr->uInternalFlags & TTF_IDISHWND) { - RemoveWindowSubclass((HWND)toolPtr->uId, TOOLTIPS_SubclassProc, 1); - } - else { - RemoveWindowSubclass(toolPtr->hwnd, TOOLTIPS_SubclassProc, 1); - } - } + TOOLTIPS_ResetSubclass (toolPtr); /* delete tool from tool list */ if (infoPtr->uNumTools == 1) { @@ -1888,10 +1887,7 @@ TOOLTIPS_Destroy (TOOLTIPS_INFO *infoPtr) } } - /* Reset subclassing data. */ - if (toolPtr->uInternalFlags & TTF_SUBCLASS) - SetWindowSubclass(toolPtr->uInternalFlags & TTF_IDISHWND ? (HWND)toolPtr->uId : toolPtr->hwnd, - TOOLTIPS_SubclassProc, 1, 0); + TOOLTIPS_ResetSubclass (toolPtr); } Free (infoPtr->tools); -- 2.15.1
participants (1)
-
Nikolay Sivov