#pragma once #include #include #include #include #include #include struct WindowWithDistance { int distance; HWND window; }; class WindowArranger { public: WindowArranger(WorkspacesData::WorkspacesProject project); ~WindowArranger() = default; private: const WorkspacesData::WorkspacesProject m_project; const std::vector m_windowsBefore; const std::vector m_monitors; const Utils::Apps::AppList m_installedApps; //const WindowCreationHandler m_windowCreationHandler; IPCHelper m_ipcHelper; LaunchingStatus m_launchingStatus; std::optional GetNearestWindow(const WorkspacesData::WorkspacesProject::Application& app, const std::vector& movedWindows, Utils::PwaHelper& pwaHelper); bool TryMoveWindow(const WorkspacesData::WorkspacesProject::Application& app, HWND windowToMove); //void onWindowCreated(HWND window); void processWindows(bool processAll); void processWindow(HWND window); bool moveWindow(HWND window, const WorkspacesData::WorkspacesProject::Application& app); void receiveIpcMessage(const std::wstring& message); void sendUpdatedState(const WorkspacesData::LaunchingAppState& data) const; };