From 1dc0790d77e04d7d3514e4cbb3ae57079d7facbb Mon Sep 17 00:00:00 2001 From: Mario Mohar <76663003+Mario-Mohar@users.noreply.github.com> Date: Thu, 8 Oct 2026 23:08:43 +0200 Subject: [PATCH] clipboard: skip the clear confirmation when there is nothing to clear (#3730) --- quickshell/Modals/Clipboard/ClipboardActions.qml | 1 + quickshell/Modals/Clipboard/ClipboardHistoryContent.qml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/quickshell/Modals/Clipboard/ClipboardActions.qml b/quickshell/Modals/Clipboard/ClipboardActions.qml index 5ba9981d3..123c2a998 100644 --- a/quickshell/Modals/Clipboard/ClipboardActions.qml +++ b/quickshell/Modals/Clipboard/ClipboardActions.qml @@ -54,6 +54,7 @@ Item { DActionButton { Keys.forwardTo: [actions.modal.modalFocusScope] iconName: "delete_sweep" + enabled: actions.modal.canClear iconColor: Theme.onSecondaryContainer backgroundColor: Theme.secondaryContainer tooltipText: actions.modal.clearsFilteredOnly ? I18n.tr("Clear Filtered", "clipboard modal: clear button tooltip while a search filter is active") : I18n.tr("Clear All") diff --git a/quickshell/Modals/Clipboard/ClipboardHistoryContent.qml b/quickshell/Modals/Clipboard/ClipboardHistoryContent.qml index 32a445fc1..637a7daf1 100644 --- a/quickshell/Modals/Clipboard/ClipboardHistoryContent.qml +++ b/quickshell/Modals/Clipboard/ClipboardHistoryContent.qml @@ -31,6 +31,7 @@ FocusScope { readonly property int selectedIndex: ClipboardService.selectedIndex readonly property bool keyboardNavigationActive: ClipboardService.keyboardNavigationActive readonly property bool clearsFilteredOnly: activeTab === "recents" && ClipboardService.filterActive + readonly property bool canClear: clearsFilteredOnly ? unpinnedEntries.length > 0 : ClipboardService.internalEntries.length > pinnedCount readonly property var currentEntry: selectedEntry() readonly property var modalFocusScope: root @@ -187,6 +188,8 @@ FocusScope { }, function () {}); return; } + if (!canClear) + return; const hasPinned = pinnedCount > 0; const message = hasPinned ? I18n.tr("This will delete all unpinned entries. %1 pinned entries will be kept.", "clear clipboard history confirmation, %1 is a count").arg(pinnedCount) : I18n.tr("This will permanently delete all clipboard history."); clearConfirmDialog.show(I18n.tr("Clear History?"), message, function () {