summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandwindowmanagerintegration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/qwaylandwindowmanagerintegration.cpp')
-rw-r--r--src/client/qwaylandwindowmanagerintegration.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/client/qwaylandwindowmanagerintegration.cpp b/src/client/qwaylandwindowmanagerintegration.cpp
index 17ae8a5ae..dd1acaf72 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);
}
}