[PATCH v4 4/7] user32: Always send WM_CANCELMODE when disabling a window.
Zebediah Figura
z.figura12 at gmail.com
Mon Mar 27 14:01:41 CDT 2017
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/user32/tests/msg.c | 21 ++++++++++++++++++++-
dlls/user32/win.c | 15 +++++++++------
2 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 7bdb65a..093aaa6 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -1796,11 +1796,24 @@ static const struct message WmEnableWindowSeq_1[] =
static const struct message WmEnableWindowSeq_2[] =
{
+ { WM_CANCELMODE, sent|wparam|lparam, 0, 0 },
+ { EVENT_OBJECT_STATECHANGE, winevent_hook|wparam|lparam, 0, 0 },
+ { 0 }
+};
+
+static const struct message WmEnableWindowSeq_3[] =
+{
{ EVENT_OBJECT_STATECHANGE, winevent_hook|wparam|lparam, 0, 0 },
{ WM_ENABLE, sent|wparam|lparam, TRUE, 0 },
{ 0 }
};
+static const struct message WmEnableWindowSeq_4[] =
+{
+ { EVENT_OBJECT_STATECHANGE, winevent_hook|wparam|lparam, 0, 0 },
+ { 0 }
+};
+
static const struct message WmGetScrollRangeSeq[] =
{
{ SBM_GETRANGE, sent },
@@ -5484,8 +5497,14 @@ static void test_messages(void)
EnableWindow(hparent, FALSE);
ok_sequence(WmEnableWindowSeq_1, "EnableWindow(FALSE)", FALSE);
+ EnableWindow(hparent, FALSE);
+ ok_sequence(WmEnableWindowSeq_2, "EnableWindow(FALSE)", FALSE);
+
+ EnableWindow(hparent, TRUE);
+ ok_sequence(WmEnableWindowSeq_3, "EnableWindow(TRUE)", FALSE);
+
EnableWindow(hparent, TRUE);
- ok_sequence(WmEnableWindowSeq_2, "EnableWindow(TRUE)", FALSE);
+ ok_sequence(WmEnableWindowSeq_4, "EnableWindow(TRUE)", FALSE);
flush_events();
flush_sequence();
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index fb8f948..d34037a 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -2152,16 +2152,19 @@ BOOL WINAPI EnableWindow( HWND hwnd, BOOL enable )
WIN_SetStyle( hwnd, 0, WS_DISABLED );
SendMessageW( hwnd, WM_ENABLE, TRUE, 0 );
}
- else if (!enable && !retvalue)
+ else if (!enable)
{
- SendMessageW( hwnd, WM_CANCELMODE, 0, 0);
+ SendMessageW(hwnd, WM_CANCELMODE, 0, 0);
- WIN_SetStyle( hwnd, WS_DISABLED, 0 );
+ if (!retvalue)
+ {
+ WIN_SetStyle(hwnd, WS_DISABLED, 0);
- if (hwnd == GetFocus())
- SetFocus( 0 ); /* A disabled window can't have the focus */
+ if (hwnd == GetFocus())
+ SetFocus(0); /* A disabled window can't have the focus */
- SendMessageW( hwnd, WM_ENABLE, FALSE, 0 );
+ SendMessageW(hwnd, WM_ENABLE, FALSE, 0);
+ }
}
return retvalue;
}
--
2.7.4
More information about the wine-patches
mailing list