From 1e5bc5b3d6ba344da09369802d822f6cd6da7c4c Mon Sep 17 00:00:00 2001 From: Shitong Xu Date: Sun, 23 Mar 2025 15:02:24 +0000 Subject: [PATCH] KFileItemListWidget: wrong selection when renamed file ends with a dot When a file name ends with a dot, it should be treated like there is no extension. When triggering a rename, the file name except the extension should be selected, which is equal to the full file name when the file ends with a dot. --- src/kitemviews/kfileitemlistwidget.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index 3a7b37895..e1da7192a 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -176,15 +176,14 @@ int KFileItemListWidget::selectionLength(const QString &text) const const QString extension = db.suffixForFileName(text); if (extension.isEmpty()) { // For an unknown extension just exclude the extension after - // the last point. This does not work for multiple extensions like + // the last dot. This does not work for multiple extensions like // *.tar.gz but usually this is anyhow a known extension. indexOfExtension = text.lastIndexOf(QLatin1Char('.')); - // If no point could be found, use whole text length for selection. - if (indexOfExtension < 1) { + // if there either is no dot, or the last dot is the first or last char, treat as no extension. + if (indexOfExtension < 1 || indexOfExtension == text.length() - 1) { indexOfExtension = text.length(); } - } else { indexOfExtension -= extension.length() + 1; } -- 2.47.3