fix corners
This commit is contained in:
parent
3a6ba994c5
commit
a53616523b
1 changed files with 53 additions and 63 deletions
|
|
@ -3,10 +3,8 @@ import Quickshell
|
|||
import Quickshell.Wayland
|
||||
import "." as M
|
||||
|
||||
// Empty region = no input area — clicks pass through to windows below
|
||||
|
||||
// Draws rounded black corners at the edges of each screen.
|
||||
// Disabled when screenRadius is 0 (the default).
|
||||
// Disabled when screenRadius is 0.
|
||||
Item {
|
||||
id: root
|
||||
|
||||
|
|
@ -14,74 +12,66 @@ Item {
|
|||
|
||||
readonly property int _r: M.Theme.screenRadius
|
||||
|
||||
Repeater {
|
||||
model: root._r > 0 ? [
|
||||
{ top: true, left: true, right: false, bottom: false, corner: 0 },
|
||||
{ top: true, left: false, right: true, bottom: false, corner: 1 },
|
||||
{ top: false, left: true, right: false, bottom: true, corner: 2 },
|
||||
{ top: false, left: false, right: true, bottom: true, corner: 3 }
|
||||
] : []
|
||||
component Corner: PanelWindow {
|
||||
id: win
|
||||
|
||||
delegate: PanelWindow {
|
||||
id: cornerWindow
|
||||
property int corner: 0
|
||||
|
||||
required property var modelData
|
||||
screen: root.screen
|
||||
visible: root._r > 0
|
||||
color: "transparent"
|
||||
|
||||
screen: root.screen
|
||||
color: "transparent"
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
WlrLayershell.exclusiveZone: 0
|
||||
WlrLayershell.namespace: "nova-corners"
|
||||
mask: Region {}
|
||||
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
WlrLayershell.exclusiveZone: 0
|
||||
WlrLayershell.namespace: "nova-corners"
|
||||
mask: Region {}
|
||||
implicitWidth: root._r
|
||||
implicitHeight: root._r
|
||||
|
||||
anchors.top: cornerWindow.modelData.top
|
||||
anchors.left: cornerWindow.modelData.left
|
||||
anchors.right: cornerWindow.modelData.right
|
||||
anchors.bottom: cornerWindow.modelData.bottom
|
||||
Canvas {
|
||||
anchors.fill: parent
|
||||
onPaint: {
|
||||
const r = root._r;
|
||||
const ctx = getContext("2d");
|
||||
ctx.clearRect(0, 0, r, r);
|
||||
ctx.fillStyle = "black";
|
||||
ctx.beginPath();
|
||||
|
||||
implicitWidth: root._r
|
||||
implicitHeight: root._r
|
||||
|
||||
Canvas {
|
||||
anchors.fill: parent
|
||||
onPaint: {
|
||||
const r = root._r;
|
||||
const ctx = getContext("2d");
|
||||
ctx.clearRect(0, 0, r, r);
|
||||
ctx.fillStyle = "black";
|
||||
ctx.beginPath();
|
||||
|
||||
switch (cornerWindow.modelData.corner) {
|
||||
case 0: // top-left
|
||||
ctx.moveTo(0, 0);
|
||||
ctx.lineTo(r, 0);
|
||||
ctx.arc(r, r, r, -Math.PI / 2, Math.PI, true);
|
||||
ctx.closePath();
|
||||
break;
|
||||
case 1: // top-right
|
||||
ctx.moveTo(r, 0);
|
||||
ctx.lineTo(0, 0);
|
||||
ctx.arc(0, r, r, -Math.PI / 2, 0, false);
|
||||
ctx.closePath();
|
||||
break;
|
||||
case 2: // bottom-left
|
||||
ctx.moveTo(0, r);
|
||||
ctx.lineTo(0, 0);
|
||||
ctx.arc(r, 0, r, Math.PI, Math.PI / 2, true);
|
||||
ctx.closePath();
|
||||
break;
|
||||
case 3: // bottom-right
|
||||
ctx.moveTo(r, r);
|
||||
ctx.lineTo(r, 0);
|
||||
ctx.arc(0, 0, r, 0, Math.PI / 2, false);
|
||||
ctx.closePath();
|
||||
break;
|
||||
}
|
||||
|
||||
ctx.fill();
|
||||
switch (win.corner) {
|
||||
case 0: // top-left
|
||||
ctx.moveTo(0, 0);
|
||||
ctx.lineTo(r, 0);
|
||||
ctx.arc(r, r, r, -Math.PI / 2, Math.PI, true);
|
||||
ctx.closePath();
|
||||
break;
|
||||
case 1: // top-right
|
||||
ctx.moveTo(r, 0);
|
||||
ctx.lineTo(0, 0);
|
||||
ctx.arc(0, r, r, -Math.PI / 2, 0, false);
|
||||
ctx.closePath();
|
||||
break;
|
||||
case 2: // bottom-left
|
||||
ctx.moveTo(0, r);
|
||||
ctx.lineTo(0, 0);
|
||||
ctx.arc(r, 0, r, Math.PI, Math.PI / 2, true);
|
||||
ctx.closePath();
|
||||
break;
|
||||
case 3: // bottom-right
|
||||
ctx.moveTo(r, r);
|
||||
ctx.lineTo(r, 0);
|
||||
ctx.arc(0, 0, r, 0, Math.PI / 2, false);
|
||||
ctx.closePath();
|
||||
break;
|
||||
}
|
||||
|
||||
ctx.fill();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Corner { corner: 0; anchors.top: true; anchors.left: true }
|
||||
Corner { corner: 1; anchors.top: true; anchors.right: true }
|
||||
Corner { corner: 2; anchors.bottom: true; anchors.left: true }
|
||||
Corner { corner: 3; anchors.bottom: true; anchors.right: true }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue