From 2c4ec335913885d1daaa39a354b94824fe088fd2 Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Thu, 5 Nov 2015 16:42:30 -0500 Subject: [PATCH] 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. --- src/Buffer.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++ src/BufferView.cpp | 56 ------------------------------------------- 2 files changed, 60 insertions(+), 56 deletions(-) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 847b0292af..cfc442c203 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 9a9a77b4e9..0030f33f4c 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -1124,16 +1124,6 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag) || getInsetByCode(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); -- 2.39.5