summaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/IHyprLayout.cpp2
-rw-r--r--src/layout/IHyprLayout.hpp8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp
index 464825c4..7aea3190 100644
--- a/src/layout/IHyprLayout.cpp
+++ b/src/layout/IHyprLayout.cpp
@@ -166,7 +166,7 @@ void IHyprLayout::onWindowCreatedFloating(PHLWINDOW pWindow) {
// otherwise middle of parent if available
if (!pWindow->m_isX11) {
if (const auto PARENT = pWindow->parent(); PARENT) {
- *pWindow->m_realPosition = PARENT->m_realPosition->goal() + PARENT->m_realSize->goal() / 2.F - desiredGeometry.size() / 2.F;
+ *pWindow->m_realPosition = PARENT->m_position + PARENT->m_size / 2.F - desiredGeometry.size() / 2.F;
pWindow->m_workspace = PARENT->m_workspace;
pWindow->m_monitor = PARENT->m_monitor;
centeredOnParent = true;
diff --git a/src/layout/IHyprLayout.hpp b/src/layout/IHyprLayout.hpp
index 1e1141da..027c95a5 100644
--- a/src/layout/IHyprLayout.hpp
+++ b/src/layout/IHyprLayout.hpp
@@ -26,6 +26,14 @@ enum eRectCorner : uint8_t {
CORNER_BOTTOMLEFT = (1 << 3),
};
+inline eRectCorner cornerFromBox(const CBox& box, const Vector2D& pos) {
+ const auto CENTER = box.middle();
+
+ if (pos.x < CENTER.x)
+ return pos.y < CENTER.y ? CORNER_TOPLEFT : CORNER_BOTTOMLEFT;
+ return pos.y < CENTER.y ? CORNER_TOPRIGHT : CORNER_BOTTOMRIGHT;
+}
+
enum eSnapEdge : uint8_t {
SNAP_INVALID = 0,
SNAP_UP = (1 << 0),