sr=sfraser@netscape.com,mscott@netscape.com r=jfrancis@netscape.com
* nsITransaction, nsITransactionListenter, nsITransactionManager have
been XPIDL'ized and moved into mozilla/editor/txmgr/idl. The versions
of these interfaces in mozilla/editor/txmgr/public are being CVS removed.
* Renamed Do(), Undo(), and Redo() to DoTransaction(), UndoTransaction(),
and RedoTransaction() to avoid reserved word problems in languages like
JS. I did a sweep through editor and mailnews to remove these methods.
* PeekUndoStack() and PeekRedoStack() now return an AddRef'd pointer.
* Removed GetUndoString(), GetRedoString() and Write() from the
nsITransaction interface. Neither editor or mailnews really made
use of these methods.
* Removed Write() from the nsITransactionManager.cpp interface.
* The Transaction Manager now supports weak references.
* Added support for nsITransactionList to the TransactionManager
to allow access to all transactions on the Undo and Redo stacks, as
well as auto-aggregated transactions.
* Removed all references to nsITransactionDescription from txmgr and editor.
* Added nsPIEditorTransaction and made all Editor internal transactions
inherit from it so we can distinguish between our transactions and
ones from 3rd parties.
New files checked in:
editor/txmgr/idl/nsITransaction.idl
editor/txmgr/idl/nsITransactionList.idl
editor/txmgr/idl/nsITransactionListener.idl
editor/txmgr/idl/nsITransactionManager.idl
editor/txmgr/src/nsITransactionList.cpp
editor/txmgr/src/nsITransactionList.h
editor/idl/nsPIEditorTransaction.idl
Files that were CVS removed:
editor/txmgr/public/nsITransaction.h
editor/txmgr/public/nsITransactionListener.h
editor/txmgr/public/nsITransactionManager.h
editor/txmgr/idl/nsITransactionDescription.h
editor/base/IMECommitTxn.cpp
editor/base/IMECommitTxn.h
Files modified:
editor/Makefile.in
editor/makefile.win
editor/base/ChangeAttributeTxn.cpp
editor/base/ChangeAttributeTxn.h
editor/base/CreateElementTxn.cpp
editor/base/CreateElementTxn.h
editor/base/DeleteElementTxn.cpp
editor/base/DeleteElementTxn.h
editor/base/DeleteRangeTxn.cpp
editor/base/DeleteRangeTxn.h
editor/base/DeleteTextTxn.cpp
editor/base/DeleteTextTxn.h
editor/base/EditAggregateTxn.cpp
editor/base/EditAggregateTxn.h
editor/base/EditTxn.cpp
editor/base/EditTxn.h
editor/base/IMECommitTxn.cpp
editor/base/IMECommitTxn.h
editor/base/IMETextTxn.cpp
editor/base/IMETextTxn.h
editor/base/InsertElementTxn.cpp
editor/base/InsertElementTxn.h
editor/base/InsertTextTxn.cpp
editor/base/InsertTextTxn.h
editor/base/JoinElementTxn.cpp
editor/base/JoinElementTxn.h
editor/base/nsEditor.cpp
editor/base/nsEditorShell.cpp
editor/base/nsEditorShell.h
editor/base/nsEditorTxnLog.cpp
editor/base/nsStyleSheetTxns.cpp
editor/base/nsStyleSheetTxns.h
editor/base/PlaceholderTxn.cpp
editor/base/PlaceholderTxn.h
editor/base/SetDocTitleTxn.cpp
editor/base/SetDocTitleTxn.h
editor/base/SplitElementTxn.cpp
editor/base/SplitElementTxn.h
editor/idl/Makefile.in
editor/idl/makefile.win
editor/idl/MANIFEST
editor/idl/nsIEditorShell.idl
editor/macbuild/editor.mcp
editor/macbuild/EditorIDL.mcp
editor/txmgr/idl/Makefile.in
editor/txmgr/idl/makefile.win
editor/txmgr/idl/MANIFEST
editor/txmgr/idl/nsITransactionManager.idl
editor/txmgr/macbuild/txmgr.mcp
editor/txmgr/macbuild/txmgrIDL.mcp
editor/txmgr/public/Makefile.in
editor/txmgr/public/makefile.win
editor/txmgr/public/MANIFEST
editor/txmgr/src/Makefile.in
editor/txmgr/src/makefile.win
editor/txmgr/src/nsTransactionItem.cpp
editor/txmgr/src/nsTransactionItem.h
editor/txmgr/src/nsTransactionList.cpp
editor/txmgr/src/nsTransactionList.h
editor/txmgr/src/nsTransactionManager.cpp
editor/txmgr/src/nsTransactionManager.h
editor/txmgr/src/nsTransactionManagerFactory.cpp
editor/txmgr/src/nsTransactionStack.cpp
editor/txmgr/src/nsTransactionStack.h
editor/txmgr/tests/TestTXMgr.cpp
editor/ui/composer/content/EditorCommandsDebug.js
editor/ui/composer/content/editorOverlay.xul
editor/ui/composer/locale/en-US/editorOverlay.dtd
mailnews/base/src/nsMessenger.cpp
mailnews/base/util/nsMsgTxn.cpp
mailnews/base/util/nsMsgTxn.h
mailnews/imap/src/nsImapMailFolder.cpp
mailnews/imap/src/nsImapUndoTxn.cpp
mailnews/imap/src/nsImapUndoTxn.h
mailnews/local/src/nsLocalMailFolder.cpp
mailnews/local/src/nsLocalUndoTxn.cpp
mailnews/local/src/nsLocalUndoTxn.h
and merges in subsequent transactions indiscriminately until it's told to stop.
It also gives the last transaction in its child list a chance to merge the
next transaction.
All this is in support of complex transactions that result in text insertion
being able to collapse into a single undoable event.
Also improved tracking of bogus content node used when document is empty.
* added DeleteSelection to editor. Doesn't work very well yet because selection is giving me random offsets into text content.
* lots of work in the various transactions.
The key listener is now mostly a mapper of key events to editor actions. Soon, this should be 100% true.
The editor builds transactions that are themselves intelligent. The editor makes very few DOM calls itself.
It relies on the transactions to do most of the actual editing.