From a88119c3c04ef1c40c25eb58140c973881548336 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sat, 24 May 2025 21:00:13 +0200 Subject: [PATCH] ai messages: bouncy action buttons --- .../modules/sidebarLeft/aiChat/AiMessage.qml | 18 +++++++++++++++--- .../aiChat/AiMessageControlButton.qml | 5 ++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.config/quickshell/modules/sidebarLeft/aiChat/AiMessage.qml b/.config/quickshell/modules/sidebarLeft/aiChat/AiMessage.qml index 4c412719..b9e75e24 100644 --- a/.config/quickshell/modules/sidebarLeft/aiChat/AiMessage.qml +++ b/.config/quickshell/modules/sidebarLeft/aiChat/AiMessage.qml @@ -168,7 +168,7 @@ Rectangle { MaterialSymbol { id: notVisibleToModelText anchors.centerIn: parent - iconSize: Appearance.font.pixelSize.larger + iconSize: Appearance.font.pixelSize.small color: Appearance.colors.colSubtext text: "visibility_off" } @@ -177,14 +177,26 @@ Rectangle { } } - RowLayout { + ButtonGroup { spacing: 5 AiMessageControlButton { id: copyButton - buttonIcon: "content_copy" + buttonIcon: activated ? "inventory" : "content_copy" + onClicked: { Hyprland.dispatch(`exec wl-copy '${StringUtils.shellSingleQuoteEscape(root.messageData.content)}'`) + copyButton.activated = true + copyIconTimer.restart() + } + + Timer { + id: copyIconTimer + interval: 1500 + repeat: false + onTriggered: { + copyButton.activated = false + } } StyledToolTip { content: qsTr("Copy") diff --git a/.config/quickshell/modules/sidebarLeft/aiChat/AiMessageControlButton.qml b/.config/quickshell/modules/sidebarLeft/aiChat/AiMessageControlButton.qml index 2effec24..b3a39ce4 100644 --- a/.config/quickshell/modules/sidebarLeft/aiChat/AiMessageControlButton.qml +++ b/.config/quickshell/modules/sidebarLeft/aiChat/AiMessageControlButton.qml @@ -7,14 +7,13 @@ import QtQuick.Controls import QtQuick.Layouts import Quickshell -RippleButton { +GroupButton { id: button property string buttonIcon property bool activated: false toggled: activated - implicitHeight: 30 - implicitWidth: 30 + baseWidth: height contentItem: MaterialSymbol { horizontalAlignment: Text.AlignHCenter