diff options
| author | Yifan Zhu <[email protected]> | 2024-08-08 20:21:08 -0700 |
|---|---|---|
| committer | Yifan Zhu <[email protected]> | 2024-08-13 16:09:10 +0000 |
| commit | 021365dceb590a14bfcdb904ea05ffdd69b7d663 (patch) | |
| tree | baf6b7ca2ee7a42932647a34ac714191d3d37326 /src/kitemviews/kstandarditemlistwidget.cpp | |
| parent | 822a7d33ab703da8e4d98454fb38cd480f7a0fd2 (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.cpp | 13 |
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 ¤ 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 ¤t, const QByteArray &previous) |
