From 32597bd8cb7a47c006becd218cb32e99a6c95b06 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Wed, 13 Apr 2022 16:24:31 +0200 Subject: [PATCH] dwindle: autodetect first/second node on open --- src/layout/DwindleLayout.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp index 6faf6538..aeddbb8f 100644 --- a/src/layout/DwindleLayout.cpp +++ b/src/layout/DwindleLayout.cpp @@ -202,14 +202,28 @@ void CHyprDwindleLayout::onWindowCreated(CWindow* pWindow) { const auto NEWPARENT = &m_lDwindleNodesData.back(); // make the parent have the OPENINGON's stats - NEWPARENT->children[0] = OPENINGON; - NEWPARENT->children[1] = PNODE; NEWPARENT->position = OPENINGON->position; NEWPARENT->size = OPENINGON->size; NEWPARENT->workspaceID = OPENINGON->workspaceID; NEWPARENT->pParent = OPENINGON->pParent; NEWPARENT->isNode = true; // it is a node + // if cursor over first child, make it first, etc + const auto SIDEBYSIDE = NEWPARENT->size.x / NEWPARENT->size.y > 1.f; + const auto MOUSECOORDS = g_pInputManager->getMouseCoordsInternal(); + if ((SIDEBYSIDE && VECINRECT(MOUSECOORDS, NEWPARENT->position.x, NEWPARENT->position.y, NEWPARENT->position.x + NEWPARENT->size.x / 2.f, NEWPARENT->position.y + NEWPARENT->size.y)) + || (!SIDEBYSIDE && VECINRECT(MOUSECOORDS, NEWPARENT->position.x, NEWPARENT->position.y, NEWPARENT->position.x + NEWPARENT->size.x, NEWPARENT->position.y + NEWPARENT->size.y / 2.f))) { + + // we are hovering over the first node, make PNODE first. + NEWPARENT->children[1] = OPENINGON; + NEWPARENT->children[0] = PNODE; + } else { + // we are hovering over the second node, make PNODE second. + NEWPARENT->children[0] = OPENINGON; + NEWPARENT->children[1] = PNODE; + } + + // and update the previous parent if it exists if (OPENINGON->pParent) { if (OPENINGON->pParent->children[0] == OPENINGON) {