]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetTabular.cpp
revert r30531, which causes a crash when copying an inset.
[lyx.git] / src / insets / InsetTabular.cpp
index 3511dd4693fc1c9f94bcf1533274925c8b551d28..e3611d638b1c2772d1a43e84f640f6fefc1ab6f7 100644 (file)
@@ -11,6 +11,7 @@
  * \author John Levon
  * \author André Pönitz
  * \author Jürgen Vigna
+ * \author Uwe Stöhr
  *
  * Full author contact details are available in file CREDITS.
  */
@@ -1326,14 +1327,8 @@ void Tabular::write(ostream & os) const
        os << "<features"
           << write_attribute("rotate", rotate)
           << write_attribute("booktabs", use_booktabs)
-          << write_attribute("islongtable", is_long_tabular);
-       // longtables cannot be aligned vertically
-       if (!is_long_tabular)
-          os << write_attribute("tabularvalignment", tabular_valignment);
-       if (is_long_tabular)
-          os << write_attribute("longtabularalignment",
-                                longtabular_alignment);
-       os << write_attribute("firstHeadTopDL", endfirsthead.topDL)
+          << write_attribute("islongtable", is_long_tabular)
+          << write_attribute("firstHeadTopDL", endfirsthead.topDL)
           << write_attribute("firstHeadBottomDL", endfirsthead.bottomDL)
           << write_attribute("firstHeadEmpty", endfirsthead.empty)
           << write_attribute("headTopDL", endhead.topDL)
@@ -1342,8 +1337,14 @@ void Tabular::write(ostream & os) const
           << write_attribute("footBottomDL", endfoot.bottomDL)
           << write_attribute("lastFootTopDL", endlastfoot.topDL)
           << write_attribute("lastFootBottomDL", endlastfoot.bottomDL)
-          << write_attribute("lastFootEmpty", endlastfoot.empty)
-          << ">\n";
+          << write_attribute("lastFootEmpty", endlastfoot.empty);
+       // longtables cannot be aligned vertically
+       if (!is_long_tabular)
+          os << write_attribute("tabularvalignment", tabular_valignment);
+       if (is_long_tabular)
+          os << write_attribute("longtabularalignment",
+                                longtabular_alignment);
+       os << ">\n";
        for (col_type j = 0; j < column_info.size(); ++j) {
                os << "<column"
                   << write_attribute("alignment", column_info[j].alignment)
@@ -2132,7 +2133,7 @@ int Tabular::TeXLongtableHeaderFooter(odocstream & os,
 
        int ret = 0;
        // caption handling
-       // the caption must be output befrore the headers
+       // the caption must be output before the headers
        if (haveLTCaption()) {
                for (row_type i = 0; i < row_info.size(); ++i) {
                        if (row_info[i].caption) {
@@ -2307,7 +2308,13 @@ int Tabular::TeXRow(odocstream & os, row_type i,
                }
                ++cell;
        }
-       os << "\\tabularnewline";
+       if (row_info[i].caption && !endfirsthead.empty && !haveLTFirstHead())
+               // if no first header and no empty first header is used,
+               // the caption needs to be terminated by \endfirsthead
+               // (bug 6057)
+               os << "\\endfirsthead";
+       else
+               os << "\\tabularnewline";
        if (row_info[i].bottom_space_default) {
                if (use_booktabs)
                        os << "\\addlinespace";
@@ -3288,12 +3295,6 @@ void InsetTabular::drawCellLines(Painter & pain, int x, int y,
 }
 
 
-docstring InsetTabular::editMessage() const
-{
-       return _("Opened table");
-}
-
-
 void InsetTabular::edit(Cursor & cur, bool front, EntryDirection)
 {
        //lyxerr << "InsetTabular::edit: " << this << endl;
@@ -3703,8 +3704,7 @@ void InsetTabular::doDispatch(Cursor & cur, FuncRequest & cmd)
                if (cur.selIsMultiCell()) {
                        cur.recordUndoInset(DELETE_UNDO);
                        cutSelection(cur);
-               }
-               else
+               } else
                        cell(cur.idx())->dispatch(cur, cmd);
                break;