]> git.lyx.org Git - features.git/commitdiff
Ensure that head/foot cannot be unset as long is the row is a caption
authorGeorg Baum <georg.baum@post.rwth-aachen.de>
Mon, 19 Dec 2011 21:28:11 +0000 (21:28 +0000)
committerGeorg Baum <georg.baum@post.rwth-aachen.de>
Mon, 19 Dec 2011 21:28:11 +0000 (21:28 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40527 a592a061-630c-0410-9148-cb99ea01b6c8

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

index bb01c3bd2407d05835e385ab23a53a42fb730714..7a197231f93c087a73052f2f81cb119a9be7eb38 100644 (file)
@@ -247,7 +247,10 @@ void GuiTabular::checkEnabled()
        // depending on the cursor position is very very unintuitive...
        // We need some edit boxes to show which rows are header/footer/etc
        // without having to move the cursor first.
-       headerStatusCB->setEnabled(longtabular);
+       headerStatusCB->setEnabled(longtabular
+               && (headerStatusCB->isChecked() ?
+                   funcEnabled(Tabular::UNSET_LTHEAD) :
+                   funcEnabled(Tabular::SET_LTHEAD)));
        headerBorderAboveCB->setEnabled(longtabular
                && headerStatusCB->isChecked());
        headerBorderBelowCB->setEnabled(longtabular
@@ -259,14 +262,19 @@ void GuiTabular::checkEnabled()
        // check if setting a first header is allowed
        // additionally check firstheaderNoContentsCB because when this is
        // the case a first header makes no sense
-       firstheaderStatusCB->setEnabled(funcEnabled(Tabular::SET_LTFIRSTHEAD)
+       firstheaderStatusCB->setEnabled((firstheaderStatusCB->isChecked() ?
+                  funcEnabled(Tabular::UNSET_LTFIRSTHEAD) :
+                  funcEnabled(Tabular::SET_LTFIRSTHEAD))
                && longtabular && !firstheaderNoContentsCB->isChecked());
        firstheaderBorderAboveCB->setEnabled(longtabular
                && firstheaderStatusCB->isChecked());
        firstheaderBorderBelowCB->setEnabled(longtabular
                && firstheaderStatusCB->isChecked());
 
-       footerStatusCB->setEnabled(longtabular);
+       footerStatusCB->setEnabled(longtabular
+               && (footerStatusCB->isChecked() ?
+                   funcEnabled(Tabular::UNSET_LTFOOT) :
+                   funcEnabled(Tabular::SET_LTFOOT)));
        footerBorderAboveCB->setEnabled(longtabular
                && footerBorderAboveCB->isChecked());
        footerBorderBelowCB->setEnabled(longtabular
@@ -278,7 +286,9 @@ void GuiTabular::checkEnabled()
        // check if setting a last footer is allowed
        // additionally check lastfooterNoContentsCB because when this is
        // the case a last footer makes no sense
-       lastfooterStatusCB->setEnabled(funcEnabled(Tabular::SET_LTLASTFOOT)
+       lastfooterStatusCB->setEnabled((lastfooterStatusCB->isChecked() ?
+                  funcEnabled(Tabular::UNSET_LTLASTFOOT) :
+                  funcEnabled(Tabular::SET_LTLASTFOOT))
                && longtabular && !lastfooterNoContentsCB->isChecked());
        lastfooterBorderAboveCB->setEnabled(longtabular
                && lastfooterBorderAboveCB->isChecked());
index 01ee12c516513731fb0d65f5fecd49d49e046bd7..dca6a18c3d021f92c48e63c5d2c5283a2adb7de9 100644 (file)
@@ -4610,6 +4610,7 @@ bool InsetTabular::getStatus(Cursor & cur, FuncRequest const & cmd,
                        break;
 
                case Tabular::UNSET_LTFIRSTHEAD:
+                       status.setEnabled(sel_row_start == sel_row_end && !tabular.ltCaption(sel_row_start));
                        status.setOnOff(!tabular.getRowOfLTFirstHead(sel_row_start, dummyltt));
                        break;
 
@@ -4619,6 +4620,7 @@ bool InsetTabular::getStatus(Cursor & cur, FuncRequest const & cmd,
                        break;
 
                case Tabular::UNSET_LTHEAD:
+                       status.setEnabled(sel_row_start == sel_row_end && !tabular.ltCaption(sel_row_start));
                        status.setOnOff(!tabular.getRowOfLTHead(sel_row_start, dummyltt));
                        break;
 
@@ -4628,6 +4630,7 @@ bool InsetTabular::getStatus(Cursor & cur, FuncRequest const & cmd,
                        break;
 
                case Tabular::UNSET_LTFOOT:
+                       status.setEnabled(sel_row_start == sel_row_end && !tabular.ltCaption(sel_row_start));
                        status.setOnOff(!tabular.getRowOfLTFoot(sel_row_start, dummyltt));
                        break;
 
@@ -4637,6 +4640,7 @@ bool InsetTabular::getStatus(Cursor & cur, FuncRequest const & cmd,
                        break;
 
                case Tabular::UNSET_LTLASTFOOT:
+                       status.setEnabled(sel_row_start == sel_row_end && !tabular.ltCaption(sel_row_start));
                        status.setOnOff(!tabular.getRowOfLTLastFoot(sel_row_start, dummyltt));
                        break;