X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiSelectionManager.cpp;h=4d172bc35d890cb52de14e27d6ec9f50f9edcfaf;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=55484b410ef5a7be681a0b287c6b701c9f9149bb;hpb=696f745f6371fb5b4284ca1085e2866916535dc3;p=lyx.git diff --git a/src/frontends/qt4/GuiSelectionManager.cpp b/src/frontends/qt4/GuiSelectionManager.cpp index 55484b410e..4d172bc35d 100644 --- a/src/frontends/qt4/GuiSelectionManager.cpp +++ b/src/frontends/qt4/GuiSelectionManager.cpp @@ -13,19 +13,30 @@ */ #include + #include "GuiSelectionManager.h" -#include "GuiDocument.h" #include "support/debug.h" -using std::vector; +#include +#include +#include +#include + +#ifdef KeyPress +#undef KeyPress +#endif + +#ifdef ControlModifier +#undef ControlModifier +#endif + namespace lyx { namespace frontend { - GuiSelectionManager::GuiSelectionManager( - QListView * avail, + QAbstractItemView * avail, QListView * sel, QPushButton * add, QPushButton * del, @@ -47,11 +58,11 @@ GuiSelectionManager::GuiSelectionManager( availableLV->setModel(amod); connect(availableLV->selectionModel(), - SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), - this, SLOT(availableChanged(const QModelIndex &, const QModelIndex &))); + SIGNAL(currentChanged(QModelIndex,QModelIndex)), + this, SLOT(availableChanged(QModelIndex, QModelIndex))); connect(selectedLV->selectionModel(), - SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), - this, SLOT(selectedChanged(const QModelIndex &, const QModelIndex &))); + SIGNAL(currentChanged(QModelIndex, QModelIndex)), + this, SLOT(selectedChanged(QModelIndex, QModelIndex))); connect(addPB, SIGNAL(clicked()), this, SLOT(addPB_clicked())); connect(deletePB, SIGNAL(clicked()), @@ -60,12 +71,12 @@ GuiSelectionManager::GuiSelectionManager( this, SLOT(upPB_clicked())); connect(downPB, SIGNAL(clicked()), this, SLOT(downPB_clicked())); - connect(availableLV, SIGNAL(clicked(const QModelIndex &)), - this, SLOT(availableLV_clicked(const QModelIndex &))); - connect(availableLV, SIGNAL(doubleClicked(const QModelIndex &)), - this, SLOT(availableLV_doubleClicked(const QModelIndex &))); - connect(selectedLV, SIGNAL(clicked(const QModelIndex &)), - this, SLOT(selectedLV_clicked(const QModelIndex &))); + connect(availableLV, SIGNAL(clicked(QModelIndex)), + this, SLOT(availableLV_clicked(QModelIndex))); + connect(availableLV, SIGNAL(doubleClicked(QModelIndex)), + this, SLOT(availableLV_doubleClicked(QModelIndex))); + connect(selectedLV, SIGNAL(clicked(QModelIndex)), + this, SLOT(selectedLV_clicked(QModelIndex))); availableLV->installEventFilter(this); selectedLV->installEventFilter(this); @@ -141,8 +152,8 @@ bool GuiSelectionManager::isSelected(const QModelIndex & idx) QVariant const & str = availableModel->data(idx, Qt::DisplayRole); QModelIndexList qmil = selectedModel->match(selectedModel->index(0), - Qt::DisplayRole, str, - Qt::MatchExactly | Qt::MatchWrap); + Qt::DisplayRole, str, 1, + Qt::MatchFlags(Qt::MatchExactly | Qt::MatchWrap)); return !qmil.empty(); } @@ -180,9 +191,12 @@ bool GuiSelectionManager::insertRowToSelected(int i, void GuiSelectionManager::addPB_clicked() { - QModelIndex const idxToAdd = getSelectedIndex(availableLV); - if (!idxToAdd.isValid()) + QModelIndexList selIdx = + availableLV->selectionModel()->selectedIndexes(); + if (selIdx.isEmpty()) return; + + QModelIndex const idxToAdd = selIdx.first(); QModelIndex const idx = selectedLV->currentIndex(); int const srows = selectedModel->rowCount(); @@ -190,7 +204,7 @@ void GuiSelectionManager::addPB_clicked() insertRowToSelected(srows, qm); selectionChanged(); //signal - + if (idx.isValid()) selectedLV->setCurrentIndex(idx); @@ -200,10 +214,11 @@ void GuiSelectionManager::addPB_clicked() void GuiSelectionManager::deletePB_clicked() { - QModelIndex idx = getSelectedIndex(selectedLV); - if (!idx.isValid()) + QModelIndexList selIdx = + selectedLV->selectionModel()->selectedIndexes(); + if (selIdx.isEmpty()) return; - + QModelIndex idx = selIdx.first(); selectedModel->removeRow(idx.row()); selectionChanged(); //signal @@ -214,7 +229,7 @@ void GuiSelectionManager::deletePB_clicked() if (nrows > 1) selectedLV->setCurrentIndex(idx); else if (nrows == 1) - selectedLV->setCurrentIndex(selectedLV->model()->index(0,0)); + selectedLV->setCurrentIndex(selectedLV->model()->index(0, 0)); selectedHasFocus_ = (nrows > 0); updateHook(); } @@ -266,6 +281,7 @@ void GuiSelectionManager::downPB_clicked() // can enter the QListView in other ways. But there are no signals sent // in that case. We need to reimplement focusInEvent() to capture those, // which means subclassing QListView. (rgh) +// Or by installing an event listener.. (andre) void GuiSelectionManager::availableLV_clicked(const QModelIndex &) { selectedHasFocus_ = false; @@ -307,10 +323,9 @@ bool GuiSelectionManager::eventFilter(QObject * obj, QEvent * event) if (keyPressed == Qt::Key_Enter || keyPressed == Qt::Key_Return) { if (!keyModifiers) addPB_clicked(); - else if ((keyModifiers == Qt::ControlModifier) || - (keyModifiers == Qt::KeypadModifier) || - (keyModifiers == (Qt::ControlModifier | Qt::KeypadModifier)) - ) { + else if (keyModifiers == Qt::ControlModifier || + keyModifiers == Qt::KeypadModifier || + keyModifiers == (Qt::ControlModifier | Qt::KeypadModifier)) { if (addPB->isEnabled()) { addPB_clicked(); okHook(); //signal @@ -362,4 +377,4 @@ bool GuiSelectionManager::eventFilter(QObject * obj, QEvent * event) } // namespace frontend } // namespace lyx -#include "GuiSelectionManager_moc.cpp" +#include "moc_GuiSelectionManager.cpp"