diff options
author | Pekka Vuorela <pekka.vuorela@jolla.com> | 2019-10-14 17:20:59 +0300 |
---|---|---|
committer | Pekka Vuorela <pekka.vuorela@jolla.com> | 2019-10-21 18:28:58 +0300 |
commit | 48b1acd2ae088bf6d7ce17c779e5f309759da15b (patch) | |
tree | 3c5a692ad83d59e6632ad006994388d566e84500 | |
parent | 507c4f275b6f1a1e9b1269d9002db4cd762053ca (diff) | |
download | qtwayland-48b1acd2ae088bf6d7ce17c779e5f309759da15b.tar.gz |
Fix url getting broken on openUrl
UTF-8 byte array cannot be split in random position and assume getting
valid content on resulting parts. Switched chunk size to be based
on characters, encoded size will vary but don't think that should matter.
Change-Id: Ic41ea16d2111b1620993b60fdbc6e739929f25d7
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
-rw-r--r-- | src/client/qwaylandwindowmanagerintegration.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/client/qwaylandwindowmanagerintegration.cpp b/src/client/qwaylandwindowmanagerintegration.cpp index 17ae8a5a..dd1acaf7 100644 --- a/src/client/qwaylandwindowmanagerintegration.cpp +++ b/src/client/qwaylandwindowmanagerintegration.cpp @@ -110,13 +110,17 @@ void QWaylandWindowManagerIntegration::windowmanager_quit() void QWaylandWindowManagerIntegration::openUrl_helper(const QUrl &url) { Q_ASSERT(isInitialized()); - QByteArray data = url.toString().toUtf8(); + QString data = url.toString(); static const int chunkSize = 128; while (!data.isEmpty()) { - QByteArray chunk = data.left(chunkSize); + QString chunk = data.left(chunkSize); data = data.mid(chunkSize); - open_url(!data.isEmpty(), QString::fromUtf8(chunk)); + if (chunk.at(chunk.size() - 1).isHighSurrogate() && !data.isEmpty()) { + chunk.append(data.at(0)); + data = data.mid(1); + } + open_url(!data.isEmpty(), chunk); } } |