diff options
-rw-r--r-- | mappingeditwidget.cpp | 16 | ||||
-rw-r--r-- | mappingeditwidget.h | 2 | ||||
-rw-r--r-- | mappingtreewidget.cpp | 1 | ||||
-rw-r--r-- | newpicsdialog.cpp | 3 |
4 files changed, 21 insertions, 1 deletions
diff --git a/mappingeditwidget.cpp b/mappingeditwidget.cpp index a08bb81..6e1a60f 100644 --- a/mappingeditwidget.cpp +++ b/mappingeditwidget.cpp @@ -37,14 +37,19 @@ MappingEditWidget::MappingEditWidget(QWidget *parent) : QWidget(parent){ //buttons QPushButton *addMappingB = new QPushButton(tr(">>")); + addMappingB->setFocusPolicy(Qt::ClickFocus); connect(addMappingB, &QPushButton::clicked, this, &MappingEditWidget::addMapping); QPushButton *removeMappingB = new QPushButton(tr("<<")); + removeMappingB->setFocusPolicy(Qt::ClickFocus); connect(removeMappingB, &QPushButton::clicked, this, &MappingEditWidget::removeMapping); QPushButton *clearMappingB = new QPushButton(tr("&Clear")); + clearMappingB->setFocusPolicy(Qt::ClickFocus); connect(clearMappingB, &QPushButton::clicked, this, &MappingEditWidget::clearMapping); QPushButton *addTreeB = new QPushButton(tr(">>>>")); + addTreeB->setFocusPolicy(Qt::ClickFocus); connect(addTreeB, &QPushButton::clicked, this, &MappingEditWidget::addTree); QPushButton *copyActorB = new QPushButton(tr("Copy")); + copyActorB->setFocusPolicy(Qt::ClickFocus); connect(copyActorB, &QPushButton::clicked, this, &MappingEditWidget::copyActor); //layout @@ -87,6 +92,9 @@ void MappingEditWidget::removeMapping(){ } QModelIndex firstIdx = sel.first(); if(firstIdx.isValid()){ + // removing an item from the model inevitably calls resultSelctionChanged + // check and clear the flag there! + blockResultChange(true); mResultModel->removeItem(firstIdx); } mMappingResult->expandAll(); @@ -146,6 +154,10 @@ void MappingEditWidget::loadMappings(QString from){ void MappingEditWidget::resultSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous){ Q_UNUSED(previous) + if(mBlockResultChange){ + blockResultChange(false); + return; + } QStringList path; QModelIndex c = current; // gather elements from leaf to root @@ -167,7 +179,9 @@ void MappingEditWidget::resultSelectionChanged(const QModelIndex ¤t, const // yes, we have a valid index. Map it to the Proxy... QModelIndex real = mMappingTree->mappingTreeProxy()->mapFromSource(srcIdx); // select it and make sure it's visible! - mMappingTree->mappingTreeView()->selectionModel()->select(real, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); + mMappingTree->mappingTreeView()->selectionModel()->clear(); + mMappingTree->mappingTreeView()->selectionModel()->select(real, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); + mMappingTree->mappingTreeView()->selectionModel()->setCurrentIndex(real, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); mMappingTree->mappingTreeView()->scrollTo(real, QAbstractItemView::PositionAtCenter); } diff --git a/mappingeditwidget.h b/mappingeditwidget.h index 3044d80..54fdf0c 100644 --- a/mappingeditwidget.h +++ b/mappingeditwidget.h @@ -23,6 +23,7 @@ class MappingEditWidget : public QWidget { explicit MappingEditWidget(QWidget *parent = nullptr); MappingTreeResultModel *model() const { return mResultModel; } MappingTreeWidget *treeWidget() const { return mMappingTree; } + void blockResultChange(bool c) { mBlockResultChange = c; } public slots: void addMapping(); @@ -42,6 +43,7 @@ class MappingEditWidget : public QWidget { MappingTreeWidget *mMappingTree; MappingTreeResultView *mMappingResult; MappingTreeResultModel *mResultModel; + bool mBlockResultChange = false; }; #endif // MAPPINGEDITWIDGET_H diff --git a/mappingtreewidget.cpp b/mappingtreewidget.cpp index b1a2b8b..38e6c9a 100644 --- a/mappingtreewidget.cpp +++ b/mappingtreewidget.cpp @@ -86,6 +86,7 @@ MappingTreeWidget::MappingTreeWidget(QWidget *parent) : QWidget(parent){ // filter + refresh QIcon swordIcon(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2694), true, false)); mFilter = new QLineEdit; + mFilter->setFocusPolicy(Qt::ClickFocus); connect(mFilter, &QLineEdit::returnPressed, this, &MappingTreeWidget::filter); QToolBar *filterTB = new QToolBar; QAction *doFilterA = new QAction(Helper::icon(Qt::transparent, qApp->palette().color(QPalette::Text), QChar(0x2245), true, false), tr("Filter"), this); diff --git a/newpicsdialog.cpp b/newpicsdialog.cpp index 4fe8f42..dd59f8e 100644 --- a/newpicsdialog.cpp +++ b/newpicsdialog.cpp @@ -64,8 +64,10 @@ void NewPicsDialog::setupDlg(){ //dialog buttons mOk = new QPushButton(tr("Ok")); + mOk->setFocusPolicy(Qt::ClickFocus); connect(mOk, &QPushButton::clicked, this, &NewPicsDialog::accept); mCancel = new QPushButton(tr("Cancel")); + mCancel->setFocusPolicy(Qt::ClickFocus); connect(mCancel, &QPushButton::clicked, this, &NewPicsDialog::reject); QHBoxLayout *dlgButtonLayout = new QHBoxLayout; dlgButtonLayout->addStretch(); @@ -78,6 +80,7 @@ void NewPicsDialog::setupDlg(){ mTab = new QTabWidget; mTab->addTab(mFilesWidget, tr("Files")); mTab->addTab(mMappingEditWidget, tr("Mappings")); + mTab->setFocusPolicy(Qt::ClickFocus); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(mTab); mainLayout->addLayout(dlgButtonLayout); |