From 6cdecb88259cdc1a4140de8fb3d022b156dab5eb Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sat, 28 Mar 2026 21:28:21 +1100 Subject: [PATCH] fix: sidebar gap with utils due to deform Also better sync utils width with sidebar width --- modules/drawers/Drawers.qml | 4 +++- modules/utilities/Wrapper.qml | 3 ++- plugin/src/Caelestia/Blobs/blobrect.cpp | 3 +++ plugin/src/Caelestia/Blobs/blobshape.cpp | 6 ++++-- plugin/src/Caelestia/Blobs/blobshape.hpp | 3 +++ 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/drawers/Drawers.qml b/modules/drawers/Drawers.qml index 4d37a530..b18ecc84 100644 --- a/modules/drawers/Drawers.qml +++ b/modules/drawers/Drawers.qml @@ -166,7 +166,7 @@ Variants { panel: panels.sidebar bar: bar deformAmount: 0.05 - height: panel.height + 2 + implicitHeight: panel.height * (1 / rawDeformMatrix.m22) + 2 exclude: panels.sidebar.offsetScale > 0.08 ? [] : [utilsBg] bottomLeftRadius: Math.max(0, Math.min(1, panels.sidebar.offsetScale / 0.3)) * radius } @@ -247,6 +247,8 @@ Variants { visibilities: visibilities bar: bar + utilities.horizontalStretch: (sidebarBg.rawDeformMatrix.m11 - 1) / 2 + 1 + dashboard.transform: Matrix4x4 { matrix: dashBg.deformMatrix } diff --git a/modules/utilities/Wrapper.qml b/modules/utilities/Wrapper.qml index 23199aa2..107f1f93 100644 --- a/modules/utilities/Wrapper.qml +++ b/modules/utilities/Wrapper.qml @@ -13,6 +13,7 @@ Item { required property DrawerVisibilities visibilities required property Sidebar.Wrapper sidebar required property BarPopouts.Wrapper popouts + property real horizontalStretch readonly property PersistentProperties props: PersistentProperties { property bool recordingListExpanded: false @@ -28,7 +29,7 @@ Item { visible: offsetScale < 1 anchors.bottomMargin: (-implicitHeight - 5) * offsetScale implicitHeight: content.implicitHeight + content.anchors.margins * 2 - implicitWidth: sidebar.width * (1 - sidebar.offsetScale) * sidebarLerp + Config.utilities.sizes.width * (1 - sidebarLerp) + implicitWidth: sidebar.width * (1 - sidebar.offsetScale) * horizontalStretch * sidebarLerp + Config.utilities.sizes.width * (1 - sidebarLerp) opacity: 1 - offsetScale states: State { diff --git a/plugin/src/Caelestia/Blobs/blobrect.cpp b/plugin/src/Caelestia/Blobs/blobrect.cpp index efc1e7f0..fa7b4b1e 100644 --- a/plugin/src/Caelestia/Blobs/blobrect.cpp +++ b/plugin/src/Caelestia/Blobs/blobrect.cpp @@ -27,6 +27,7 @@ void BlobRect::updatePolish() { m_dm11 = 1.0f; m_dmVel00 = m_dmVel01 = m_dmVel11 = 0.0f; m_deformMatrix = QMatrix4x4(); + emit rawDeformMatrixChanged(); updateCenteredDeformMatrix(); m_physicsActive = false; } else { @@ -113,6 +114,7 @@ void BlobRect::updatePhysics() { m_dm11 += m_dmVel11 * dt; m_deformMatrix = QMatrix4x4(m_dm00, m_dm01, 0, 0, m_dm01, m_dm11, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + emit rawDeformMatrixChanged(); updateCenteredDeformMatrix(); checkAtRest(speed); @@ -235,6 +237,7 @@ void BlobRect::checkAtRest(float speed) { m_dmVel01 = 0.0f; m_dmVel11 = 0.0f; m_deformMatrix = QMatrix4x4(); // identity + emit rawDeformMatrixChanged(); updateCenteredDeformMatrix(); m_physicsActive = false; } diff --git a/plugin/src/Caelestia/Blobs/blobshape.cpp b/plugin/src/Caelestia/Blobs/blobshape.cpp index b048c57e..96662150 100644 --- a/plugin/src/Caelestia/Blobs/blobshape.cpp +++ b/plugin/src/Caelestia/Blobs/blobshape.cpp @@ -86,8 +86,10 @@ void BlobShape::updateCenteredDeformMatrix() { result.translate(cx, cy); result *= m_deformMatrix; result.translate(-cx, -cy); - m_centeredDeformMatrix = result; - emit deformMatrixChanged(); + if (m_centeredDeformMatrix != result) { + m_centeredDeformMatrix = result; + emit deformMatrixChanged(); + } } void BlobShape::cornerRadii(float out[4]) const { diff --git a/plugin/src/Caelestia/Blobs/blobshape.hpp b/plugin/src/Caelestia/Blobs/blobshape.hpp index 6383b644..9165579c 100644 --- a/plugin/src/Caelestia/Blobs/blobshape.hpp +++ b/plugin/src/Caelestia/Blobs/blobshape.hpp @@ -13,6 +13,7 @@ class BlobShape : public QQuickItem { Q_PROPERTY(BlobGroup* group READ group WRITE setGroup NOTIFY groupChanged) Q_PROPERTY(qreal radius READ radius WRITE setRadius NOTIFY radiusChanged) Q_PROPERTY(QMatrix4x4 deformMatrix READ deformMatrix NOTIFY deformMatrixChanged) + Q_PROPERTY(QMatrix4x4 rawDeformMatrix READ rawDeformMatrix NOTIFY rawDeformMatrixChanged) friend class BlobGroup; @@ -29,11 +30,13 @@ public: void setRadius(qreal r); QMatrix4x4 deformMatrix() const { return m_centeredDeformMatrix; } + QMatrix4x4 rawDeformMatrix() const { return m_deformMatrix; } signals: void groupChanged(); void radiusChanged(); void deformMatrixChanged(); + void rawDeformMatrixChanged(); protected: void componentComplete() override;