diff options
author | Yuchen Deng <loaden@gmail.com> | 2012-01-10 00:15:50 +0800 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@nokia.com> | 2012-01-11 15:36:16 +0100 |
commit | 58f8d43fff702dd25a4103bee741bfc0de43a87d (patch) | |
tree | 8a9e0b5d6d59bad9b27d5f9aaa0b57d036f37d4e | |
parent | 62afcd67421f477a81fde59882575d0ac17936bd (diff) | |
download | qt-creator-58f8d43fff702dd25a4103bee741bfc0de43a87d.tar.gz |
Git: Fix error encoding if the source file not exist
Change-Id: Ia98195f966e79d65f1947c638cb9aacfb9b2f309
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
-rw-r--r-- | src/plugins/git/gitclient.cpp | 12 | ||||
-rw-r--r-- | src/plugins/git/gitclient.h | 1 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 5956f08540..849e27dd14 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -408,7 +408,7 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(const Core::Id &id, QTC_ASSERT(rc, return 0); rc->setSource(source); if (codecType == CodecSource) { - rc->setCodec(VcsBase::VcsBaseEditorWidget::getCodec(source)); + rc->setCodec(getSourceCodec(source)); } else if (codecType == CodecLogOutput) { QString encodingName = readConfigValue(source, QLatin1String("i18n.logOutputEncoding")); if (encodingName.isEmpty()) @@ -675,6 +675,16 @@ void GitClient::slotBlameRevisionRequested(const QString &source, QString change blame(fi.absolutePath(), QStringList(), fi.fileName(), change, lineNumber); } +QTextCodec *GitClient::getSourceCodec(const QString &file) const +{ + if (QFileInfo(file).isFile()) + return VcsBase::VcsBaseEditorWidget::getCodec(file); + QString encodingName = readConfigValue(file, QLatin1String("gui.encoding")); + if (encodingName.isEmpty()) + encodingName = QLatin1String("utf-8"); + return QTextCodec::codecForName(encodingName.toLocal8Bit()); +} + void GitClient::blame(const QString &workingDirectory, const QStringList &args, const QString &fileName, diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 3746b420cc..c237528799 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -233,6 +233,7 @@ private slots: void slotBlameRevisionRequested(const QString &source, QString change, int lineNumber); private: + QTextCodec *getSourceCodec(const QString &file) const; VcsBase::VcsBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty, const QString &dynamicPropertyValue) const; enum CodecType { CodecSource, CodecLogOutput, CodecNone }; |