]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt/GuiVSpace.cpp
Make string-widget combination more l7n friendly
[lyx.git] / src / frontends / qt / GuiVSpace.cpp
index 6eec95846bcf2000eb67ff4e900f03b7868f042e..7163634441e7e56b1f49901d2909be0c57b8846c 100644 (file)
@@ -66,7 +66,7 @@ GuiVSpace::GuiVSpace(QWidget * parent) : InsetParamsWidget(parent)
 
 void GuiVSpace::enableCustom(int selection)
 {
-       bool const enable = selection == 5;
+       bool const enable = selection == 7;
        valueLE->setEnabled(enable);
        if (enable)
                valueLE->setFocus();
@@ -84,12 +84,30 @@ static void setWidgetsFromVSpace(VSpace const & space,
 {
        int item = 0;
        switch (space.kind()) {
-               case VSpace::DEFSKIP:   item = 0; break;
-               case VSpace::SMALLSKIP: item = 1; break;
-               case VSpace::MEDSKIP:   item = 2; break;
-               case VSpace::BIGSKIP:   item = 3; break;
-               case VSpace::VFILL:     item = 4; break;
-               case VSpace::LENGTH:    item = 5; break;
+               case VSpace::DEFSKIP:
+                       item = 0;
+                       break;
+               case VSpace::SMALLSKIP:
+                       item = 1;
+                       break;
+               case VSpace::MEDSKIP:
+                       item = 2;
+                       break;
+               case VSpace::BIGSKIP:
+                       item = 3;
+                       break;
+               case VSpace::HALFLINE:
+                       item = 4;
+                       break;
+               case VSpace::FULLLINE:
+                       item = 5;
+                       break;
+               case VSpace::VFILL:
+                       item = 6;
+                       break;
+               case VSpace::LENGTH:
+                       item = 7;
+                       break;
        }
        spacing->setCurrentIndex(item);
        keep->setChecked(space.keep());
@@ -115,12 +133,30 @@ static VSpace setVSpaceFromWidgets(int spacing,
        VSpace space;
 
        switch (spacing) {
-               case 0: space = VSpace(VSpace::DEFSKIP); break;
-               case 1: space = VSpace(VSpace::SMALLSKIP); break;
-               case 2: space = VSpace(VSpace::MEDSKIP); break;
-               case 3: space = VSpace(VSpace::BIGSKIP); break;
-               case 4: space = VSpace(VSpace::VFILL); break;
-               case 5: space = VSpace(GlueLength(widgetsToLength(value, unit))); break;
+               case 0:
+                       space = VSpace(VSpace::DEFSKIP);
+                       break;
+               case 1:
+                       space = VSpace(VSpace::SMALLSKIP);
+                       break;
+               case 2:
+                       space = VSpace(VSpace::MEDSKIP);
+                       break;
+               case 3:
+                       space = VSpace(VSpace::BIGSKIP);
+                       break;
+               case 4:
+                       space = VSpace(VSpace::HALFLINE);
+                       break;
+               case 5:
+                       space = VSpace(VSpace::FULLLINE);
+                       break;
+               case 6:
+                       space = VSpace(VSpace::VFILL);
+                       break;
+               case 7:
+                       space = VSpace(GlueLength(widgetsToLength(value, unit)));
+                       break;
        }
 
        space.setKeep(keep);
@@ -132,7 +168,7 @@ docstring GuiVSpace::dialogToParams() const
 {
        // If a vspace choice is "Length" but there's no text in
        // the input field, do not insert a vspace at all.
-       if (spacingCO->currentIndex() == 5 && valueLE->text().isEmpty())
+       if (spacingCO->currentIndex() == 7 && valueLE->text().isEmpty())
                return docstring();
 
        VSpace const params = setVSpaceFromWidgets(spacingCO->currentIndex(),
@@ -152,18 +188,19 @@ void GuiVSpace::paramsToDialog(Inset const * inset)
 
 bool GuiVSpace::checkWidgets(bool readonly) const
 {
-       valueLE->setReadOnly(readonly);
        keepCB->setEnabled(!readonly);
+       keepL->setEnabled(!readonly);
+       spacingCO->setEnabled(!readonly);
+       spacingL->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);
-       }
+       valueLE->setReadOnly(readonly);
+
+       bool const enable_custom =
+               !readonly && (spacingCO->currentIndex() == 7);
+
+       valueL->setEnabled(enable_custom);
+       valueLE->setEnabled(enable_custom);
+       unitCO->setEnabled(enable_custom);
 
        return InsetParamsWidget::checkWidgets();
 }