summaryrefslogtreecommitdiff
path: root/src/helpers/WLSurface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/helpers/WLSurface.cpp')
-rw-r--r--src/helpers/WLSurface.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/helpers/WLSurface.cpp b/src/helpers/WLSurface.cpp
index 8524c9a5..a34c77a1 100644
--- a/src/helpers/WLSurface.cpp
+++ b/src/helpers/WLSurface.cpp
@@ -27,12 +27,29 @@ wlr_surface* CWLSurface::wlr() const {
return m_pWLRSurface;
}
+bool CWLSurface::small() const {
+ if (!m_pOwner || !exists())
+ return false;
+
+ return m_pOwner->m_vReportedSize.x > m_pWLRSurface->current.buffer_width || m_pOwner->m_vReportedSize.y > m_pWLRSurface->current.buffer_height;
+}
+
+Vector2D CWLSurface::correctSmallVec() const {
+ if (!m_pOwner || !exists() || !small() || m_bFillIgnoreSmall)
+ return {};
+
+ return Vector2D{(m_pOwner->m_vReportedSize.x - m_pWLRSurface->current.buffer_width) / 2, (m_pOwner->m_vReportedSize.y - m_pWLRSurface->current.buffer_height) / 2}.clamp(
+ {}, {INFINITY, INFINITY}) *
+ (m_pOwner->m_vRealSize.vec() / m_pOwner->m_vReportedSize);
+}
+
void CWLSurface::destroy() {
if (!m_pWLRSurface)
return;
hyprListener_destroy.removeCallback();
m_pWLRSurface->data = nullptr;
+ m_pOwner = nullptr;
if (g_pCompositor->m_pLastFocus == m_pWLRSurface)
g_pCompositor->m_pLastFocus = nullptr;