From 7f1989689df71da8e2081dc24453ccd41341bf50 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Tue, 6 Feb 2024 14:36:11 -0800 Subject: [PATCH] Fix starting with a horizontal layout on vertical monitors --- src/Hy3Layout.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp index 09ba804..1a8948e 100644 --- a/src/Hy3Layout.cpp +++ b/src/Hy3Layout.cpp @@ -156,8 +156,10 @@ void Hy3Layout::insertNode(Hy3Node& node) { { opening_after = this->getNodeFromWindow(g_pCompositor->m_pLastWindow); } else { - auto* mouse_window = - g_pCompositor->vectorToWindowUnified(g_pInputManager->getMouseCoordsInternal(), RESERVED_EXTENTS | INPUT_EXTENTS); + auto* mouse_window = g_pCompositor->vectorToWindowUnified( + g_pInputManager->getMouseCoordsInternal(), + RESERVED_EXTENTS | INPUT_EXTENTS + ); if (mouse_window != nullptr && mouse_window->m_iWorkspaceID == node.workspace_id) { opening_after = this->getNodeFromWindow(mouse_window); @@ -180,8 +182,13 @@ void Hy3Layout::insertNode(Hy3Node& node) { static const auto* tab_first_window = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hy3:tab_first_window")->intValue; + auto width = + monitor->vecSize.x - monitor->vecReservedBottomRight.x - monitor->vecReservedTopLeft.x; + auto height = + monitor->vecSize.y - monitor->vecReservedBottomRight.y - monitor->vecReservedTopLeft.y; + this->nodes.push_back({ - .data = Hy3GroupLayout::SplitH, + .data = height > width ? Hy3GroupLayout::SplitV : Hy3GroupLayout::SplitH, .position = monitor->vecPosition + monitor->vecReservedTopLeft, .size = monitor->vecSize - monitor->vecReservedTopLeft - monitor->vecReservedBottomRight, .workspace_id = node.workspace_id, @@ -1228,7 +1235,12 @@ void Hy3Layout::focusTab( if (target == TabFocus::MouseLocation || mouse != TabFocusMousePriority::Ignore) { auto mouse_pos = g_pInputManager->getMouseCoordsInternal(); - if (g_pCompositor->vectorToWindowUnified(mouse_pos, RESERVED_EXTENTS | INPUT_EXTENTS | ALLOW_FLOATING | FLOATING_ONLY) == nullptr) { + if (g_pCompositor->vectorToWindowUnified( + mouse_pos, + RESERVED_EXTENTS | INPUT_EXTENTS | ALLOW_FLOATING | FLOATING_ONLY + ) + == nullptr) + { tab_node = findTabBarAt(*node, mouse_pos, &tab_focused_node); if (tab_node != nullptr) goto hastab; }