mirror of
https://github.com/reactos/reactos.git
synced 2024-09-11 05:12:43 +00:00
remove focus from window, when it gets diabled
- fixes bug 843 See issue #843 for more details. svn path=/trunk/; revision=25412
This commit is contained in:
parent
6af685313a
commit
b824f04492
|
@ -36,6 +36,7 @@
|
|||
/* Directory to load key layouts from */
|
||||
#define SYSTEMROOT_DIR L"\\SystemRoot\\System32\\"
|
||||
|
||||
#define STATE_GWL_OFFSET 0
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
|
||||
|
@ -338,11 +339,24 @@ EnableWindow(HWND hWnd,
|
|||
BOOL bEnable)
|
||||
{
|
||||
LONG Style = NtUserGetWindowLong(hWnd, GWL_STYLE, FALSE);
|
||||
Style = bEnable ? Style & ~WS_DISABLED : Style | WS_DISABLED;
|
||||
NtUserSetWindowLong(hWnd, GWL_STYLE, Style, FALSE);
|
||||
|
||||
SendMessageA(hWnd, WM_ENABLE, (LPARAM) IsWindowEnabled(hWnd), 0);
|
||||
/* check if updating is needed */
|
||||
UINT bIsDisabled = (Style & WS_DISABLED);
|
||||
if ( (bIsDisabled && bEnable) || (!bIsDisabled && !bEnable) )
|
||||
{
|
||||
if (bEnable)
|
||||
{
|
||||
Style &= ~WS_DISABLED;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Remove keyboard focus from that window */
|
||||
SetFocus(NULL);
|
||||
Style |= WS_DISABLED;
|
||||
}
|
||||
NtUserSetWindowLong(hWnd, GWL_STYLE, Style, FALSE);
|
||||
|
||||
SendMessageA(hWnd, WM_ENABLE, (LPARAM) IsWindowEnabled(hWnd), 0);
|
||||
}
|
||||
// Return nonzero if it was disabled, or zero if it wasn't:
|
||||
return IsWindowEnabled(hWnd);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue