]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetCommand.cpp
Do not output deleted rows columns if show changes in output is false
[lyx.git] / src / insets / InsetCommand.cpp
index 504338616533ed8b1fc38ae12601b3183de570f2..1d67ad97d95d527aec7907d618b4e6ed01b8c5a2 100644 (file)
@@ -22,6 +22,7 @@
 #include "FuncRequest.h"
 #include "FuncStatus.h"
 #include "Lexer.h"
+#include "LyX.h"
 #include "MetricsInfo.h"
 #include "texstream.h"
 
@@ -186,13 +187,33 @@ void InsetCommand::validate(LaTeXFeatures & features) const
 }
 
 
+void InsetCommand::changeCmdName(string const & new_name)
+{
+       string const old_name = getCmdName();
+       if (old_name == new_name)
+               return;
+
+       if (buffer().masterParams().track_changes) {
+               // With change tracking, we insert a new inset and
+               // delete the old one
+               InsetCommandParams p(p_.code());
+               p = p_;
+               p.setCmdName(new_name);
+               string const data = InsetCommand::params2string(p);
+               lyx::dispatch(FuncRequest(LFUN_INSET_INSERT, data));
+               lyx::dispatch(FuncRequest(LFUN_CHAR_DELETE_FORWARD));
+       } else
+               p_.setCmdName(new_name);
+}
+
+
 void InsetCommand::doDispatch(Cursor & cur, FuncRequest & cmd)
 {
        switch (cmd.action()) {
        case LFUN_INSET_MODIFY: {
                if (cmd.getArg(0) == "changetype") {
                        cur.recordUndo();
-                       p_.setCmdName(cmd.getArg(1));
+                       changeCmdName(cmd.getArg(1));
                        cur.forceBufferUpdate();
                        initView();
                        break;
@@ -203,7 +224,14 @@ void InsetCommand::doDispatch(Cursor & cur, FuncRequest & cmd)
                        cur.noScreenUpdate();
                else {
                        cur.recordUndo();
-                       setParams(p);
+                       if (buffer().masterParams().track_changes) {
+                               // With change tracking, we insert a new inset and
+                               // delete the old one
+                               string const data = InsetCommand::params2string(p);
+                               lyx::dispatch(FuncRequest(LFUN_INSET_INSERT, data));
+                               lyx::dispatch(FuncRequest(LFUN_CHAR_DELETE_FORWARD));
+                       } else
+                               setParams(p);
                }
                // FIXME We might also want to check here if this one is in the TOC.
                // But I think most of those are labeled.
@@ -349,7 +377,7 @@ bool decodeInsetParam(string const & name, string & data,
                break;
        }
        case ERT_CODE: {
-               data = InsetERT::params2string(InsetCollapsable::Open);
+               data = InsetERT::params2string(InsetCollapsible::Open);
                break;
        }
        case EXTERNAL_CODE: {