InsetTabular::InsetTabular(Buffer const & buf, row_type rows,
col_type columns)
: tabular(buf.params(), max(rows, row_type(1)),
- max(columns, col_type(1))), buffer_(&buf), scx_(0)
+ max(columns, col_type(1)), buf.text().bv()), buffer_(&buf), scx_(0)
{}
maxCols = max(cols, maxCols);
paste_tabular.reset(
- new LyXTabular(cur.buffer().params(), rows, maxCols));
+ new LyXTabular(cur.buffer().params(), rows, maxCols, &cur.bv()));
string::size_type op = 0;
idx_type cell = 0;
row_type row = 0;
if (usePaste) {
paste_tabular.reset(
- new LyXTabular(bv.buffer()->params(), rows, maxCols));
+ new LyXTabular(bv.buffer()->params(), rows, maxCols, &bv));
loctab = paste_tabular.get();
cols = 0;
} else {
/// Define a few methods for the inner structs
-LyXTabular::cellstruct::cellstruct(BufferParams const & bp)
+LyXTabular::cellstruct::cellstruct(BufferParams const & bp,
+ BufferView const * bv)
: cellno(0),
width_of_cell(0),
multicolumn(LyXTabular::CELL_NORMAL),
usebox(BOX_NONE),
rotate(false),
inset(new InsetText(bp))
-{}
+{
+ inset->setViewCache(bv);
+}
LyXTabular::cellstruct::cellstruct(cellstruct const & cs)
LyXTabular::LyXTabular(BufferParams const & bp, row_type rows_arg,
- col_type columns_arg)
+ col_type columns_arg, BufferView const * bv)
{
- init(bp, rows_arg, columns_arg);
+ init(bp, rows_arg, columns_arg, bv);
}
// activates all lines and sets all widths to 0
void LyXTabular::init(BufferParams const & bp, row_type rows_arg,
- col_type columns_arg)
+ col_type columns_arg, BufferView const * bv)
{
rows_ = rows_arg;
columns_ = columns_arg;
row_info = row_vector(rows_);
column_info = column_vector(columns_);
- cell_info = cell_vvector(rows_, cell_vector(columns_, cellstruct(bp)));
+ cell_info = cell_vvector(rows_, cell_vector(columns_, cellstruct(bp, bv)));
row_info.reserve(10);
column_info.reserve(10);
cell_info.reserve(100);
void LyXTabular::appendRow(BufferParams const & bp, idx_type const cell)
{
+ BufferView const * const bv = getCellInset(0)->getText(0)->bv();
++rows_;
row_type const row = row_of_cell(cell);
for (row_type i = 0; i < rows_ - 1; ++i)
swap(cell_info[i], old[i]);
- cell_info = cell_vvector(rows_, cell_vector(columns_, cellstruct(bp)));
+ cell_info = cell_vvector(rows_, cell_vector(columns_, cellstruct(bp, bv)));
for (row_type i = 0; i <= row; ++i)
swap(cell_info[i], old[i]);
void LyXTabular::appendColumn(BufferParams const & bp, idx_type const cell)
{
+ BufferView const * const bv = getCellInset(0)->getText(0)->bv();
++columns_;
col_type const column = column_of_cell(cell);
column_info[column + 1] = column_info[column];
for (row_type i = 0; i < rows_; ++i) {
- cell_info[i].insert(cell_info[i].begin() + column + 1, cellstruct(bp));
+ cell_info[i].insert(cell_info[i].begin() + column + 1, cellstruct(bp, bv));
// care about multicolumns
if (cell_info[i][column + 1].multicolumn == CELL_BEGIN_OF_MULTICOLUMN)
int columns_arg;
if (!getTokenValue(line, "columns", columns_arg))
return;
- init(buf.params(), rows_arg, columns_arg);
+ init(buf.params(), rows_arg, columns_arg, buf.text().bv());
l_getline(is, line);
if (!prefixIs(line, "<features")) {
lyxerr << "Wrong tabular format (expected <features ...> got"
#include <iosfwd>
#include <vector>
+class BufferView;
class InsetTabular;
class LCursor;
class OutputParams;
/// constructor
LyXTabular(BufferParams const &, col_type columns_arg,
- row_type rows_arg);
+ row_type rows_arg, BufferView const *);
/// Returns true if there is a topline, returns false if not
bool topLine(idx_type cell, bool onlycolumn = false) const;
class cellstruct {
public:
///
- cellstruct(BufferParams const &);
+ cellstruct(BufferParams const &, BufferView const *);
///
cellstruct(cellstruct const &);
///
///
void init(BufferParams const &, row_type rows_arg,
- col_type columns_arg);
+ col_type columns_arg, BufferView const *);
///
void set_row_column_number_info();
/// Returns true if a complete update is necessary, otherwise false