From 325c0beda530b2f7f04ba34f22fb2f8ccabb52e7 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh <orgad.shaneh@audiocodes.com> Date: Sun, 5 May 2013 22:28:07 +0300 Subject: [PATCH] Git: Show commit on double-click in fixup editor Change-Id: I8cb08b0fcba3ddac7223b39b3762ff71e8d61f8c Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> --- src/plugins/git/gitplugin.cpp | 1 + src/plugins/git/gitsubmiteditor.cpp | 7 +++++++ src/plugins/git/gitsubmiteditor.h | 2 ++ src/plugins/git/gitsubmiteditorwidget.cpp | 1 + src/plugins/git/gitsubmiteditorwidget.h | 3 +++ src/plugins/git/logchangedialog.cpp | 10 ++++++++++ src/plugins/git/logchangedialog.h | 6 ++++++ 7 files changed, 30 insertions(+) diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 0422da7f1c3..c41715b5013 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -965,6 +965,7 @@ Core::IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const Commit submitEditor->setDisplayName(title); connect(submitEditor, SIGNAL(diff(QStringList,QStringList)), this, SLOT(submitEditorDiff(QStringList,QStringList))); connect(submitEditor, SIGNAL(merge(QStringList)), this, SLOT(submitEditorMerge(QStringList))); + connect(submitEditor, SIGNAL(show(QString,QString)), m_gitClient, SLOT(show(QString,QString))); return editor; } diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp index d2f6ef32016..c22de6c11da 100644 --- a/src/plugins/git/gitsubmiteditor.cpp +++ b/src/plugins/git/gitsubmiteditor.cpp @@ -89,6 +89,7 @@ GitSubmitEditor::GitSubmitEditor(const VcsBase::VcsBaseSubmitEditorParameters *p m_forceClose(false) { connect(this, SIGNAL(diffSelectedFiles(QList<int>)), this, SLOT(slotDiffSelected(QList<int>))); + connect(submitEditorWidget(), SIGNAL(show(QString)), this, SLOT(showCommit(QString))); } GitSubmitEditorWidget *GitSubmitEditor::submitEditorWidget() @@ -160,6 +161,12 @@ void GitSubmitEditor::slotDiffSelected(const QList<int> &rows) emit merge(unmergedFiles); } +void GitSubmitEditor::showCommit(const QString &commit) +{ + if (!m_workingDirectory.isEmpty()) + emit show(m_workingDirectory, commit); +} + void GitSubmitEditor::updateFileModel() { if (m_workingDirectory.isEmpty()) diff --git a/src/plugins/git/gitsubmiteditor.h b/src/plugins/git/gitsubmiteditor.h index 9791be259e6..da099f2d23e 100644 --- a/src/plugins/git/gitsubmiteditor.h +++ b/src/plugins/git/gitsubmiteditor.h @@ -62,6 +62,7 @@ public: signals: void diff(const QStringList &unstagedFiles, const QStringList &stagedFiles); void merge(const QStringList &unmergedFiles); + void show(const QString &workingDirectory, const QString &commit); protected: QByteArray fileContents() const; @@ -69,6 +70,7 @@ protected: private slots: void slotDiffSelected(const QList<int> &rows); + void showCommit(const QString &commit); private: inline GitSubmitEditorWidget *submitEditorWidget(); diff --git a/src/plugins/git/gitsubmiteditorwidget.cpp b/src/plugins/git/gitsubmiteditorwidget.cpp index a8fc55d02dc..ab7240fa3d6 100644 --- a/src/plugins/git/gitsubmiteditorwidget.cpp +++ b/src/plugins/git/gitsubmiteditorwidget.cpp @@ -169,6 +169,7 @@ void GitSubmitEditorWidget::initialize(CommitType commitType, const QString &rep logChangeGroupBox->setLayout(logChangeLayout); m_logChangeWidget = new LogChangeWidget; m_logChangeWidget->init(repository, QString(), false); + connect(m_logChangeWidget, SIGNAL(doubleClicked(QString)), this, SIGNAL(show(QString))); logChangeLayout->addWidget(m_logChangeWidget); insertTopWidget(logChangeGroupBox); m_gitSubmitPanelUi.editGroup->hide(); diff --git a/src/plugins/git/gitsubmiteditorwidget.h b/src/plugins/git/gitsubmiteditorwidget.h index 41161f0b8a9..62bc8eda734 100644 --- a/src/plugins/git/gitsubmiteditorwidget.h +++ b/src/plugins/git/gitsubmiteditorwidget.h @@ -72,6 +72,9 @@ protected: bool canSubmit() const; QString cleanupDescription(const QString &) const; +signals: + void show(const QString &commit); + private slots: void authorInformationChanged(); diff --git a/src/plugins/git/logchangedialog.cpp b/src/plugins/git/logchangedialog.cpp index 8621bc24d92..2bf627be360 100644 --- a/src/plugins/git/logchangedialog.cpp +++ b/src/plugins/git/logchangedialog.cpp @@ -62,6 +62,7 @@ LogChangeWidget::LogChangeWidget(QWidget *parent) setUniformRowHeights(true); setRootIsDecorated(false); setSelectionBehavior(QAbstractItemView::SelectRows); + connect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(emitDoubleClicked(QModelIndex))); } bool LogChangeWidget::init(const QString &repository, const QString &commit, bool includeRemote) @@ -89,6 +90,15 @@ int LogChangeWidget::commitIndex() const return -1; } +void LogChangeWidget::emitDoubleClicked(const QModelIndex &index) +{ + if (index.isValid()) { + QString commit = index.sibling(index.row(), Sha1Column).data().toString(); + if (!commit.isEmpty()) + emit doubleClicked(commit); + } +} + bool LogChangeWidget::populateLog(const QString &repository, const QString &commit, bool includeRemote) { if (const int rowCount = m_model->rowCount()) diff --git a/src/plugins/git/logchangedialog.h b/src/plugins/git/logchangedialog.h index 83f31adcd43..4e298519ac4 100644 --- a/src/plugins/git/logchangedialog.h +++ b/src/plugins/git/logchangedialog.h @@ -57,6 +57,12 @@ public: QString commit() const; int commitIndex() const; +signals: + void doubleClicked(const QString &commit); + +private slots: + void emitDoubleClicked(const QModelIndex &index); + private: bool populateLog(const QString &repository, const QString &commit, bool includeRemote); const QStandardItem *currentItem(int column = 0) const; -- GitLab