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

Reply via email to