#pragma once #include "../DesktopTypes.hpp" #include "../../SharedDefs.hpp" class CWLSurfaceResource; namespace Desktop { class CFocusState { public: CFocusState(); ~CFocusState() = default; CFocusState(CFocusState&&) = delete; CFocusState(CFocusState&) = delete; CFocusState(const CFocusState&) = delete; void fullWindowFocus(PHLWINDOW w, SP surface = nullptr, bool forceFSCycle = false); void rawWindowFocus(PHLWINDOW w, SP surface = nullptr); void rawSurfaceFocus(SP s, PHLWINDOW pWindowOwner = nullptr); void rawMonitorFocus(PHLMONITOR m); void resetWindowFocus(); SP surface(); PHLWINDOW window(); PHLMONITOR monitor(); private: WP m_focusSurface; PHLWINDOWREF m_focusWindow; PHLMONITORREF m_focusMonitor; SP m_windowOpen, m_windowClose; }; SP focusState(); };