Undo description


Planned for future versions: Array short *gl_undo_desc[ 0 .. UNDO_BUFFER_SIZE]
   descriptions for last changes in editor

gl_undo_pos = aktuelle Position im Array

Current version (used to simplify handling in first stable version)
gl_undo_desc = pointer to 1 undo description
gl_redo_desc = pointer to 1 redo description
    both may be NULL if undo/redo is curently not possible

If undo will be executed the description will be copied to redo_desc and if redo has been executed the description will be copied back to undo_desc. The menu entries to start undo/redo will be changed depending on this descriptions.


Description stored:


Text operation = insert/delete single character
   If more than one sign will be inserted or deleted one after the other this will be stored and undo'd in one operation.
Stored as
    <short> undo_type (Values see UNDO_* in defines.h)
    <EDIT_UNDO_TEXT> structure describing the text contents
    n byte text contents stored behind the EDIT_UNDO_TEXT structure

Block operation = insert/delete block
    <short> undo type
    <SOURCE_BLOCK_HEADER> describing the block
   n byte data = block contents

DELETE_BLOCK

short UNDO_DELETE_BLOCK
SOURCE_BLOCK_HEADER for block
data of block contents

INSERT_BLOCK

short UNDO_DELETE_BLOCK
SOURCE_BLOCK_HEADER for block
data of block contents



Currently missing:
Undo for changes in formdesigner
Undo for Replace command
Undo for changes in Database Gui like Queries and reports (needed??)



 
Undo operations
   global stack  gl_undo_desc
   position in stack (last changed)  gl_undo_pos

   Operation short is first value

   more undo actions