QmlDesigner.Rewriter: fixing encoding issue for Qt 4

QString uses utf-16 internally. If we explicitly convert to utf-8
and then use the QByteArray implicit constructor of QString again,
Qt 4 will interpret the utf-8 encoded string as latin1.
This results in a wrong string for everything that is not pure ASCII.

With Qt 5 it works, since the assumed default encoding of QByteArray
is utf-8. Still any conversion does not make sense.

Task-number: QTCREATORBUG-9493
Change-Id: Ifbaa4684e85d0ccd677956eeff88b4cc7d807922
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
This commit is contained in:
Thomas Hartmann
2013-06-10 12:19:52 +02:00
parent d6da0901eb
commit c64ae55799

View File

@@ -569,7 +569,7 @@ void RewriterView::resetToLastCorrectQml()
m_textModifier->textDocument()->undo(); m_textModifier->textDocument()->undo();
m_textModifier->textDocument()->clearUndoRedoStacks(QTextDocument::RedoStack); m_textModifier->textDocument()->clearUndoRedoStacks(QTextDocument::RedoStack);
ModelAmender differenceHandler(m_textToModelMerger.data()); ModelAmender differenceHandler(m_textToModelMerger.data());
m_textToModelMerger->load(m_textModifier->text().toUtf8(), differenceHandler); m_textToModelMerger->load(m_textModifier->text(), differenceHandler);
leaveErrorState(); leaveErrorState();
} }
@@ -759,7 +759,7 @@ void RewriterView::qmlTextChanged()
switch (m_differenceHandling) { switch (m_differenceHandling) {
case Validate: { case Validate: {
ModelValidator differenceHandler(m_textToModelMerger.data()); ModelValidator differenceHandler(m_textToModelMerger.data());
if (m_textToModelMerger->load(newQmlText.toUtf8(), differenceHandler)) if (m_textToModelMerger->load(newQmlText, differenceHandler))
lastCorrectQmlSource = newQmlText; lastCorrectQmlSource = newQmlText;
break; break;
} }