From 63e93f5de088f20c4473165b506e42eb333d5c65 Mon Sep 17 00:00:00 2001 From: Damocles Date: Fri, 17 Apr 2026 22:59:46 +0200 Subject: [PATCH] show screen corners on lock screen when enabled --- shell/lock/LockSurface.qml | 67 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/shell/lock/LockSurface.qml b/shell/lock/LockSurface.qml index 4c7394d..7b245d8 100644 --- a/shell/lock/LockSurface.qml +++ b/shell/lock/LockSurface.qml @@ -349,4 +349,71 @@ WlSessionLockSurface { _shakeAnim.restart(); } } + + // Screen corners - session lock surfaces render above all layer-shell, + // so the bar's ScreenCorners aren't visible. Draw our own. + component LockCorner: Canvas { + property int corner: 0 + readonly property int _r: M.Theme.screenRadius + visible: _r > 0 && M.Modules.screenCorners.enable + width: _r + height: _r + z: 999 + + onPaint: { + const r = _r; + const ctx = getContext("2d"); + ctx.clearRect(0, 0, r, r); + ctx.fillStyle = "black"; + ctx.beginPath(); + switch (corner) { + case 0: + ctx.moveTo(0, 0); + ctx.lineTo(r, 0); + ctx.arc(r, r, r, -Math.PI / 2, Math.PI, true); + ctx.closePath(); + break; + case 1: + ctx.moveTo(r, 0); + ctx.lineTo(0, 0); + ctx.arc(0, r, r, -Math.PI / 2, 0, false); + ctx.closePath(); + break; + case 2: + ctx.moveTo(0, r); + ctx.lineTo(0, 0); + ctx.arc(r, 0, r, Math.PI, Math.PI / 2, true); + ctx.closePath(); + break; + case 3: + ctx.moveTo(r, r); + ctx.lineTo(r, 0); + ctx.arc(0, 0, r, 0, Math.PI / 2, false); + ctx.closePath(); + break; + } + ctx.fill(); + } + } + + LockCorner { + corner: 0 + anchors.top: parent.top + anchors.left: parent.left + } + LockCorner { + corner: 1 + anchors.top: parent.top + anchors.right: parent.right + } + LockCorner { + corner: 2 + anchors.bottom: parent.bottom + anchors.left: parent.left + } + LockCorner { + corner: 3 + anchors.bottom: parent.bottom + anchors.right: parent.right + } }