┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kstandarditemlistwidget.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/kstandarditemlistwidget.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/kstandarditemlistwidget.cpp')
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index c8a6955b9..fe686d4fe 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -25,6 +25,7 @@
#include <QGraphicsView>
#include <QPixmapCache>
#include <QStyleOption>
+#include <QTextBoundaryFinder>
#include <QVariantAnimation>
// #define KSTANDARDITEMLISTWIDGET_DEBUG
@@ -812,9 +813,19 @@ void KStandardItemListWidget::siblingsInformationChanged(const QBitArray &curren
m_dirtyLayout = true;
}
+int KStandardItemListWidget::numberOfUnicodeCharactersIn(const QString &text)
+{
+ int count = 0;
+ QTextBoundaryFinder boundaryFinder(QTextBoundaryFinder::Grapheme, text);
+ while (boundaryFinder.toNextBoundary() != -1) {
+ ++count;
+ }
+ return count;
+}
+
int KStandardItemListWidget::selectionLength(const QString &text) const
{
- return text.length();
+ return numberOfUnicodeCharactersIn(text);
}
void KStandardItemListWidget::editedRoleChanged(const QByteArray &current, const QByteArray &previous)