summaryrefslogtreecommitdiff
path: root/src/protocols/XDGShell.cpp
diff options
context:
space:
mode:
authorDardo D Kleiner <dardokleiner@gmail.com>2025-01-09 17:38:38 -0500
committerGitHub <noreply@github.com>2025-01-09 22:38:38 +0000
commitf9c37ca43b14a4564d92b5788c81bf16f7bb719c (patch)
tree2f6ffeb26d90062e8ed967145b5fdc89a33f6944 /src/protocols/XDGShell.cpp
parent9dc9366fc65ca8b4f18f6554d0b147baceda01f0 (diff)
windows: honor xdg_toplevel_set_fullscreen output hint (#8965)
Co-authored-by: Dardo D Kleiner <dardo.kleiner@nrl.navy.mil>
Diffstat (limited to 'src/protocols/XDGShell.cpp')
-rw-r--r--src/protocols/XDGShell.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/protocols/XDGShell.cpp b/src/protocols/XDGShell.cpp
index 282aec47..6b7cb3c1 100644
--- a/src/protocols/XDGShell.cpp
+++ b/src/protocols/XDGShell.cpp
@@ -5,6 +5,7 @@
#include "../managers/SeatManager.hpp"
#include "core/Seat.hpp"
#include "core/Compositor.hpp"
+#include "protocols/core/Output.hpp"
#include <cstring>
#include <ranges>
@@ -191,9 +192,14 @@ CXDGToplevelResource::CXDGToplevelResource(SP<CXdgToplevel> resource_, SP<CXDGSu
});
resource->setSetFullscreen([this](CXdgToplevel* r, wl_resource* output) {
+ if (output)
+ if (const auto PM = CWLOutputResource::fromResource(output)->monitor; PM)
+ state.requestsFullscreenMonitor = PM->ID;
+
state.requestsFullscreen = true;
events.stateChanged.emit();
state.requestsFullscreen.reset();
+ state.requestsFullscreenMonitor.reset();
});
resource->setUnsetFullscreen([this](CXdgToplevel* r) {
@@ -205,7 +211,7 @@ CXDGToplevelResource::CXDGToplevelResource(SP<CXdgToplevel> resource_, SP<CXDGSu
resource->setSetMinimized([this](CXdgToplevel* r) {
state.requestsMinimize = true;
events.stateChanged.emit();
- state.requestsFullscreen.reset();
+ state.requestsMinimize.reset();
});
resource->setSetParent([this](CXdgToplevel* r, wl_resource* parentR) {