diff options
| author | Dardo D Kleiner <dardokleiner@gmail.com> | 2025-01-09 17:38:38 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-09 22:38:38 +0000 |
| commit | f9c37ca43b14a4564d92b5788c81bf16f7bb719c (patch) | |
| tree | 2f6ffeb26d90062e8ed967145b5fdc89a33f6944 /src/protocols | |
| parent | 9dc9366fc65ca8b4f18f6554d0b147baceda01f0 (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')
| -rw-r--r-- | src/protocols/XDGShell.cpp | 8 | ||||
| -rw-r--r-- | src/protocols/XDGShell.hpp | 7 |
2 files changed, 11 insertions, 4 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) { diff --git a/src/protocols/XDGShell.hpp b/src/protocols/XDGShell.hpp index ef847f3b..6eef99bb 100644 --- a/src/protocols/XDGShell.hpp +++ b/src/protocols/XDGShell.hpp @@ -123,9 +123,10 @@ class CXDGToplevelResource { std::string appid; // volatile state: is reset after the stateChanged signal fires - std::optional<bool> requestsMaximize; - std::optional<bool> requestsFullscreen; - std::optional<bool> requestsMinimize; + std::optional<bool> requestsMaximize; + std::optional<bool> requestsFullscreen; + std::optional<MONITORID> requestsFullscreenMonitor; + std::optional<bool> requestsMinimize; } state; struct { |
