Anyone?
Richard Heck wrote:
This addresses some bugs involving the mouse in the citation dialog.
One was reported as 4121; the other is one I've seen, where clicking
in the left pane causes a multi-element selection. This is because the
selection model is being reset too often.
OK to commit?
Richard
------------------------------------------------------------------------
Index: frontends/qt4/QCitationDialog.h
===================================================================
--- frontends/qt4/QCitationDialog.h (revision 19390)
+++ frontends/qt4/QCitationDialog.h (working copy)
@@ -73,7 +73,6 @@
void selectedChanged(const QModelIndex &, const QModelIndex &);
void on_availableLV_clicked(const QModelIndex &);
void on_availableLV_doubleClicked(const QModelIndex &);
- void on_availableLV_entered(const QModelIndex &);
void availableChanged(const QModelIndex &, const QModelIndex &);
virtual void changed();
/// check whether key is already selected
Index: frontends/qt4/QCitationDialog.cpp
===================================================================
--- frontends/qt4/QCitationDialog.cpp (revision 19390)
+++ frontends/qt4/QCitationDialog.cpp (working copy)
@@ -320,17 +320,19 @@
void QCitationDialog::setButtons()
{
int const arows = availableLV->model()->rowCount();
+ QModelIndexList const availSels =
+ availableLV->selectionModel()->selectedIndexes();
addPB->setEnabled(arows > 0 &&
- availableLV->currentIndex().isValid() &&
- !isSelected(availableLV->currentIndex()));
+ !availSels.isEmpty() &&
+ !isSelected(availSels.first()));
int const srows = selectedLV->model()->rowCount();
- int const sel_nr = selectedLV->currentIndex().row();
+ QModelIndexList const selSels =
+ selectedLV->selectionModel()->selectedIndexes();
+ int const sel_nr = selSels.empty() ? -1 : selSels.first().row();
deletePB->setEnabled(sel_nr >= 0);
upPB->setEnabled(sel_nr > 0);
downPB->setEnabled(sel_nr >= 0 && sel_nr < srows - 1);
- applyPB->setEnabled(srows > 0);
- okPB->setEnabled(srows > 0);
}
@@ -346,7 +348,6 @@
void QCitationDialog::on_selectedLV_clicked(const QModelIndex &)
{
- availableLV->selectionModel()->reset();
update();
}
@@ -355,15 +356,12 @@
{
if (!idx.isValid())
return;
-
- availableLV->selectionModel()->reset();
update();
}
void QCitationDialog::on_availableLV_clicked(const QModelIndex &)
{
- selectedLV->selectionModel()->reset();
update();
}
@@ -372,8 +370,6 @@
{
if (!idx.isValid())
return;
-
- selectedLV->selectionModel()->reset();
update();
}
@@ -382,17 +378,10 @@
{
if (isSelected(idx))
return;
-
- selectedLV->selectionModel()->reset();
on_addPB_clicked();
}
-void QCitationDialog::on_availableLV_entered(const QModelIndex &)
-{
-}
-
-
namespace {
//helper function for next two
QModelIndex getSelectedIndex(QListView * lv) {
@@ -416,7 +405,6 @@
form_->addKey(idxToAdd);
if (idx.isValid())
selectedLV->setCurrentIndex(idx);
- selectedLV->selectionModel()->reset();
update();
}
@@ -436,7 +424,6 @@
if (nrows>1)
selectedLV->setCurrentIndex(idx);
- availableLV->selectionModel()->reset();
update();
}
--
==================================================================
Richard G Heck, Jr
Professor of Philosophy
Brown University
http://frege.brown.edu/heck/
==================================================================
Get my public key from http://sks.keyserver.penguin.de
Hash: 0x1DE91F1E66FFBDEC
Learn how to sign your email using Thunderbird and GnuPG at:
http://dudu.dyn.2-h.org/nist/gpg-enigmail-howto