unsetMultiColumn(i);
// When unsetting a caption row, also all existing
// captions in this row must be dissolved.
- lyx::dispatch(FuncRequest(LFUN_LINE_BEGIN));
- lyx::dispatch(FuncRequest(LFUN_INSET_DISSOLVE, "caption"));
}
row_info[row].caption = what;
return i;
}
-void InsetTabular::updateLabels(ParIterator const & it)
+void InsetTabular::updateLabels(ParIterator const & it, bool out)
{
// In a longtable, tell captions what the current float is
Counters & cnts = buffer().masterBuffer()->params().documentClass().counters();
it2.forwardPos();
size_t const end = it2.nargs();
for ( ; it2.idx() < end; it2.top().forwardIdx())
- buffer().updateLabels(it2);
+ buffer().updateLabels(it2, out);
//reset afterwards
if (tabular.is_long_tabular)
break;
case Tabular::UNSET_LONGTABULAR:
+ for (row_type i = 0; i < tabular.row_info.size(); ++i) {
+ if (tabular.ltCaption(i)) {
+ cur.idx() = tabular.cellIndex(i, 0);
+ cur.pit() = 0;
+ cur.pos() = 0;
+ tabularFeatures(cur, Tabular::TOGGLE_LTCAPTION);
+ }
+ }
tabular.is_long_tabular = false;
break;
break;
case Tabular::TOGGLE_LTCAPTION: {
- bool set = !tabular.ltCaption(row);
+ bool const set = !tabular.ltCaption(row);
cur.idx() = tabular.setLTCaption(row, set);
cur.pit() = 0;
cur.pos() = 0;
cur.setSelection(false);
- // When a row is set as caption, then also insert a caption. Otherwise
- // the LaTeX output is broken, when the user doesn't add a caption.
- if (set)
+
+ if (set) {
+ // When a row is set as caption, then also insert
+ // a caption. Otherwise the LaTeX output is broken.
+ lyx::dispatch(FuncRequest(LFUN_INSET_SELECT_ALL));
lyx::dispatch(FuncRequest(LFUN_CAPTION_INSERT));
+ } else {
+ FuncRequest fr(LFUN_INSET_DISSOLVE, "caption");
+ if (lyx::getStatus(fr).enabled())
+ lyx::dispatch(fr);
+ }
break;
}
}
-void InsetTabular::addPreview(PreviewLoader & loader) const
+void InsetTabular::addPreview(DocIterator const & inset_pos,
+ PreviewLoader & loader) const
{
row_type const rows = tabular.row_info.size();
col_type const columns = tabular.column_info.size();
+ DocIterator cell_pos = inset_pos;
+
+ cell_pos.push_back(CursorSlice(*const_cast<InsetTabular *>(this)));
for (row_type i = 0; i < rows; ++i) {
- for (col_type j = 0; j < columns; ++j)
- tabular.cellInset(i, j)->addPreview(loader);
+ for (col_type j = 0; j < columns; ++j) {
+ cell_pos.top().idx() = tabular.cellIndex(i, j);
+ tabular.cellInset(i, j)->addPreview(cell_pos, loader);
+ }
}
}