summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuchen Deng <loaden@gmail.com>2012-01-10 00:15:50 +0800
committerTobias Hunger <tobias.hunger@nokia.com>2012-01-11 15:36:16 +0100
commit58f8d43fff702dd25a4103bee741bfc0de43a87d (patch)
tree8a9e0b5d6d59bad9b27d5f9aaa0b57d036f37d4e
parent62afcd67421f477a81fde59882575d0ac17936bd (diff)
downloadqt-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.cpp12
-rw-r--r--src/plugins/git/gitclient.h1
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 };