i_window_manager.hpp 768 B

1234567891011121314151617181920212223242526
  1. #pragma once
  2. #include "lumacs/window.hpp"
  3. #include "lumacs/layout_node.hpp"
  4. #include <memory>
  5. #include <vector>
  6. namespace lumacs {
  7. /// @brief Interface for accessing window management functionality.
  8. class IWindowManager {
  9. public:
  10. virtual ~IWindowManager() = default;
  11. /// @brief Get the currently active window.
  12. virtual std::shared_ptr<Window> active_window() const = 0;
  13. /// @brief Collect all windows in the layout tree.
  14. /// This is a helper to allow managers to iterate over all windows.
  15. virtual void collect_windows(LayoutNode* node, std::vector<std::shared_ptr<Window>>& windows) = 0;
  16. /// @brief Get the root of the window layout tree.
  17. virtual std::shared_ptr<LayoutNode> root_layout() const = 0;
  18. };
  19. } // namespace lumacs