From a7ec02ea03f7a24a5e2ffff828e3de44b2d57caf Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Wed, 29 Mar 2006 10:13:40 +0000 Subject: [PATCH] revert my faulty fix of bug 2380 and use one by Jean-Marc instead: * insets/insettabular.C (InsetTabular::insertAsciiString): set BufferView cache of cell git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13524 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/insettabular.C | 9 ++++++--- src/tabular.C | 23 +++++++++-------------- src/tabular.h | 7 +++---- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/insets/insettabular.C b/src/insets/insettabular.C index af9ee9ffea..ed94b67f96 100644 --- a/src/insets/insettabular.C +++ b/src/insets/insettabular.C @@ -168,7 +168,7 @@ bool InsetTabular::hasPasteBuffer() const InsetTabular::InsetTabular(Buffer const & buf, row_type rows, col_type columns) : tabular(buf.params(), max(rows, row_type(1)), - max(columns, col_type(1)), buf.text().bv()), buffer_(&buf), scx_(0) + max(columns, col_type(1))), buffer_(&buf), scx_(0) {} @@ -692,7 +692,7 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd) maxCols = max(cols, maxCols); paste_tabular.reset( - new LyXTabular(cur.buffer().params(), rows, maxCols, &cur.bv())); + new LyXTabular(cur.buffer().params(), rows, maxCols)); string::size_type op = 0; idx_type cell = 0; @@ -1885,7 +1885,7 @@ bool InsetTabular::insertAsciiString(BufferView & bv, string const & buf, row_type row = 0; if (usePaste) { paste_tabular.reset( - new LyXTabular(bv.buffer()->params(), rows, maxCols, &bv)); + new LyXTabular(bv.buffer()->params(), rows, maxCols)); loctab = paste_tabular.get(); cols = 0; dirtyTabularStack(true); @@ -1913,6 +1913,7 @@ bool InsetTabular::insertAsciiString(BufferView & bv, string const & buf, // we can only set this if we are not too far right if (cols < columns) { shared_ptr inset = loctab->getCellInset(cell); + inset->setViewCache(&bv); Paragraph & par = inset->text_.getPar(0); LyXFont const font = inset->text_.getFont(par, 0); inset->setText(buf.substr(op, p - op), font); @@ -1924,6 +1925,7 @@ bool InsetTabular::insertAsciiString(BufferView & bv, string const & buf, // we can only set this if we are not too far right if (cols < columns) { shared_ptr inset = tabular.getCellInset(cell); + inset->setViewCache(&bv); Paragraph & par = inset->text_.getPar(0); LyXFont const font = inset->text_.getFont(par, 0); inset->setText(buf.substr(op, p - op), font); @@ -1940,6 +1942,7 @@ bool InsetTabular::insertAsciiString(BufferView & bv, string const & buf, // check for the last cell if there is no trailing '\n' if (cell < cells && op < len) { shared_ptr inset = loctab->getCellInset(cell); + inset->setViewCache(&bv); Paragraph & par = inset->text_.getPar(0); LyXFont const font = inset->text_.getFont(par, 0); inset->setText(buf.substr(op, len - op), font); diff --git a/src/tabular.C b/src/tabular.C index 055b390321..212431cbb8 100644 --- a/src/tabular.C +++ b/src/tabular.C @@ -313,8 +313,7 @@ void l_getline(istream & is, string & str) /// Define a few methods for the inner structs -LyXTabular::cellstruct::cellstruct(BufferParams const & bp, - BufferView const * bv) +LyXTabular::cellstruct::cellstruct(BufferParams const & bp) : cellno(0), width_of_cell(0), multicolumn(LyXTabular::CELL_NORMAL), @@ -327,9 +326,7 @@ LyXTabular::cellstruct::cellstruct(BufferParams const & bp, usebox(BOX_NONE), rotate(false), inset(new InsetText(bp)) -{ - inset->setViewCache(bv); -} +{} LyXTabular::cellstruct::cellstruct(cellstruct const & cs) @@ -409,21 +406,21 @@ LyXTabular::ltType::ltType() LyXTabular::LyXTabular(BufferParams const & bp, row_type rows_arg, - col_type columns_arg, BufferView const * bv) + col_type columns_arg) { - init(bp, rows_arg, columns_arg, bv); + init(bp, rows_arg, columns_arg); } // activates all lines and sets all widths to 0 void LyXTabular::init(BufferParams const & bp, row_type rows_arg, - col_type columns_arg, BufferView const * bv) + col_type columns_arg) { 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, bv))); + cell_info = cell_vvector(rows_, cell_vector(columns_, cellstruct(bp))); row_info.reserve(10); column_info.reserve(10); cell_info.reserve(100); @@ -457,7 +454,6 @@ void LyXTabular::fixCellNums() 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); @@ -471,7 +467,7 @@ void LyXTabular::appendRow(BufferParams const & bp, idx_type const 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, bv))); + cell_info = cell_vvector(rows_, cell_vector(columns_, cellstruct(bp))); for (row_type i = 0; i <= row; ++i) swap(cell_info[i], old[i]); @@ -501,7 +497,6 @@ void LyXTabular::deleteRow(row_type const row) 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); @@ -511,7 +506,7 @@ void LyXTabular::appendColumn(BufferParams const & bp, idx_type const 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, bv)); + cell_info[i].insert(cell_info[i].begin() + column + 1, cellstruct(bp)); // care about multicolumns if (cell_info[i][column + 1].multicolumn == CELL_BEGIN_OF_MULTICOLUMN) @@ -1278,7 +1273,7 @@ void LyXTabular::read(Buffer const & buf, LyXLex & lex) int columns_arg; if (!getTokenValue(line, "columns", columns_arg)) return; - init(buf.params(), rows_arg, columns_arg, buf.text().bv()); + init(buf.params(), rows_arg, columns_arg); l_getline(is, line); if (!prefixIs(line, " got" diff --git a/src/tabular.h b/src/tabular.h index 6c70ed7e55..fc54679fa0 100644 --- a/src/tabular.h +++ b/src/tabular.h @@ -23,7 +23,6 @@ #include #include -class BufferView; class InsetTabular; class LCursor; class OutputParams; @@ -186,7 +185,7 @@ public: /// constructor LyXTabular(BufferParams const &, col_type columns_arg, - row_type rows_arg, BufferView const *); + row_type rows_arg); /// Returns true if there is a topline, returns false if not bool topLine(idx_type cell, bool onlycolumn = false) const; @@ -404,7 +403,7 @@ public: class cellstruct { public: /// - cellstruct(BufferParams const &, BufferView const *); + cellstruct(BufferParams const &); /// cellstruct(cellstruct const &); /// @@ -532,7 +531,7 @@ public: /// void init(BufferParams const &, row_type rows_arg, - col_type columns_arg, BufferView const *); + col_type columns_arg); /// void set_row_column_number_info(); /// Returns true if a complete update is necessary, otherwise false -- 2.39.2