forked from qt-creator/qt-creator
Git: Enable renaming local branches by direct editing
Change-Id: I7edab94d949a6e48642f280af52fd156c803cafb Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
committed by
Orgad Shaneh
parent
1f1149bb58
commit
a82dd10518
@@ -24,9 +24,11 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "branchadddialog.h"
|
||||
#include "branchmodel.h"
|
||||
#include "ui_branchadddialog.h"
|
||||
#include "gitplugin.h"
|
||||
|
||||
#include <utils/fancylineedit.h>
|
||||
#include <utils/hostosinfo.h>
|
||||
|
||||
#include <QPushButton>
|
||||
@@ -87,6 +89,21 @@ private:
|
||||
QStringList m_localBranches;
|
||||
};
|
||||
|
||||
BranchValidationDelegate::BranchValidationDelegate(QWidget *parent, BranchModel *model)
|
||||
: QItemDelegate(parent)
|
||||
, m_model(model)
|
||||
{
|
||||
}
|
||||
|
||||
QWidget *BranchValidationDelegate::createEditor(QWidget *parent,
|
||||
const QStyleOptionViewItem & /*option*/,
|
||||
const QModelIndex & /*index*/) const
|
||||
{
|
||||
auto lineEdit = new Utils::FancyLineEdit(parent);
|
||||
BranchNameValidator *validator = new BranchNameValidator(m_model->localBranchNames(), lineEdit);
|
||||
lineEdit->setValidator(validator);
|
||||
return lineEdit;
|
||||
}
|
||||
|
||||
BranchAddDialog::BranchAddDialog(const QStringList &localBranches, bool addBranch, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
|
@@ -26,13 +26,26 @@
|
||||
#pragma once
|
||||
|
||||
#include <QDialog>
|
||||
#include <QItemDelegate>
|
||||
|
||||
namespace Git {
|
||||
namespace Internal {
|
||||
|
||||
class BranchModel;
|
||||
|
||||
namespace Ui { class BranchAddDialog; }
|
||||
|
||||
class BranchValidationDelegate : public QItemDelegate
|
||||
{
|
||||
public:
|
||||
BranchValidationDelegate(QWidget *parent, BranchModel *model);
|
||||
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index) const override;
|
||||
|
||||
private:
|
||||
BranchModel *m_model;
|
||||
};
|
||||
|
||||
class BranchAddDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@@ -317,7 +317,10 @@ Qt::ItemFlags BranchModel::flags(const QModelIndex &index) const
|
||||
BranchNode *node = indexToNode(index);
|
||||
if (!node)
|
||||
return Qt::NoItemFlags;
|
||||
return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
|
||||
Qt::ItemFlags res = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
|
||||
if (node->isLeaf() && node->isLocal())
|
||||
res |= Qt::ItemIsEditable;
|
||||
return res;
|
||||
}
|
||||
|
||||
void BranchModel::clear()
|
||||
|
@@ -126,6 +126,9 @@ BranchView::BranchView() :
|
||||
this, &BranchView::BranchView::setIncludeTags);
|
||||
|
||||
m_branchView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
m_branchView->setEditTriggers(QAbstractItemView::SelectedClicked
|
||||
| QAbstractItemView::EditKeyPressed);
|
||||
m_branchView->setItemDelegate(new BranchValidationDelegate(this, m_model));
|
||||
connect(m_branchView, &QAbstractItemView::doubleClicked,
|
||||
this, [this](const QModelIndex &idx) { log(m_filterModel->mapToSource(idx)); });
|
||||
connect(m_branchView, &QWidget::customContextMenuRequested,
|
||||
|
Reference in New Issue
Block a user