From a3b19c60a7440794933af1137ea3e538c4ffbff4 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Mon, 8 Feb 2016 18:19:24 +0100 Subject: [PATCH] Do not record undo in the tabularFeatures helper Since the low-level version of tabular features is only called by the high-level one, it does not make sense to record undo there. It is much better to do it once in the high-level handler, rather than 37 times (yes!) at lower level when the tabular GUI calls tabular-feature with all the settings at once. With large tables, this avoids to keep 37 copies of the table in Undo stack. As an added bonus, this fixes bug #9960. --- src/insets/InsetTabular.cpp | 4 ++-- src/insets/InsetTabular.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 2d967bcc3f..6d8f7d0737 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -5335,6 +5335,8 @@ void InsetTabular::movePrevCell(Cursor & cur, EntryDirection entry_from) void InsetTabular::tabularFeatures(Cursor & cur, string const & argument) { + cur.recordUndoInset(this); + istringstream is(argument); string s; // Safe guard. @@ -5461,8 +5463,6 @@ void InsetTabular::tabularFeatures(Cursor & cur, break; } - cur.recordUndoInset(this); - getSelection(cur, sel_row_start, sel_row_end, sel_col_start, sel_col_end); row_type const row = tabular.cellRow(cur.idx()); col_type const column = tabular.cellColumn(cur.idx()); diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index 026489d155..de664f15be 100644 --- a/src/insets/InsetTabular.h +++ b/src/insets/InsetTabular.h @@ -903,9 +903,9 @@ public: /// get offset of this cursor slice relative to our upper left corner void cursorPos(BufferView const & bv, CursorSlice const & sl, bool boundary, int & x, int & y) const; - /// + /// Executes a space-separated sequence of tabular-features requests void tabularFeatures(Cursor & cur, std::string const & what); - /// + /// Change a single tabular feature; does not handle undo. void tabularFeatures(Cursor & cur, Tabular::Feature feature, std::string const & val = std::string()); /// number of cells -- 2.39.5