summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mappingeditwidget.cpp16
-rw-r--r--mappingeditwidget.h2
-rw-r--r--mappingtreewidget.cpp1
-rw-r--r--newpicsdialog.cpp3
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 &current, 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 &current, 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);