]> git.lyx.org Git - features.git/commitdiff
Fix issues with xref dialog in read-only documents (#8177)
authorJuergen Spitzmueller <spitz@lyx.org>
Sat, 29 Sep 2012 14:12:31 +0000 (16:12 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Sat, 29 Sep 2012 14:12:31 +0000 (16:12 +0200)
src/frontends/qt4/GuiRef.cpp
src/frontends/qt4/GuiRef.h

index 5082daa2667023ff9fe9595372bd0403ce2cd776..c79dcb913949198997d81c9a408fc7d5ef6ae716 100644 (file)
@@ -48,14 +48,6 @@ GuiRef::GuiRef(GuiView & lv)
 
        at_ref_ = false;
 
-       // Enabling is set in updateRefs. Disable for now in case no
-       // call to updateContents follows (e.g. read-only documents).
-       sortCB->setEnabled(false);
-       caseSensitiveCB->setEnabled(false);
-       caseSensitiveCB->setChecked(false);
-       refsTW->setEnabled(false);
-       gotoPB->setEnabled(false);
-
        refsTW->setColumnCount(1);
        refsTW->header()->setVisible(false);
 
@@ -98,19 +90,22 @@ GuiRef::GuiRef(GuiView & lv)
        bc().setOK(okPB);
        bc().setApply(applyPB);
        bc().setCancel(closePB);
-       bc().addReadOnly(refsTW);
-       bc().addReadOnly(sortCB);
-       bc().addReadOnly(caseSensitiveCB);
-       bc().addReadOnly(nameED);
-       bc().addReadOnly(referenceED);
        bc().addReadOnly(typeCO);
-       bc().addReadOnly(bufferCO);
 
        restored_buffer_ = -1;
        active_buffer_ = -1;
 }
 
 
+void GuiRef::enableView(bool enable)
+{
+       if (!enable)
+               // In the opposite case, updateContents() will be called anyway.
+               updateContents();
+       GuiDialog::enableView(enable);
+}
+
+
 void GuiRef::changed_adaptor()
 {
        changed();
@@ -139,9 +134,6 @@ void GuiRef::selectionChanged()
 
 void GuiRef::refHighlighted(QTreeWidgetItem * sel)
 {
-       if (isBufferReadonly())
-               return;
-
        if (sel->childCount() > 0) {
                sel->setExpanded(true);
                return;
@@ -158,7 +150,7 @@ void GuiRef::refHighlighted(QTreeWidgetItem * sel)
        if (at_ref_)
                gotoRef();
        gotoPB->setEnabled(true);
-       if (typeAllowed())
+       if (typeAllowed() && !isBufferReadonly())
                typeCO->setEnabled(true);
        nameED->setHidden(!nameAllowed());
        nameL->setHidden(!nameAllowed());
@@ -235,11 +227,13 @@ void GuiRef::updateContents()
 {
        int orig_type = typeCO->currentIndex();
 
-       referenceED->setText(toqstr(params_["reference"]));
+       referenceED->clear();
+       nameED->clear();
 
+       referenceED->setText(toqstr(params_["reference"]));
        nameED->setText(toqstr(params_["name"]));
-       nameED->setHidden(!nameAllowed() && !isBufferReadonly());
-       nameL->setHidden(!nameAllowed() && !isBufferReadonly());
+       nameED->setHidden(!nameAllowed());
+       nameL->setHidden(!nameAllowed());
 
        // restore type settings for new insets
        if (params_["reference"].empty())
@@ -449,7 +443,7 @@ void GuiRef::updateRefs()
                FileName const & name = theBufferList().fileNames()[the_buffer];
                Buffer const * buf = theBufferList().getBuffer(name);
                buf->getLabelList(refs_);
-       }       
+       }
        sortCB->setEnabled(!refs_.empty());
        caseSensitiveCB->setEnabled(sortCB->isEnabled() && sortCB->isChecked());
        refsTW->setEnabled(!refs_.empty());
index e240d0e939e36f6935835d6ab27cc34f22869f01..250d407645336a1d82eefc94a794881eabfcea5c 100644 (file)
@@ -30,6 +30,10 @@ class GuiRef : public GuiDialog, public Ui::RefUi
 
 public:
        GuiRef(GuiView & lv);
+       /// Dialog inherited methods
+       //@{
+       void enableView(bool enable);
+       //@}
 
 private Q_SLOTS:
        void changed_adaptor();