# # # patch "src/model/GetRevision.cpp" # from [cbb4647d0b6e8b29fd1943ea473af6a984ff03ce] # to [0a51566d134a31ef08decd4eebbeadb346a0fc0c] # # patch "src/view/dialogs/ChangesetBrowser.cpp" # from [f88765a14b2eef403b8609587b95d7cf58a6a4ae] # to [22c6f00c601bc0004274b8ce7242d97c3fdd2be5] # # patch "src/view/dialogs/ChangesetBrowser.h" # from [9b78450d35f13ae1a57e9475e69e66f975afbc0f] # to [edd5d69c14290a198cd81116f87c52737b5f8094] # ============================================================ --- src/model/GetRevision.cpp cbb4647d0b6e8b29fd1943ea473af6a984ff03ce +++ src/model/GetRevision.cpp 0a51566d134a31ef08decd4eebbeadb346a0fc0c @@ -228,10 +228,15 @@ Qt::ItemFlags GetRevision::flags(const Q } Qt::ItemFlags GetRevision::flags(const QModelIndex &index) const -{ - return Qt::ItemIsEnabled | Qt::ItemIsSelectable; +{ + if (index.isValid()) + { + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; + } + return 0; } + QVariant GetRevision::headerData(int section, Qt::Orientation orientation, int role) const { if (role == Qt::DisplayRole) ============================================================ --- src/view/dialogs/ChangesetBrowser.cpp f88765a14b2eef403b8609587b95d7cf58a6a4ae +++ src/view/dialogs/ChangesetBrowser.cpp 22c6f00c601bc0004274b8ce7242d97c3fdd2be5 @@ -22,6 +22,7 @@ #include "ChangesetBrowser.h" #include "Settings.h" #include "RevisionManifest.h" +#include "RevisionDiff.h" ChangesetBrowser::ChangesetBrowser(QWidget *parent) : Dialog(parent) { @@ -160,6 +161,13 @@ void ChangesetBrowser::openManifestDialo dlg.exec(); } +void ChangesetBrowser::showRevisionDiff(const QString & rev, const QString & revPrev) +{ + RevisionDiff dlg(this); + dlg.init(".", rev, revPrev); + dlg.exec(); +} + void ChangesetBrowser::changesetsDoubleClicked(const QModelIndex & index) { if (!index.isValid()) return; @@ -175,19 +183,34 @@ void ChangesetBrowser::contextMenuReques changesetModel->index(indexList.at(0).row(), 3, QModelIndex()); QString rev(revIdx.data().toString()); + + QModelIndex revPrevIdx = + changesetModel->index(indexList.at(0).row() - 1, 3, QModelIndex()); + QString revPrev(revPrevIdx.data().toString()); QMenu menu(this); QFont activeFont; activeFont.setBold(true); - + QAction * actOpenManifest = menu.addAction(tr("View files in this revision")); actOpenManifest->setFont(activeFont); - + + QAction * actShowDiff; + if(revPrevIdx.isValid()) + actShowDiff = menu.addAction(tr("Show differences to previous revision")); + QAction * act = menu.exec(pos); - if (act == actOpenManifest) + + if (act == actOpenManifest) { openManifestDialog(rev); } + + + if (act == actShowDiff) + { + showRevisionDiff(rev, revPrev); + } // TODO: we might want to add more items here, like "Checkout", "Update", // etc. } ============================================================ --- src/view/dialogs/ChangesetBrowser.h 9b78450d35f13ae1a57e9475e69e66f975afbc0f +++ src/view/dialogs/ChangesetBrowser.h edd5d69c14290a198cd81116f87c52737b5f8094 @@ -49,6 +49,7 @@ private: private: void initTreeWidget(); void openManifestDialog(const QString &); + void showRevisionDiff(const QString &, const QString &); bool tree; Branches * branchModel;