summaryrefslogtreecommitdiff
path: root/src/events/Events.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-20 15:55:47 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-20 15:55:47 +0100
commit50370e4216110bed8068ce9b6c1095452cc8456f (patch)
treeb5e76f1d32756aa5327d29e213abba2bd027992a /src/events/Events.cpp
parent45addfb31d02dac2ac7651410178e7a0cfde00f4 (diff)
added workspaces
Diffstat (limited to 'src/events/Events.cpp')
-rw-r--r--src/events/Events.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/events/Events.cpp b/src/events/Events.cpp
index 8f4dd105..db8318ba 100644
--- a/src/events/Events.cpp
+++ b/src/events/Events.cpp
@@ -67,6 +67,16 @@ void Events::listener_newOutput(wl_listener* listener, void* data) {
newMonitor.vecPosition = monitorRule.offset;
newMonitor.vecSize = monitorRule.resolution;
newMonitor.refreshRate = monitorRule.refreshRate;
+
+ // Workspace
+ g_pCompositor->m_lWorkspaces.push_back(SWorkspace());
+ const auto PNEWWORKSPACE = &g_pCompositor->m_lWorkspaces.back();
+
+ PNEWWORKSPACE->ID = g_pCompositor->m_lWorkspaces.size();
+ PNEWWORKSPACE->monitorID = newMonitor.ID;
+
+ newMonitor.activeWorkspace = PNEWWORKSPACE->ID;
+
g_pCompositor->m_lMonitors.push_back(newMonitor);
//
@@ -106,6 +116,13 @@ void Events::listener_monitorFrame(wl_listener* listener, void* data) {
wlr_renderer_end(g_pCompositor->m_sWLRRenderer);
wlr_output_commit(PMONITOR->output);
+
+
+ // Sanity check the workspaces.
+ // Hack: only check when monitor number 1 refreshes, saves a bit of resources.
+ if (PMONITOR->ID == 0) {
+ g_pCompositor->sanityCheckWorkspaces();
+ }
}
void Events::listener_monitorDestroy(wl_listener* listener, void* data) {
@@ -485,6 +502,7 @@ void Events::listener_mapWindow(wl_listener* listener, void* data) {
const auto PMONITOR = g_pCompositor->getMonitorFromCursor();
PWINDOW->m_iMonitorID = PMONITOR->ID;
PWINDOW->m_bMappedX11 = true;
+ PWINDOW->m_iWorkspaceID = PMONITOR->activeWorkspace;
if (g_pXWaylandManager->shouldBeFloated(PWINDOW))
g_pLayoutManager->getCurrentLayout()->onWindowCreatedFloating(PWINDOW);