user32: Make it possible to activate a window with parent and no WS_CHILD flag in WS_NCLBUTTONDOWN function.
This commit is contained in:
parent
b82b1306a4
commit
27374064b6
|
@ -1396,7 +1396,15 @@ LRESULT NC_HandleNCLButtonDown( HWND hwnd, WPARAM wParam, LPARAM lParam )
|
||||||
{
|
{
|
||||||
case HTCAPTION:
|
case HTCAPTION:
|
||||||
{
|
{
|
||||||
HWND top = GetAncestor( hwnd, GA_ROOT );
|
HWND top = hwnd, parent;
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
if ((GetWindowLongW( top, GWL_STYLE ) & (WS_POPUP|WS_CHILD)) != WS_CHILD)
|
||||||
|
break;
|
||||||
|
parent = GetAncestor( top, GA_PARENT );
|
||||||
|
if (!parent || parent == GetDesktopWindow()) break;
|
||||||
|
top = parent;
|
||||||
|
}
|
||||||
|
|
||||||
if (FOCUS_MouseActivate( top ) || (GetActiveWindow() == top))
|
if (FOCUS_MouseActivate( top ) || (GetActiveWindow() == top))
|
||||||
SendMessageW( hwnd, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, lParam );
|
SendMessageW( hwnd, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, lParam );
|
||||||
|
|
|
@ -7510,6 +7510,26 @@ todo_wine
|
||||||
DestroyWindow(parent);
|
DestroyWindow(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_window_without_child_style(void)
|
||||||
|
{
|
||||||
|
HWND hwnd;
|
||||||
|
|
||||||
|
hwnd = CreateWindowExA(0, "edit", NULL, WS_VISIBLE|WS_CHILD,
|
||||||
|
0, 0, 50, 50, hwndMain, NULL, 0, NULL);
|
||||||
|
ok(hwnd != NULL, "CreateWindow failed\n");
|
||||||
|
|
||||||
|
ok(SetWindowLongA(hwnd, GWL_STYLE, GetWindowLongA(hwnd, GWL_STYLE) & (~WS_CHILD)),
|
||||||
|
"can't remove WS_CHILD style\n");
|
||||||
|
|
||||||
|
SetActiveWindow(hwndMain);
|
||||||
|
PostMessageW(hwnd, WM_LBUTTONUP, 0, 0);
|
||||||
|
SendMessageW(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
|
||||||
|
check_active_state(hwnd, hwnd, hwnd);
|
||||||
|
flush_events(TRUE);
|
||||||
|
|
||||||
|
DestroyWindow(hwnd);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(win)
|
START_TEST(win)
|
||||||
{
|
{
|
||||||
HMODULE user32 = GetModuleHandleA( "user32.dll" );
|
HMODULE user32 = GetModuleHandleA( "user32.dll" );
|
||||||
|
@ -7640,6 +7660,7 @@ START_TEST(win)
|
||||||
test_winregion();
|
test_winregion();
|
||||||
test_map_points();
|
test_map_points();
|
||||||
test_update_region();
|
test_update_region();
|
||||||
|
test_window_without_child_style();
|
||||||
|
|
||||||
/* add the tests above this line */
|
/* add the tests above this line */
|
||||||
if (hhook) UnhookWindowsHookEx(hhook);
|
if (hhook) UnhookWindowsHookEx(hhook);
|
||||||
|
|
Loading…
Reference in New Issue