* \author John Levon
* \author André Pönitz
* \author Jürgen Vigna
+ * \author Uwe Stöhr
*
* Full author contact details are available in file CREDITS.
*/
#include "LyXRC.h"
#include "MetricsInfo.h"
#include "OutputParams.h"
-#include "paragraph_funcs.h"
#include "Paragraph.h"
#include "ParagraphParameters.h"
#include "ParIterator.h"
p_width(cs.p_width),
inset(dynamic_cast<InsetTableCell *>(cs.inset->clone()))
{
+ inset->setBuffer(cs.inset->buffer());
}
Tabular::CellData & Tabular::CellData::operator=(CellData cs)
// reset layout
cur.push(*inset);
// undo information has already been recorded
- inset->getText(0)->setLayout(cur.bv().buffer(), 0, cur.lastpit() + 1,
+ inset->getText(0)->setLayout(0, cur.lastpit() + 1,
bp.documentClass().plainLayoutName());
cur.pop();
}
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)
<< 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)
setRightLine(i, false);
} else {
unsetMultiColumn(i);
- // FIXME: when unsetting a caption row, also all existing captions
- // in this row must be dissolved, see (bug 5754)
- // dispatch(FuncRequest(LFUN_INSET_DISSOLVE, "caption-insert"));
+ // When unsetting a caption row, also all existing
+ // captions in this row must be dissolved.
+ lyx::dispatch(FuncRequest(LFUN_INSET_BEGIN));
+ lyx::dispatch(FuncRequest(LFUN_INSET_DISSOLVE, "caption"));
}
row_info[row].caption = what;
return i;
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) {
}
++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";
}
-docstring InsetTabular::editMessage() const
-{
- return _("Opened table");
-}
-
-
void InsetTabular::edit(Cursor & cur, bool front, EntryDirection)
{
//lyxerr << "InsetTabular::edit: " << this << endl;
&& cur.pos() == cur.lastpos())
|| (!next_cell && cur.pit() == 0 && cur.pos() == 0));
+ bool const empty_cell = cur.lastpos() == 0 && cur.lastpit() == 0;
+
// ...try to dispatch to the cell's inset.
cell(cur.idx())->dispatch(cur, cmd);
- bool const empty_cell = cur.lastpos() == 0 && cur.lastpit() == 0;
-
// When we already have a selection we want to select the whole cell
// before going to the next cell.
if (select_whole && !empty_cell){
if (cur.selIsMultiCell()) {
cur.recordUndoInset(DELETE_UNDO);
cutSelection(cur);
- }
- else
+ } else
cell(cur.idx())->dispatch(cur, cmd);
break;
}
-void InsetTabular::acceptChanges(BufferParams const & bparams)
+void InsetTabular::acceptChanges()
{
for (idx_type idx = 0; idx < nargs(); ++idx)
- cell(idx)->acceptChanges(bparams);
+ cell(idx)->acceptChanges();
}
-void InsetTabular::rejectChanges(BufferParams const & bparams)
+void InsetTabular::rejectChanges()
{
for (idx_type idx = 0; idx < nargs(); ++idx)
- cell(idx)->rejectChanges(bparams);
+ cell(idx)->rejectChanges();
}