summaryrefslogtreecommitdiffstats
path: root/src/shared/qwaylandinputmethodeventbuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/qwaylandinputmethodeventbuilder.cpp')
-rw-r--r--src/shared/qwaylandinputmethodeventbuilder.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp
index eb527c15a..fe93f5146 100644
--- a/src/shared/qwaylandinputmethodeventbuilder.cpp
+++ b/src/shared/qwaylandinputmethodeventbuilder.cpp
@@ -268,19 +268,24 @@ QWaylandInputMethodContentType QWaylandInputMethodContentType::convert(Qt::Input
return QWaylandInputMethodContentType{hint, purpose};
}
-int QWaylandInputMethodEventBuilder::indexFromWayland(const QString &str, int utf8Index, int baseIndex)
+int QWaylandInputMethodEventBuilder::indexFromWayland(const QString &text, int length, int base)
{
- if (utf8Index == 0)
- return baseIndex;
+ if (length == 0)
+ return base;
- if (utf8Index < 0) {
- const QByteArray &utf8 = str.leftRef(baseIndex).toUtf8();
- return QString::fromUtf8(utf8.left(qMax(utf8.length() + utf8Index, 0))).length();
+ if (length < 0) {
+ const QByteArray &utf8 = text.leftRef(base).toUtf8();
+ return QString::fromUtf8(utf8.left(qMax(utf8.length() + length, 0))).length();
} else {
- const QByteArray &utf8 = str.midRef(baseIndex).toUtf8();
- return QString::fromUtf8(utf8.left(utf8Index)).length() + baseIndex;
+ const QByteArray &utf8 = text.midRef(base).toUtf8();
+ return QString::fromUtf8(utf8.left(length)).length() + base;
}
}
+int QWaylandInputMethodEventBuilder::indexToWayland(const QString &text, int length, int base)
+{
+ return text.midRef(base, length).toUtf8().size();
+}
+
QT_END_NAMESPACE