xwayland: validate size hints before floating (#13361)
This commit is contained in:
parent
c71fbd854d
commit
cc14dd1baf
2 changed files with 6 additions and 5 deletions
|
|
@ -679,14 +679,14 @@ static bool test() {
|
||||||
EXPECT(Tests::windowCount(), 3);
|
EXPECT(Tests::windowCount(), 3);
|
||||||
|
|
||||||
NLog::log("{}Checking props of xeyes", Colors::YELLOW);
|
NLog::log("{}Checking props of xeyes", Colors::YELLOW);
|
||||||
// check some window props of xeyes, try to tile them
|
// check some window props of xeyes, try to float it
|
||||||
{
|
{
|
||||||
auto str = getFromSocket("/clients");
|
auto str = getFromSocket("/clients");
|
||||||
EXPECT_CONTAINS(str, "floating: 1");
|
EXPECT_NOT_CONTAINS(str, "floating: 1");
|
||||||
getFromSocket("/dispatch settiled class:XEyes");
|
getFromSocket("/dispatch setfloating class:XEyes");
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||||
str = getFromSocket("/clients");
|
str = getFromSocket("/clients");
|
||||||
EXPECT_NOT_CONTAINS(str, "floating: 1");
|
EXPECT_CONTAINS(str, "floating: 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
// kill all
|
// kill all
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,8 @@ bool CHyprXWaylandManager::shouldBeFloated(PHLWINDOW pWindow, bool pending) {
|
||||||
|
|
||||||
const auto SIZEHINTS = pWindow->m_xwaylandSurface->m_sizeHints.get();
|
const auto SIZEHINTS = pWindow->m_xwaylandSurface->m_sizeHints.get();
|
||||||
if (pWindow->m_xwaylandSurface->m_transient || pWindow->m_xwaylandSurface->m_parent ||
|
if (pWindow->m_xwaylandSurface->m_transient || pWindow->m_xwaylandSurface->m_parent ||
|
||||||
(SIZEHINTS && (SIZEHINTS->min_width == SIZEHINTS->max_width) && (SIZEHINTS->min_height == SIZEHINTS->max_height)))
|
(SIZEHINTS && SIZEHINTS->min_width > 0 && SIZEHINTS->min_height > 0 && SIZEHINTS->max_width > 0 && SIZEHINTS->max_height > 0 &&
|
||||||
|
(SIZEHINTS->min_width == SIZEHINTS->max_width) && (SIZEHINTS->min_height == SIZEHINTS->max_height)))
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
if (!pWindow->m_xdgSurface || !pWindow->m_xdgSurface->m_toplevel)
|
if (!pWindow->m_xdgSurface || !pWindow->m_xdgSurface->m_toplevel)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue