X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fundo.h;h=77191c703b69ccae978e94a8470d2503d35467c8;hb=f268743f8c014ef2dadd260fd1a3873cb1d2038b;hp=d1c468848de3821da7cf5ac73690ae7f4a7d2cb2;hpb=76ca53482802301031f6aa4ae2db120a19b97ae6;p=lyx.git diff --git a/src/undo.h b/src/undo.h index d1c468848d..77191c703b 100644 --- a/src/undo.h +++ b/src/undo.h @@ -1,88 +1,83 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. +/** + * \file undo.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * ====================================================== */ + * \author Asger Alstrup + * \author Lars Gullik Bjønnes + * \author André Pönitz + * + * Full author contact details are available in file CREDITS. + */ #ifndef UNDO_H #define UNDO_H -#ifdef __GNUG__ -#pragma interface -#endif - -#include - -#include "lyxparagraph.h" +#include "ParagraphList.h" - -/// +/** + * These are the elements put on the undo stack. Each object + * contains complete paragraphs and sufficient information + * to restore the state. The work is done in undo_funcs.C + */ class Undo { public: - /// The undo kinds + /** + * The undo kinds are used to combine consecutive undo recordings + * of the same kind. + */ enum undo_kind { - /// + /** + * Insert something - these will combine to one big chunk + * when many inserts come after each other. + */ INSERT, - /// + + /** + * Delete something - these will combine to one big chunk + * when many deletes come after each other. + */ DELETE, - /// - EDIT, - /// - FINISH + + /// Atomic - each of these will have its own entry in the stack + ATOMIC }; /// + Undo(undo_kind kind, int inset_id, + int first, int last, + int cursor, int cursor_pos, + ParagraphList const & par_arg); + + /// Which kind of operation are we recording for? undo_kind kind; - /// - int number_of_before_par; - /// - int number_of_behind_par; - /// - int number_of_cursor_par; - /// - int cursor_pos; // valid if >= 0 - /// - LyXParagraph * par; - /// - Undo(undo_kind kind_arg, - int number_before_arg, int number_behind_arg, - int cursor_par_arg, int cursor_pos_arg, - LyXParagraph * par_arg); - /// - ~Undo(); -}; + /** + * ID of hosting inset if the cursor is in one. + * if -1, then the cursor is not in an inset. + * if >= 0, then the cursor is in inset with given id. + */ + int inset_id; -/// A limited Stack for the undo informations. -class UndoStack{ -private: - /// - typedef std::list Stakk; - /// - Stakk stakk; - /// the maximum number of undo steps stored. - Stakk::size_type limit; -public: - /// - UndoStack(); - /// - Undo * pop(); - /// - Undo * top(); - /// - bool empty() const; - /// - ~UndoStack(); - /// - void clear(); - /// - void SetStackLimit(Stakk::size_type l); - /// - void push(Undo * undo_arg); + /// Offset to the first paragraph in the main document paragraph list + int first_par_offset; + + /// Offset to the last paragraph from the end of the main par. list + int last_par_offset; + + /** + * Offset from the start of the main document paragraph list, + * except if inside an inset, in which case it's the offset + * inside the hosting inset. + */ + int cursor_par_offset; + + /// The position of the cursor in the hosting paragraph + int cursor_pos; + + /// The contents of the paragraphs saved + ParagraphList pars; }; + #endif