From 0fc1a123fa18c02ddd54e82292680043a28e5f47 Mon Sep 17 00:00:00 2001 From: zach Date: Wed, 8 Jul 2026 23:08:42 +0200 Subject: [PATCH 1/2] mute cmake install output --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 174aad3..88f0e3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,8 @@ set(INSTALL_QMLDIR "usr/lib/qt6/qml" CACHE STRING "QML install dir") set(INSTALL_QSCONFDIR "etc/xdg/quickshell/zshell" CACHE STRING "Quickshell config install dir") set(INSTALL_GREETERCONFDIR "etc/xdg/quickshell/zshell-greeter" CACHE STRING "Quickshell greeter install dir") +set(CMAKE_INSTALL_MESSAGE NEVER) + add_compile_options( -Wall -Wextra -Wpedantic -Wshadow -Wconversion -Wold-style-cast -Wnull-dereference -Wdouble-promotion From 12661666768b22356a46b31366e9fa2b0451afe2 Mon Sep 17 00:00:00 2001 From: zach Date: Thu, 9 Jul 2026 14:20:06 +0200 Subject: [PATCH 2/2] fix: text input field bounds --- Components/CustomTextField.qml | 65 ++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/Components/CustomTextField.qml b/Components/CustomTextField.qml index 999557d..ae4f052 100644 --- a/Components/CustomTextField.qml +++ b/Components/CustomTextField.qml @@ -21,8 +21,6 @@ TextFieldBase { property bool isError property string leadingIcon readonly property int leadingOffset: leadingIcon ? leadingIconLoader.width + leadingIconLoader.anchors.leftMargin : 0 - readonly property real outlineGap: placeholder.width * root.smallFontScale + Appearance.spacing.extraSmall * 2 - property real outlineGapScale: activeFocus || text ? 1 : 0 property int radius: Appearance.rounding.small readonly property real smallFontScale: smallFontSize / font.pointSize property int smallFontSize: Appearance.font.size.small @@ -57,11 +55,6 @@ TextFieldBase { onClicked: root.focus = true } } - Behavior on outlineGapScale { - Anim { - type: Anim.DefaultEffects - } - } onEditingFinished: { if (!valid) @@ -103,7 +96,7 @@ TextFieldBase { when: root.type === CustomTextField.Outlined && (root.activeFocus || root.text) PropertyChanges { - placeholder.anchors.leftMargin: -(1 - root.smallFontScale) * placeholder.width / 2 + root.horizontalPadding + -Appearance.spacing.extraSmall + placeholder.anchors.leftMargin: -(1 - root.smallFontScale) * placeholder.width / 2 + root.horizontalPadding placeholder.scale: root.smallFontScale } @@ -136,7 +129,7 @@ TextFieldBase { AnchorAnim { duration: Appearance.anim.durations.expressiveEffects - easing: Appearance.anim.curves.expressiveDefaultEffects + easing.bezierCurve: Appearance.anim.curves.expressiveEffects } } } @@ -146,12 +139,11 @@ TextFieldBase { active: root.leadingIcon anchors.left: parent.left - anchors.leftMargin: Appearance.padding.larger + anchors.leftMargin: Appearance.padding.normal anchors.verticalCenter: parent.verticalCenter sourceComponent: MaterialIcon { color: DynamicColors.palette.m3onSurfaceVariant - font.pointSize: Appearance.font.size.large text: root.leadingIcon } } @@ -161,12 +153,11 @@ TextFieldBase { active: root.trailingIcon anchors.right: parent.right - anchors.rightMargin: Appearance.padding.larger + anchors.rightMargin: Appearance.padding.normal anchors.verticalCenter: parent.verticalCenter sourceComponent: MaterialIcon { color: DynamicColors.palette.m3onSurfaceVariant - font.pointSize: Appearance.font.size.large text: root.trailingIcon } } @@ -201,12 +192,24 @@ TextFieldBase { preferredRendererType: Shape.CurveRenderer ShapePath { + id: path + + readonly property real inset: strokeWidth / 2 + readonly property real outlineGap: placeholder.width * root.smallFontScale + Appearance.spacing.small * 2 + property real outlineGapScale: root.activeFocus || root.text ? 1 : 0 + capStyle: ShapePath.RoundCap fillColor: "transparent" - startX: root.horizontalPadding - root.clampedRadius + root.outlineGap * (1 - root.outlineGapScale) / 2 + root.outlineGap * root.outlineGapScale + startX: path.inset + root.horizontalPadding - root.clampedRadius + path.outlineGap * (1 - path.outlineGapScale) / 2 + path.outlineGap * path.outlineGapScale + startY: path.inset strokeColor: root.isError ? DynamicColors.palette.m3error : (root.activeFocus ? DynamicColors.palette.m3primary : DynamicColors.palette.m3outline) strokeWidth: root.activeFocus ? 2 : 1 + Behavior on outlineGapScale { + Anim { + type: Anim.DefaultEffects + } + } Behavior on strokeColor { CAnim { } @@ -217,54 +220,56 @@ TextFieldBase { } PathLine { - x: bg.width - root.clampedRadius + x: bg.width - path.inset - root.clampedRadius + y: path.inset } PathArc { radiusX: root.clampedRadius radiusY: root.clampedRadius - x: bg.width - y: root.clampedRadius + x: bg.width - path.inset + y: path.inset + root.clampedRadius } PathLine { - x: bg.width - y: bg.height - root.clampedRadius + x: bg.width - path.inset + y: bg.height - path.inset - root.clampedRadius } PathArc { radiusX: root.clampedRadius radiusY: root.clampedRadius - x: bg.width - root.clampedRadius - y: bg.height + x: bg.width - path.inset - root.clampedRadius + y: bg.height - path.inset } PathLine { - x: root.clampedRadius - y: bg.height + x: path.inset + root.clampedRadius + y: bg.height - path.inset } PathArc { radiusX: root.clampedRadius radiusY: root.clampedRadius - x: 0 - y: bg.height - root.clampedRadius + x: path.inset + y: bg.height - path.inset - root.clampedRadius } PathLine { - x: 0 - y: root.clampedRadius + x: path.inset + y: path.inset + root.clampedRadius } PathArc { radiusX: root.clampedRadius radiusY: root.clampedRadius - x: root.clampedRadius - y: 0 + x: path.inset + root.clampedRadius + y: path.inset } PathLine { - x: root.horizontalPadding - root.clampedRadius + root.outlineGap * (1 - root.outlineGapScale) / 2 + x: path.inset + root.horizontalPadding - root.clampedRadius / 2 + path.outlineGap * (1 - path.outlineGapScale) / 2 + y: path.inset } } }