diff --git a/lcl/interfaces/win32/win32callback.inc b/lcl/interfaces/win32/win32callback.inc index f6cdb45471..0e8a98914a 100644 --- a/lcl/interfaces/win32/win32callback.inc +++ b/lcl/interfaces/win32/win32callback.inc @@ -1133,20 +1133,25 @@ begin begin if WParam <> 0 then // activated begin + //WriteLn('Restore'); RestoreStayOnTopFlags(Window); Windows.SetWindowPos(TWin32WidgetSet(WidgetSet).AppHandle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); end else begin // deactivated + //WriteLn('Remove'); RemoveStayOnTopFlags(Window); + Windows.SetWindowPos(TWin32WidgetSet(WidgetSet).AppHandle, HWND_BOTTOM, + 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); end; // activate/deactivate main window if (Application <> nil) and (Application.MainForm <> nil) and Application.MainForm.HandleAllocated then begin - CallDefaultWindowProc(Application.MainForm.Handle, WM_NCACTIVATE, WParam, LParam); + //WriteLn('Activate/Deactivate main window'); + CallDefaultWindowProc(Application.MainForm.Handle, WM_NCACTIVATE, WParam, 0); end; end; end; diff --git a/lcl/interfaces/win32/win32proc.pp b/lcl/interfaces/win32/win32proc.pp index 74f1d8429d..5cafae8816 100644 --- a/lcl/interfaces/win32/win32proc.pp +++ b/lcl/interfaces/win32/win32proc.pp @@ -1156,7 +1156,8 @@ begin if WindowInfo^.StayOnTopList <> nil then begin for I := 0 to WindowInfo^.StayOnTopList.Count - 1 do - SetWindowPos(HWND(WindowInfo^.StayOnTopList.Items[I]), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); + SetWindowPos(HWND(WindowInfo^.StayOnTopList.Items[I]), + HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); FreeAndNil(WindowInfo^.StayOnTopList); end; end;