forked from qt-creator/qt-creator
Git: Pass rows instead of files for diffSelectedFiles
Useful when the same file can appear more than once (e.g. staged + modified) Task-number: QTCREATORBUG-5347 Change-Id: I3ce716c22840c149490e00e6948612607ae57159 Reviewed-by: Petar Perisin <petar.perisin@gmail.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
committed by
Tobias Hunger
parent
39e9c5ef20
commit
76f6729892
@@ -175,7 +175,8 @@ static const VcsBase::VcsBaseSubmitEditorParameters submitParameters = {
|
||||
Git::Constants::SUBMIT_MIMETYPE,
|
||||
Git::Constants::GITSUBMITEDITOR_ID,
|
||||
Git::Constants::GITSUBMITEDITOR_DISPLAY_NAME,
|
||||
Git::Constants::C_GITSUBMITEDITOR
|
||||
Git::Constants::C_GITSUBMITEDITOR,
|
||||
VcsBase::VcsBaseSubmitEditorParameters::DiffRows
|
||||
};
|
||||
|
||||
// Create a parameter action
|
||||
|
||||
@@ -85,7 +85,7 @@ GitSubmitEditor::GitSubmitEditor(const VcsBase::VcsBaseSubmitEditorParameters *p
|
||||
m_model(0),
|
||||
m_amend(false)
|
||||
{
|
||||
connect(this, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(slotDiffSelected(QStringList)));
|
||||
connect(this, SIGNAL(diffSelectedFiles(QList<int>)), this, SLOT(slotDiffSelected(QList<int>)));
|
||||
}
|
||||
|
||||
GitSubmitEditorWidget *GitSubmitEditor::submitEditorWidget()
|
||||
@@ -131,24 +131,21 @@ void GitSubmitEditor::setAmend(bool amend)
|
||||
setEmptyFileListEnabled(amend); // Allow for just correcting the message
|
||||
}
|
||||
|
||||
void GitSubmitEditor::slotDiffSelected(const QStringList &files)
|
||||
void GitSubmitEditor::slotDiffSelected(const QList<int> &rows)
|
||||
{
|
||||
// Sort it apart into unmerged/staged/unstaged files
|
||||
QStringList unmergedFiles;
|
||||
QStringList unstagedFiles;
|
||||
QStringList stagedFiles;
|
||||
const int rowCount = m_model->rowCount();
|
||||
for (int r = 0; r < rowCount; r++) {
|
||||
const QString fileName = m_model->file(r);
|
||||
if (files.contains(fileName)) {
|
||||
const FileStates state = static_cast<FileStates>(m_model->extraData(r).toInt());
|
||||
if (state & UnmergedFile)
|
||||
unmergedFiles.push_back(fileName);
|
||||
else if (state & StagedFile)
|
||||
stagedFiles.push_back(fileName);
|
||||
else if (state != UntrackedFile)
|
||||
unstagedFiles.push_back(fileName);
|
||||
}
|
||||
foreach (int row, rows) {
|
||||
const QString fileName = m_model->file(row);
|
||||
const FileStates state = static_cast<FileStates>(m_model->extraData(row).toInt());
|
||||
if (state & UnmergedFile)
|
||||
unmergedFiles.push_back(fileName);
|
||||
else if (state & StagedFile)
|
||||
stagedFiles.push_back(fileName);
|
||||
else if (state != UntrackedFile)
|
||||
unstagedFiles.push_back(fileName);
|
||||
}
|
||||
if (!unstagedFiles.empty() || !stagedFiles.empty())
|
||||
emit diff(unstagedFiles, stagedFiles);
|
||||
|
||||
@@ -64,7 +64,7 @@ protected:
|
||||
void updateFileModel();
|
||||
|
||||
private slots:
|
||||
void slotDiffSelected(const QStringList &);
|
||||
void slotDiffSelected(const QList<int> &rows);
|
||||
|
||||
private:
|
||||
inline GitSubmitEditorWidget *submitEditorWidget();
|
||||
|
||||
Reference in New Issue
Block a user