I've been working the past week on separating the undo-stuff from
DiaCanvas. I created a new interface DiaUndoManager, which will be used
to as the interface between a canvas and "a" undo manager. The
undo-manager is a transaction based undo mechanism.
My changes are in CVS.
Some functions are obsolete now, such as dia_canvas_push/pop_undo().
This is now implemented by the undo implementation.
This change allows you to write your own undo manager, so application
wide undo/redo can be implemented.
I've updated the Python bindings too. I think there will be little
problem in supporting this interface in C# and Perl.
I've also added reference counting to DiaShape.
Please check it out and let me know what you think.