wm: add WindowManager module with ext-workspace support

This commit is contained in:
outfoxxed committed 2026-03-16 01:08:26 -07:00
1 parent 9e8eecf2b8
commit 6705e2da77
22 files changed
+1337

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
#include "windowmanager.hpp"
#include <functional>
#include <utility>
#include <qobject.h>
#include "../core/qmlscreen.hpp"
#include "screenprojection.hpp"
namespace qs::wm {
std::function<WindowManager*()> WindowManager::provider;
void WindowManager::setProvider(std::function<WindowManager*()> provider) {
WindowManager::provider = std::move(provider);
}
WindowManager* WindowManager::instance() {
static auto* instance = WindowManager::provider();
return instance;
}
ScreenProjection* WindowManager::screenProjection(QuickshellScreenInfo* screen) {
auto* qscreen = screen->screen;
auto it = this->mScreenProjections.find(qscreen);
if (it != this->mScreenProjections.end()) {
return *it;
}
auto* projection = new ScreenProjection(qscreen, this);
this->mScreenProjections.insert(qscreen, projection);
QObject::connect(qscreen, &QObject::destroyed, this, [this, projection, qscreen]() {
this->mScreenProjections.remove(qscreen);
delete projection;
});
return projection;
}
} // namespace qs::wm