Git: Fix branch expansion on show before the diff display is done

The description is shown first (with the <Expand> placeholder), and the
diff parsing can be long. If <Expand> is clicked during parsing, it fails
because the base directory is not set yet.

Change-Id: Ib5e839b292c32091c726f24eb643d0fa5a142cb7
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Orgad Shaneh
2019-08-15 08:49:50 +03:00
committed by Orgad Shaneh
parent 2b650f713a
commit eaf8ccf118
5 changed files with 15 additions and 1 deletions

View File

@@ -55,6 +55,11 @@ QString DiffEditorController::baseDirectory() const
return m_document->baseDirectory();
}
void DiffEditorController::setBaseDirectory(const QString &directory)
{
m_document->setBaseDirectory(directory);
}
int DiffEditorController::contextLineCount() const
{
return m_document->contextLineCount();

View File

@@ -48,6 +48,7 @@ public:
bool isReloading() const;
QString baseDirectory() const;
void setBaseDirectory(const QString &directory);
int contextLineCount() const;
bool ignoreWhitespace() const;

View File

@@ -113,7 +113,8 @@ void DiffEditorDocument::setDiffFiles(const QList<FileData> &data, const QString
const QString &startupFile)
{
m_diffFiles = data;
m_baseDirectory = directory;
if (!directory.isEmpty())
m_baseDirectory = directory;
m_startupFile = startupFile;
emit documentChanged();
}
@@ -128,6 +129,11 @@ QString DiffEditorDocument::baseDirectory() const
return m_baseDirectory;
}
void DiffEditorDocument::setBaseDirectory(const QString &directory)
{
m_baseDirectory = directory;
}
QString DiffEditorDocument::startupFile() const
{
return m_startupFile;

View File

@@ -60,6 +60,7 @@ public:
const QString &startupFile = QString());
QList<FileData> diffFiles() const;
QString baseDirectory() const;
void setBaseDirectory(const QString &directory);
QString startupFile() const;
void setDescription(const QString &description);

View File

@@ -236,6 +236,7 @@ VcsBaseDiffEditorController::VcsBaseDiffEditorController(IDocument *document,
: DiffEditorController(document)
, d(new VcsBaseDiffEditorControllerPrivate(this, client, workingDirectory))
{
setBaseDirectory(workingDirectory);
}
VcsBaseDiffEditorController::~VcsBaseDiffEditorController()