#ifndef DESKTOP_MULTI_WINDOW_WINDOWS_MULTI_WINDOW_MANAGER_H_ #define DESKTOP_MULTI_WINDOW_WINDOWS_MULTI_WINDOW_MANAGER_H_ #include #include #include #include "flutter_plugin_registrar.h" #include "flutter_window.h" #include "flutter_window_wrapper.h" class MultiWindowManager { public: static MultiWindowManager* Instance(); MultiWindowManager(); std::string Create(const flutter::EncodableMap* args); void AttachFlutterMainWindow(HWND main_window_handle, FlutterDesktopPluginRegistrarRef registrar); FlutterWindowWrapper* GetWindow(const std::string& window_id); void RemoveWindow(const std::string& window_id); void RemoveManagedFlutterWindowLater(const std::string& window_id); flutter::EncodableList GetAllWindows(); std::vector GetAllWindowIds(); private: void NotifyWindowsChanged(); void CleanupRemovedWindows(); std::map> windows_; std::map> managed_flutter_windows_; std::vector pending_remove_ids_; }; #endif // DESKTOP_MULTI_WINDOW_WINDOWS_MULTI_WINDOW_MANAGER_H_