diff --git a/plugin/src/Caelestia/Blobs/blobrect.cpp b/plugin/src/Caelestia/Blobs/blobrect.cpp index fa7b4b1e..15486d83 100644 --- a/plugin/src/Caelestia/Blobs/blobrect.cpp +++ b/plugin/src/Caelestia/Blobs/blobrect.cpp @@ -157,11 +157,12 @@ void BlobRect::setBottomRightRadius(qreal r) { } void BlobRect::cornerRadii(float out[4]) const { - const auto base = static_cast(m_radius); - out[0] = m_topRightRadius >= 0 ? static_cast(m_topRightRadius) : base; - out[1] = m_bottomRightRadius >= 0 ? static_cast(m_bottomRightRadius) : base; - out[2] = m_bottomLeftRadius >= 0 ? static_cast(m_bottomLeftRadius) : base; - out[3] = m_topLeftRadius >= 0 ? static_cast(m_topLeftRadius) : base; + const auto maxR = static_cast(std::min(width(), height())) * 0.5f; + const auto base = std::min(static_cast(m_radius), maxR); + out[0] = std::min(m_topRightRadius >= 0 ? static_cast(m_topRightRadius) : base, maxR); + out[1] = std::min(m_bottomRightRadius >= 0 ? static_cast(m_bottomRightRadius) : base, maxR); + out[2] = std::min(m_bottomLeftRadius >= 0 ? static_cast(m_bottomLeftRadius) : base, maxR); + out[3] = std::min(m_topLeftRadius >= 0 ? static_cast(m_topLeftRadius) : base, maxR); } bool BlobRect::isExcluded(const BlobShape* other) const { diff --git a/plugin/src/Caelestia/Blobs/blobshape.cpp b/plugin/src/Caelestia/Blobs/blobshape.cpp index 718c03e7..9fcb622b 100644 --- a/plugin/src/Caelestia/Blobs/blobshape.cpp +++ b/plugin/src/Caelestia/Blobs/blobshape.cpp @@ -96,7 +96,8 @@ void BlobShape::updateCenteredDeformMatrix() { } void BlobShape::cornerRadii(float out[4]) const { - const auto r = static_cast(m_radius); + const auto maxR = static_cast(std::min(width(), height())) * 0.5f; + const auto r = std::min(static_cast(m_radius), maxR); out[0] = r; out[1] = r; out[2] = r;