Piotr Caban : comctl32: Improved setting button state.
Alexandre Julliard
julliard at winehq.org
Mon Jun 27 17:41:21 CDT 2011
Module: wine
Branch: master
Commit: d2c9a5cfae5251ba03cf6ff639012a2a9216a39b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d2c9a5cfae5251ba03cf6ff639012a2a9216a39b
Author: Piotr Caban <piotr at codeweavers.com>
Date: Mon Jun 27 14:21:59 2011 +0200
comctl32: Improved setting button state.
---
dlls/comctl32/theme_button.c | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/dlls/comctl32/theme_button.c b/dlls/comctl32/theme_button.c
index 488c751..90e1172 100644
--- a/dlls/comctl32/theme_button.c
+++ b/dlls/comctl32/theme_button.c
@@ -246,18 +246,26 @@ static BOOL BUTTON_Paint(HTHEME theme, HWND hwnd, HDC hParamDC)
DWORD dwStyle = GetWindowLongW(hwnd, GWL_STYLE);
DWORD dwStyleEx = GetWindowLongW(hwnd, GWL_EXSTYLE);
UINT dtFlags = get_drawtext_flags(dwStyle, dwStyleEx);
- ButtonState drawState = IsWindowEnabled(hwnd) ? STATE_NORMAL : STATE_DISABLED;
+ int state = (int)SendMessageW(hwnd, BM_GETSTATE, 0, 0);
+ ButtonState drawState;
pfThemedPaint paint = btnThemedPaintFunc[ dwStyle & BUTTON_TYPE ];
- if (paint)
+ if(!paint)
+ return FALSE;
+
+ if(IsWindowEnabled(hwnd))
{
- hDC = hParamDC ? hParamDC : BeginPaint(hwnd, &ps);
- paint(theme, hwnd, hDC, drawState, dtFlags);
- if (!hParamDC) EndPaint(hwnd, &ps);
- return TRUE;
+ if(state & BST_PUSHED) drawState = STATE_PRESSED;
+ else if(state & BST_HOT) drawState = STATE_HOT;
+ else if(state & BST_FOCUS) drawState = STATE_DEFAULTED;
+ else drawState = STATE_NORMAL;
}
+ else drawState = STATE_DISABLED;
- return FALSE; /* Delegate drawing to the non-themed code. */
+ hDC = hParamDC ? hParamDC : BeginPaint(hwnd, &ps);
+ paint(theme, hwnd, hDC, drawState, dtFlags);
+ if (!hParamDC) EndPaint(hwnd, &ps);
+ return TRUE;
}
/**********************************************************************
More information about the wine-cvs
mailing list