commit 1d3b7e5085638f5a8a739cd3549a20a3ea687cf2
Author: Juergen Spitzmueller <[email protected]>
Date:   Mon May 11 11:35:02 2015 +0200

    Fix enabling/disabling in InsetParams derived dialogs (#9541)

diff --git a/src/frontends/qt4/FloatPlacement.cpp 
b/src/frontends/qt4/FloatPlacement.cpp
index d8fc52b..1f0e6e9 100644
--- a/src/frontends/qt4/FloatPlacement.cpp
+++ b/src/frontends/qt4/FloatPlacement.cpp
@@ -222,7 +222,7 @@ void FloatPlacement::changedSlot()
 }
 
 
-void FloatPlacement::checkAllowed()
+void FloatPlacement::checkAllowed() const
 {
        bool const defaults = defaultsCB->isChecked();
        bool const ignore = topCB->isChecked() || bottomCB->isChecked()
@@ -254,11 +254,14 @@ void FloatPlacement::checkAllowed()
 
 bool FloatPlacement::checkWidgets(bool readonly) const
 {
-       floatTypeCO->setEnabled(!readonly);
-       defaultsCB->setEnabled(!readonly);
-       options->setEnabled(!readonly);
-       spanCB->setEnabled(!readonly);
-       sidewaysCB->setEnabled(!readonly);
+       if (readonly) {
+               floatTypeCO->setEnabled(false);
+               defaultsCB->setEnabled(false);
+               options->setEnabled(false);
+               spanCB->setEnabled(false);
+               sidewaysCB->setEnabled(false);
+       } else
+               checkAllowed();
 
        return InsetParamsWidget::checkWidgets();
 }
diff --git a/src/frontends/qt4/FloatPlacement.h 
b/src/frontends/qt4/FloatPlacement.h
index 5aeecc2..a720a4e 100644
--- a/src/frontends/qt4/FloatPlacement.h
+++ b/src/frontends/qt4/FloatPlacement.h
@@ -54,7 +54,7 @@ private Q_SLOTS:
 
 private:
        ///
-       void checkAllowed();
+       void checkAllowed() const;
        ///
        std::string const get(bool & wide, bool & sideways) const;
        ///
diff --git a/src/frontends/qt4/GuiHSpace.cpp b/src/frontends/qt4/GuiHSpace.cpp
index a85037a..93de4bb 100644
--- a/src/frontends/qt4/GuiHSpace.cpp
+++ b/src/frontends/qt4/GuiHSpace.cpp
@@ -99,7 +99,7 @@ void GuiHSpace::changedSlot()
 }
 
 
-void GuiHSpace::enableWidgets()
+void GuiHSpace::enableWidgets() const
 {
        QString const selection = 
spacingCO->itemData(spacingCO->currentIndex()).toString();
        bool const custom = selection == "custom";
@@ -301,11 +301,17 @@ docstring GuiHSpace::dialogToParams() const
 
 bool GuiHSpace::checkWidgets(bool readonly) const
 {
-       spacingCO->setEnabled(!readonly);
-       unitCO->setEnabled(!readonly);
-       fillPatternCO->setEnabled(!readonly);
-       keepCB->setEnabled(!readonly);
        valueLE->setReadOnly(readonly);
+
+       if (readonly) {
+               spacingCO->setEnabled(false);
+               unitCO->setEnabled(false);
+               fillPatternCO->setEnabled(false);
+               keepCB->setEnabled(false);
+               valueLE->setEnabled(false);
+       } else
+               enableWidgets();
+
        if (!InsetParamsWidget::checkWidgets())
                return false;
        return spacingCO->itemData(spacingCO->currentIndex()).toString() != 
"custom"
diff --git a/src/frontends/qt4/GuiHSpace.h b/src/frontends/qt4/GuiHSpace.h
index cc1a80f..5b09d7a 100644
--- a/src/frontends/qt4/GuiHSpace.h
+++ b/src/frontends/qt4/GuiHSpace.h
@@ -29,7 +29,7 @@ private Q_SLOTS:
        ///
        void changedSlot();
        ///
-       void enableWidgets();
+       void enableWidgets() const;
 
 private:
        /// \name InsetParamsWidget inherited methods
diff --git a/src/frontends/qt4/GuiPrintNomencl.cpp 
b/src/frontends/qt4/GuiPrintNomencl.cpp
index 93e00e9..a70a9e0 100644
--- a/src/frontends/qt4/GuiPrintNomencl.cpp
+++ b/src/frontends/qt4/GuiPrintNomencl.cpp
@@ -53,13 +53,8 @@ GuiPrintNomencl::GuiPrintNomencl(QWidget * parent) : 
InsetParamsWidget(parent)
 }
 
 
-void GuiPrintNomencl::on_setWidthCO_activated(int i)
+void GuiPrintNomencl::on_setWidthCO_activated(int /*i*/)
 {
-       bool const custom =
-               (setWidthCO->itemData(i).toString() == "custom");
-       valueLE->setEnabled(custom);
-       unitLC->setEnabled(custom);
-       valueLA->setEnabled(custom);
        changed();
 }
 
@@ -68,15 +63,9 @@ void GuiPrintNomencl::paramsToDialog(InsetCommandParams 
const & params)
 {
        setWidthCO->setCurrentIndex(
                setWidthCO->findData(toqstr(params["set_width"])));
-       
+
        lengthToWidgets(valueLE, unitLC,
                        params["width"], Length::defaultUnit());
-
-       bool const custom =
-               (setWidthCO->itemData(setWidthCO->currentIndex()).toString() == 
"custom");
-       valueLE->setEnabled(custom);
-       unitLC->setEnabled(custom);
-       valueLA->setEnabled(custom);
 }
 
 
@@ -104,8 +93,18 @@ docstring GuiPrintNomencl::dialogToParams() const
 bool GuiPrintNomencl::checkWidgets(bool readonly) const
 {
        valueLE->setReadOnly(readonly);
-       setWidthCO->setEnabled(!readonly);
-       unitLC->setEnabled(!readonly);
+       if (readonly) {
+               setWidthCO->setEnabled(false);
+               unitLC->setEnabled(false);
+               valueLA->setEnabled(false);
+       } else {
+               bool const custom =
+                       
(setWidthCO->itemData(setWidthCO->currentIndex()).toString() == "custom");
+               valueLE->setEnabled(custom);
+               unitLC->setEnabled(custom);
+               valueLA->setEnabled(custom);
+       }
+
        if (!InsetParamsWidget::checkWidgets())
                return false;
        return setWidthCO->itemData(
diff --git a/src/frontends/qt4/GuiTabular.cpp b/src/frontends/qt4/GuiTabular.cpp
index 55c3eda..8f1118b 100644
--- a/src/frontends/qt4/GuiTabular.cpp
+++ b/src/frontends/qt4/GuiTabular.cpp
@@ -199,7 +199,7 @@ void GuiTabular::on_interlinespaceCO_activated(int index)
 }
 
 
-void GuiTabular::checkEnabled()
+void GuiTabular::enableWidgets() const
 {
        // if there is a LaTeX argument, the width and alignment will be 
overwritten
        // therefore disable them in this case
@@ -320,7 +320,12 @@ void GuiTabular::checkEnabled()
        multirowOffsetLA->setEnabled(enable_mr);
        multirowOffsetED->setEnabled(enable_mr);
        multirowOffsetUnitLC->setEnabled(enable_mr);
+}
 
+
+void GuiTabular::checkEnabled()
+{
+       enableWidgets();
        changed();
 }
 
@@ -1016,37 +1021,41 @@ bool GuiTabular::checkWidgets(bool readonly) const
 {
        tabularRowED->setReadOnly(readonly);
        tabularColumnED->setReadOnly(readonly);
-       multicolumnCB->setEnabled(!readonly);
-       multirowCB->setEnabled(!readonly);
-       specialAlignmentED->setReadOnly(readonly);
-       rotateCellCB->setEnabled(!readonly);
-       rotateCellAngleSB->setEnabled(!readonly);
-       rotateTabularCB->setEnabled(!readonly);
-       rotateTabularAngleSB->setEnabled(!readonly);
-       longTabularCB->setEnabled(!readonly);
-       borders->setEnabled(!readonly);
        tabularWidthED->setReadOnly(readonly);
-       tabularWidthUnitLC->setEnabled(!readonly);
+       specialAlignmentED->setReadOnly(readonly);
        columnWidthED->setReadOnly(readonly);
-       columnWidthUnitLC->setEnabled(!readonly);
        multirowOffsetED->setReadOnly(readonly);
-       multirowOffsetUnitLC->setEnabled(!readonly);
-       setBordersGB->setEnabled(!readonly);
-       allBordersGB->setEnabled(!readonly);
-       borderStyleGB->setEnabled(!readonly);
-       booktabsRB->setEnabled(!readonly);
-       topspaceCO->setEnabled(!readonly);
-       topspaceUnitLC->setEnabled(!readonly);
-       bottomspaceCO->setEnabled(!readonly);
-       bottomspaceUnitLC->setEnabled(!readonly);
-       interlinespaceCO->setEnabled(!readonly);
-       interlinespaceUnitLC->setEnabled(!readonly);
-       hAlignCO->setEnabled(!readonly);
        decimalPointED->setReadOnly(readonly);
-       vAlignCO->setEnabled(!readonly);
-       TableAlignCO->setEnabled(!readonly);
-       longtableGB->setEnabled(!readonly);
-       alignmentGB->setEnabled(!readonly);
+
+       if (readonly) {
+               multicolumnCB->setEnabled(false);
+               multirowCB->setEnabled(false);
+               rotateCellCB->setEnabled(false);
+               rotateCellAngleSB->setEnabled(false);
+               rotateTabularCB->setEnabled(false);
+               rotateTabularAngleSB->setEnabled(false);
+               longTabularCB->setEnabled(false);
+               borders->setEnabled(false);
+               tabularWidthUnitLC->setEnabled(false);
+               columnWidthUnitLC->setEnabled(false);
+               multirowOffsetUnitLC->setEnabled(false);
+               setBordersGB->setEnabled(false);
+               allBordersGB->setEnabled(false);
+               borderStyleGB->setEnabled(false);
+               booktabsRB->setEnabled(false);
+               topspaceCO->setEnabled(false);
+               topspaceUnitLC->setEnabled(false);
+               bottomspaceCO->setEnabled(false);
+               bottomspaceUnitLC->setEnabled(false);
+               interlinespaceCO->setEnabled(false);
+               interlinespaceUnitLC->setEnabled(false);
+               hAlignCO->setEnabled(false);
+               vAlignCO->setEnabled(false);
+               TableAlignCO->setEnabled(false);
+               longtableGB->setEnabled(false);
+               alignmentGB->setEnabled(false);
+       } else
+               enableWidgets();
 
        return InsetParamsWidget::checkWidgets();
 }
diff --git a/src/frontends/qt4/GuiTabular.h b/src/frontends/qt4/GuiTabular.h
index a354a4a..c19e066 100644
--- a/src/frontends/qt4/GuiTabular.h
+++ b/src/frontends/qt4/GuiTabular.h
@@ -48,6 +48,8 @@ private:
        //@}
 
        ///
+       void enableWidgets() const;
+       ///
        void setHAlign(std::string & param_str) const;
        ///
        void setVAlign(std::string & param_str) const;
diff --git a/src/frontends/qt4/GuiVSpace.cpp b/src/frontends/qt4/GuiVSpace.cpp
index 3756b15..4ac4c69 100644
--- a/src/frontends/qt4/GuiVSpace.cpp
+++ b/src/frontends/qt4/GuiVSpace.cpp
@@ -150,10 +150,18 @@ void GuiVSpace::paramsToDialog(Inset const * inset)
 bool GuiVSpace::checkWidgets(bool readonly) const
 {
        valueLE->setReadOnly(readonly);
-       spacingCO->setEnabled(!readonly);
-       unitCO->setEnabled(!readonly);
        keepCB->setEnabled(!readonly);
 
+       if (readonly) {
+               spacingCO->setEnabled(false);
+               unitCO->setEnabled(false);
+       } else {
+               bool const enable = (spacingCO->currentIndex() == 5);
+               valueLE->setEnabled(enable);
+               valueL->setEnabled(enable);
+               unitCO->setEnabled(enable);
+       }
+
        return InsetParamsWidget::checkWidgets();
 }
 

Reply via email to