From fd87be1355cf9551423b51efcc357bf6769335f5 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Wed, 27 Nov 2024 23:43:03 -0800 Subject: [PATCH] widgets/cliprect: pass user input to contained items --- src/widgets/ClippingRectangle.qml | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/widgets/ClippingRectangle.qml b/src/widgets/ClippingRectangle.qml index ca8ae5a5..ce1fae69 100644 --- a/src/widgets/ClippingRectangle.qml +++ b/src/widgets/ClippingRectangle.qml @@ -13,20 +13,20 @@ Item { /// If content should be displayed underneath the border. /// /// Defaults to false, does nothing if the border is opaque. - property bool contentUnderBorder: false; + property bool contentUnderBorder: false /// If the content item should be resized to fit inside the border. /// /// Defaults to `!contentUnderBorder`. Most useful when combined with /// `anchors.fill: parent` on an item passed to the ClippingRectangle. - property bool contentInsideBorder: !root.contentUnderBorder; + property bool contentInsideBorder: !root.contentUnderBorder /// If the rectangle should be antialiased. /// /// Defaults to true if any corner has a non-zero radius, otherwise false. - property /*bool*/alias antialiasing: rectangle.antialiasing; + property /*bool*/alias antialiasing: rectangle.antialiasing /// The background color of the rectangle, which goes under its content. - property /*color*/alias color: shader.backgroundColor; + property /*color*/alias color: shader.backgroundColor /// See @@QtQuick.Rectangle.border. - property clippingRectangleBorder border; + property clippingRectangleBorder border /// Radius of all corners. Defaults to 0. property /*real*/alias radius: rectangle.radius /// Radius of the top left corner. Defaults to @@radius. @@ -41,10 +41,10 @@ Item { /// Visual children of the ClippingRectangle's @@contentItem. (`list`). /// /// See @@QtQuick.Item.children for details. - default property alias children: contentItem.children; + default property alias children: contentItem.children /// The item containing the rectangle's content. /// There is usually no reason to use this directly. - readonly property alias contentItem: contentItem; + readonly property alias contentItem: contentItem Rectangle { id: rectangle @@ -60,8 +60,6 @@ Item { Item { id: contentItemContainer anchors.fill: root - layer.enabled: true - visible: false Item { id: contentItem @@ -74,9 +72,13 @@ Item { id: shader anchors.fill: root fragmentShader: `qrc:/Quickshell/Widgets/shaders/cliprect${root.contentUnderBorder ? "-ub" : ""}.frag.qsb` - property Rectangle rect: rectangle; - property color backgroundColor; - property color borderColor: root.border.color; - property Item content: contentItemContainer; + property Rectangle rect: rectangle + property color backgroundColor + property color borderColor: root.border.color + + property ShaderEffectSource content: ShaderEffectSource { + hideSource: true + sourceItem: contentItemContainer + } } }