┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemlistwidget.cpp
diff options
context:
space:
mode:
authorYifan Zhu <[email protected]>2024-08-08 20:21:08 -0700
committerYifan Zhu <[email protected]>2024-08-13 16:09:10 +0000
commit021365dceb590a14bfcdb904ea05ffdd69b7d663 (patch)
treebaf6b7ca2ee7a42932647a34ac714191d3d37326 /src/kitemviews/kfileitemlistwidget.cpp
parent822a7d33ab703da8e4d98454fb38cd480f7a0fd2 (diff)
KStandardItemListWidget: select by number of unicode chars
Previously during rename, the number of QChar is used for selection, which might be different from number of unicode characters. Test plan: - create the file zz❤️❤️.txt - rename the file - verify that the first 4 characters are correctly selected, which didn't work before the patch. BUG: 466814
Diffstat (limited to 'src/kitemviews/kfileitemlistwidget.cpp')
-rw-r--r--src/kitemviews/kfileitemlistwidget.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp
index fcfc9d7b1..b4e0895f2 100644
--- a/src/kitemviews/kfileitemlistwidget.cpp
+++ b/src/kitemviews/kfileitemlistwidget.cpp
@@ -162,33 +162,32 @@ QFont KFileItemListWidget::customizedFont(const QFont &baseFont) const
int KFileItemListWidget::selectionLength(const QString &text) const
{
- // Select the text without MIME-type extension
- int selectionLength = text.length();
-
// If item is a directory, use the whole text length for
// selection (ignore all points)
if (data().value("isDir").toBool()) {
- return selectionLength;
+ return numberOfUnicodeCharactersIn(text);
}
+ int indexOfExtension = text.length();
+
QMimeDatabase db;
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
// *.tar.gz but usually this is anyhow a known extension.
- selectionLength = text.lastIndexOf(QLatin1Char('.'));
+ indexOfExtension = text.lastIndexOf(QLatin1Char('.'));
// If no point could be found, use whole text length for selection.
- if (selectionLength < 1) {
- selectionLength = text.length();
+ if (indexOfExtension < 1) {
+ indexOfExtension = text.length();
}
} else {
- selectionLength -= extension.length() + 1;
+ indexOfExtension -= extension.length() + 1;
}
- return selectionLength;
+ return numberOfUnicodeCharactersIn(text.left(indexOfExtension));
}
void KFileItemListWidget::hoverSequenceStarted()