From 58f8d43fff702dd25a4103bee741bfc0de43a87d Mon Sep 17 00:00:00 2001 From: Yuchen Deng <loaden@gmail.com> Date: Tue, 10 Jan 2012 00:15:50 +0800 Subject: [PATCH] Git: Fix error encoding if the source file not exist Change-Id: Ia98195f966e79d65f1947c638cb9aacfb9b2f309 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> --- src/plugins/git/gitclient.cpp | 12 +++++++++++- src/plugins/git/gitclient.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 5956f085403..849e27dd140 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 3746b420cc4..c2375287993 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 }; -- GitLab