summaryrefslogtreecommitdiff
path: root/src/managers/XWaylandManager.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-02-28 23:14:50 +0000
committerVaxry <vaxry@vaxry.net>2024-02-28 23:14:50 +0000
commit1e7eb3a5a5419f97b61a3403880b161c85dd7b17 (patch)
tree56788dd724f90bd12e0242023ef2cdb940a5918f /src/managers/XWaylandManager.cpp
parent097f561e41e5660333492c1f188199e837742efe (diff)
xdg: check for floating conditions before sending tiled size hint
ref #4871
Diffstat (limited to 'src/managers/XWaylandManager.cpp')
-rw-r--r--src/managers/XWaylandManager.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/managers/XWaylandManager.cpp b/src/managers/XWaylandManager.cpp
index b46004e6..a7e869cb 100644
--- a/src/managers/XWaylandManager.cpp
+++ b/src/managers/XWaylandManager.cpp
@@ -98,11 +98,11 @@ void CHyprXWaylandManager::getGeometryForWindow(CWindow* pWindow, CBox* pbox) {
}
std::string CHyprXWaylandManager::getTitle(CWindow* pWindow) {
- if (!pWindow->m_bIsMapped)
- return "";
-
try {
if (pWindow->m_bIsX11) {
+ if (!pWindow->m_bIsMapped && pWindow->m_iX11Type != 1)
+ return "";
+
if (pWindow->m_uSurface.xwayland && pWindow->m_uSurface.xwayland->title) {
return std::string(pWindow->m_uSurface.xwayland->title);
}
@@ -119,11 +119,11 @@ std::string CHyprXWaylandManager::getTitle(CWindow* pWindow) {
}
std::string CHyprXWaylandManager::getAppIDClass(CWindow* pWindow) {
- if (!pWindow->m_bIsMapped)
- return "";
-
try {
if (pWindow->m_bIsX11) {
+ if (!pWindow->m_bIsMapped && pWindow->m_iX11Type != 1)
+ return "";
+
if (pWindow->m_uSurface.xwayland && pWindow->m_uSurface.xwayland->_class) {
return std::string(pWindow->m_uSurface.xwayland->_class);
}
@@ -198,7 +198,7 @@ wlr_surface* CHyprXWaylandManager::surfaceAt(CWindow* pWindow, const Vector2D& c
return wlr_xdg_surface_surface_at(pWindow->m_uSurface.xdg, client.x, client.y, &surface.x, &surface.y);
}
-bool CHyprXWaylandManager::shouldBeFloated(CWindow* pWindow) {
+bool CHyprXWaylandManager::shouldBeFloated(CWindow* pWindow, bool pending) {
if (pWindow->m_bIsX11) {
for (size_t i = 0; i < pWindow->m_uSurface.xwayland->window_type_len; i++)
if (pWindow->m_uSurface.xwayland->window_type[i] == HYPRATOMS["_NET_WM_WINDOW_TYPE_DIALOG"] ||
@@ -243,7 +243,7 @@ bool CHyprXWaylandManager::shouldBeFloated(CWindow* pWindow) {
if (SIZEHINTS && (pWindow->m_uSurface.xwayland->parent || ((SIZEHINTS->min_width == SIZEHINTS->max_width) && (SIZEHINTS->min_height == SIZEHINTS->max_height))))
return true;
} else {
- const auto PSTATE = &pWindow->m_uSurface.xdg->toplevel->current;
+ const auto PSTATE = pending ? &pWindow->m_uSurface.xdg->toplevel->pending : &pWindow->m_uSurface.xdg->toplevel->current;
if ((PSTATE->min_width != 0 && PSTATE->min_height != 0 && (PSTATE->min_width == PSTATE->max_width || PSTATE->min_height == PSTATE->max_height)) ||
pWindow->m_uSurface.xdg->toplevel->parent)