]> git.lyx.org Git - features.git/commitdiff
Fix UI for decimal table alignment (bug #8285)
authorUwe Stöhr <uwestoehr@lyx.org>
Tue, 11 Sep 2012 00:10:29 +0000 (02:10 +0200)
committerUwe Stöhr <uwestoehr@lyx.org>
Tue, 11 Sep 2012 00:10:29 +0000 (02:10 +0200)
Fixes 2 issues:
1. LyX uses for a decimal alignment a multicolumn and having for a cell a multicolumn _and_ a multirow is invalid LaTeX.
2. It was impossible to unset a decimal alignment via the context menu or toolbar button.

src/frontends/qt4/GuiTabular.cpp
src/insets/InsetTabular.cpp

index 79706d41c5c01cdd41acfcded4118884bf90ce56..ee4d1dfe7bb1d591aabee514c0e3d9934bd90b76 100644 (file)
@@ -209,6 +209,13 @@ void GuiTabular::checkEnabled()
        hAlignCO->setEnabled(!(multirowCB->isChecked()
                && !widgetsToLength(columnWidthED, columnWidthUnitLC).empty())
                && specialAlignmentED->text().isEmpty());
+       // decimal alignment is only possible for non-multicol and non-multirow cells
+       if ((multicolumnCB->isChecked() || multirowCB->isChecked())
+               && hAlignCO->findText(qt_("At Decimal Separator")))
+               hAlignCO->removeItem(3);
+       else if (!multicolumnCB->isChecked() && !multirowCB->isChecked()
+               && !hAlignCO->findText(qt_("At Decimal Separator")))
+               hAlignCO->addItem(qt_("At Decimal Separator"), toqstr("decimal"));
        bool const dalign = 
                hAlignCO->itemData(hAlignCO->currentIndex()).toString() == QString("decimal");
        decimalPointED->setEnabled(dalign);
@@ -304,8 +311,8 @@ void GuiTabular::checkEnabled()
        captionStatusCB->setEnabled(funcEnabled(Tabular::TOGGLE_LTCAPTION)
                && longtabular);
 
-       multicolumnCB->setEnabled(funcEnabled(Tabular::MULTICOLUMN));
-       multirowCB->setEnabled(funcEnabled(Tabular::MULTIROW));
+       multicolumnCB->setEnabled(funcEnabled(Tabular::MULTICOLUMN) && !dalign);
+       multirowCB->setEnabled(funcEnabled(Tabular::MULTIROW) && !dalign);
        bool const enable_mr = multirowCB->isChecked();
        multirowOffsetLA->setEnabled(enable_mr);
        multirowOffsetED->setEnabled(enable_mr);
@@ -824,7 +831,7 @@ void GuiTabular::paramsToDialog(Inset const * inset)
        hAlignCO->addItem(qt_("Right"), toqstr("right"));
        if (!multicol && !pwidth.zero())
                hAlignCO->addItem(qt_("Justified"), toqstr("justified"));
-       if (!multicol)
+       if (!multicol && !multirow)
                hAlignCO->addItem(qt_("At Decimal Separator"), toqstr("decimal"));
 
        string align;
@@ -846,7 +853,7 @@ void GuiTabular::paramsToDialog(Inset const * inset)
                }
                case LYX_ALIGN_DECIMAL:
                {
-                       if (!multicol)
+                       if (!multicol && !multirow)
                                align = "decimal";
                        break;
                }
index 58505cc45cc0067071b92d26c602873bd466f0cb..d96de8fa360f678b5181189f04e29ad498bcf15d 100644 (file)
@@ -5234,7 +5234,10 @@ void InsetTabular::tabularFeatures(Cursor & cur,
                break;
 
        case Tabular::ALIGN_DECIMAL:
-               setAlign = LYX_ALIGN_DECIMAL;
+               if (tabular.column_info[tabular.cellColumn(cur.idx())].alignment == LYX_ALIGN_DECIMAL)
+                       setAlign = LYX_ALIGN_LEFT;
+               else
+                       setAlign = LYX_ALIGN_DECIMAL;
                break;
 
        case Tabular::M_VALIGN_TOP: