[2/6] comctl32/toolbar: Avoid unnecessary invalidation on TB_HIDEBUTTON
Nikolay Sivov
bunglehead at gmail.com
Sun Aug 2 17:54:42 CDT 2009
http://bugs.winehq.org/show_bug.cgi?id=17886
I've tested this with ControlSpy and it looks right for me,
sent it with original author name.
P.S. Can't trigger toolbar redrawing in tests (at point I want it to),
don't know why yet. That's why I didn't add a case for that.
Changelog:
- Avoid unnecessary invalidation on TB_HIDEBUTTON
>From 00334ec27ff4e1166d10c5c2b17c03222a142d22 Mon Sep 17 00:00:00 2001
From: Aled Hughes <winehq at aledhughes.co.uk>
Date: Mon, 3 Aug 2009 01:52:51 +0400
Subject: Avoid unnecessary invalidation on TB_HIDEBUTTON
---
dlls/comctl32/toolbar.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index 0d11b2b..d95dc7d 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -3633,6 +3633,7 @@ static LRESULT
TOOLBAR_HideButton (TOOLBAR_INFO *infoPtr, INT Id, BOOL fHide)
{
TBUTTON_INFO *btnPtr;
+ BYTE oldState;
INT nIndex;
TRACE("\n");
@@ -3642,15 +3643,17 @@ TOOLBAR_HideButton (TOOLBAR_INFO *infoPtr, INT Id, BOOL fHide)
return FALSE;
btnPtr = &infoPtr->buttons[nIndex];
+ oldState = btnPtr->fsState;
if (fHide)
btnPtr->fsState |= TBSTATE_HIDDEN;
else
btnPtr->fsState &= ~TBSTATE_HIDDEN;
- TOOLBAR_LayoutToolbar (infoPtr);
-
- InvalidateRect (infoPtr->hwndSelf, NULL, TRUE);
+ if (oldState != btnPtr->fsState) {
+ TOOLBAR_LayoutToolbar (infoPtr);
+ InvalidateRect (infoPtr->hwndSelf, NULL, TRUE);
+ }
return TRUE;
}
--
1.5.6.5
More information about the wine-patches
mailing list