commit 2c4ec335913885d1daaa39a354b94824fe088fd2
Author: Richard Heck <[email protected]>
Date:   Thu Nov 5 16:42:30 2015 -0500

    Move LFUN_CHANGES_TRACK and LFUN_CHANGES_OUTPUT to Buffer.cpp,
    and record an undo call. This deals with the problem of marking
    the Buffer dirty, as well.
    
    Move LFUN_BUFFER_TOGGLE_COMPRESSION and LFUN_BUFFER_TOGGLE_OUTPUT_SYNC
    to Buffer.cpp, and add an undo call.

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 847b029..cfc442c 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -2445,6 +2445,26 @@ bool Buffer::getStatus(FuncRequest const & cmd, 
FuncStatus & flag)
                enable = (d->preview_file_).exists() && 
!(d->preview_file_).isFileEmpty();
                break;
 
+       case LFUN_CHANGES_TRACK:
+               flag.setEnabled(true);
+               flag.setOnOff(params().track_changes);
+               break;
+
+       case LFUN_CHANGES_OUTPUT:
+               flag.setEnabled(true);
+               flag.setOnOff(params().output_changes);
+               break;
+
+       case LFUN_BUFFER_TOGGLE_COMPRESSION: {
+               flag.setOnOff(params().compressed);
+               break;
+       }
+
+       case LFUN_BUFFER_TOGGLE_OUTPUT_SYNC: {
+               flag.setOnOff(params().output_sync);
+               break;
+       }
+
        default:
                return false;
        }
@@ -2674,6 +2694,46 @@ void Buffer::dispatch(FuncRequest const & func, 
DispatchResult & dr)
                        dr.setMessage(_("Error viewing the output file."));
                break;
 
+       case LFUN_CHANGES_TRACK:
+               undo().recordUndoBufferParams(CursorData());
+               params().track_changes = !params().track_changes;
+               break;
+
+       case LFUN_CHANGES_OUTPUT:
+               undo().recordUndoBufferParams(CursorData());
+               params().output_changes = !params().output_changes;
+               if (params().output_changes) {
+                       bool dvipost    = LaTeXFeatures::isAvailable("dvipost");
+                       bool xcolorulem = LaTeXFeatures::isAvailable("ulem") &&
+                                         LaTeXFeatures::isAvailable("xcolor");
+
+                       if (!dvipost && !xcolorulem) {
+                               Alert::warning(_("Changes not shown in LaTeX 
output"),
+                                              _("Changes will not be 
highlighted in LaTeX output, "
+                                                "because neither dvipost nor 
xcolor/ulem are installed.\n"
+                                                "Please install these packages 
or redefine "
+                                                "\\lyxadded and \\lyxdeleted 
in the LaTeX preamble."));
+                       } else if (!xcolorulem) {
+                               Alert::warning(_("Changes not shown in LaTeX 
output"),
+                                              _("Changes will not be 
highlighted in LaTeX output "
+                                                "when using pdflatex, because 
xcolor and ulem are not installed.\n"
+                                                "Please install both packages 
or redefine "
+                                                "\\lyxadded and \\lyxdeleted 
in the LaTeX preamble."));
+                       }
+               }
+               break;
+
+       case LFUN_BUFFER_TOGGLE_COMPRESSION:
+               // turn compression on/off
+               undo().recordUndoBufferParams(CursorData());
+               params().compressed = !params().compressed;
+               break;
+
+       case LFUN_BUFFER_TOGGLE_OUTPUT_SYNC:
+               undo().recordUndoBufferParams(CursorData());
+               params().output_sync = !params().output_sync;
+               break;
+
        default:
                dispatched = false;
                break;
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 9a9a77b..0030f33 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -1124,16 +1124,6 @@ bool BufferView::getStatus(FuncRequest const & cmd, 
FuncStatus & flag)
                    || getInsetByCode<InsetRef>(cur, REF_CODE));
                break;
 
-       case LFUN_CHANGES_TRACK:
-               flag.setEnabled(true);
-               flag.setOnOff(buffer_.params().track_changes);
-               break;
-
-       case LFUN_CHANGES_OUTPUT:
-               flag.setEnabled(true);
-               flag.setOnOff(buffer_.params().output_changes);
-               break;
-
        case LFUN_CHANGES_MERGE:
        case LFUN_CHANGE_NEXT:
        case LFUN_CHANGE_PREVIOUS:
@@ -1146,16 +1136,6 @@ bool BufferView::getStatus(FuncRequest const & cmd, 
FuncStatus & flag)
                flag.setEnabled(true);
                break;
 
-       case LFUN_BUFFER_TOGGLE_COMPRESSION: {
-               flag.setOnOff(buffer_.params().compressed);
-               break;
-       }
-
-       case LFUN_BUFFER_TOGGLE_OUTPUT_SYNC: {
-               flag.setOnOff(buffer_.params().output_sync);
-               break;
-       }
-
        case LFUN_SCREEN_UP:
        case LFUN_SCREEN_DOWN:
        case LFUN_SCROLL:
@@ -1458,33 +1438,6 @@ void BufferView::dispatch(FuncRequest const & cmd, 
DispatchResult & dr)
                break;
        }
 
-       case LFUN_CHANGES_TRACK:
-               buffer_.params().track_changes = 
!buffer_.params().track_changes;
-               break;
-
-       case LFUN_CHANGES_OUTPUT:
-               buffer_.params().output_changes = 
!buffer_.params().output_changes;
-               if (buffer_.params().output_changes) {
-                       bool dvipost    = LaTeXFeatures::isAvailable("dvipost");
-                       bool xcolorulem = LaTeXFeatures::isAvailable("ulem") &&
-                                         LaTeXFeatures::isAvailable("xcolor");
-
-                       if (!dvipost && !xcolorulem) {
-                               Alert::warning(_("Changes not shown in LaTeX 
output"),
-                                              _("Changes will not be 
highlighted in LaTeX output, "
-                                                "because neither dvipost nor 
xcolor/ulem are installed.\n"
-                                                "Please install these packages 
or redefine "
-                                                "\\lyxadded and \\lyxdeleted 
in the LaTeX preamble."));
-                       } else if (!xcolorulem) {
-                               Alert::warning(_("Changes not shown in LaTeX 
output"),
-                                              _("Changes will not be 
highlighted in LaTeX output "
-                                                "when using pdflatex, because 
xcolor and ulem are not installed.\n"
-                                                "Please install both packages 
or redefine "
-                                                "\\lyxadded and \\lyxdeleted 
in the LaTeX preamble."));
-                       }
-               }
-               break;
-
        case LFUN_CHANGE_NEXT:
                findNextChange(this);
                // FIXME: Move this LFUN to Buffer so that we don't have to do 
this:
@@ -1724,15 +1677,6 @@ void BufferView::dispatch(FuncRequest const & cmd, 
DispatchResult & dr)
        }
                break;
 
-       case LFUN_BUFFER_TOGGLE_COMPRESSION:
-               // turn compression on/off
-               buffer_.params().compressed = !buffer_.params().compressed;
-               break;
-
-       case LFUN_BUFFER_TOGGLE_OUTPUT_SYNC:
-               buffer_.params().output_sync = !buffer_.params().output_sync;
-               break;
-
        case LFUN_SCREEN_UP:
        case LFUN_SCREEN_DOWN: {
                Point p = getPos(cur);

Reply via email to