diff --git a/mailnews/base/public/nsIMessenger.idl b/mailnews/base/public/nsIMessenger.idl
index 94177204fd9f..75f89c257c1e 100644
--- a/mailnews/base/public/nsIMessenger.idl
+++ b/mailnews/base/public/nsIMessenger.idl
@@ -37,6 +37,11 @@ interface nsITransactionManager;
[scriptable, uuid(4f7966d0-c14f-11d2-b7f2-00805f05ffa5)]
interface nsIMessenger : nsISupports {
+%{C++
+ enum { eUnknown=0, eDeleteMsg=1,
+ eMoveMsg=2, eCopyMsg=3 };
+%}
+
readonly attribute nsITransactionManager transactionManager;
void GetNewMessages(in nsIRDFCompositeDataSource database,
@@ -84,8 +89,12 @@ interface nsIMessenger : nsISupports {
void EmptyTrash(in nsIRDFCompositeDataSource db,
in nsIRDFResource folder);
- void Undo();
- void Redo();
+ boolean CanUndo();
+ boolean CanRedo();
+ unsigned long GetUndoTransactionType();
+ unsigned long GetRedoTransactionType();
+ void Undo(in nsIMsgWindow msgWindow);
+ void Redo(in nsIMsgWindow msgWindow);
void SendUnsentMessages(in nsIMsgIdentity aIdentity);
void SetDocumentCharset(in wstring characterSet);
void saveAs(in string url, in boolean asFile, in nsIMsgIdentity identity);
diff --git a/mailnews/base/resources/content/commandglue.js b/mailnews/base/resources/content/commandglue.js
index 94dda34b6611..1cd88bb65789 100644
--- a/mailnews/base/resources/content/commandglue.js
+++ b/mailnews/base/resources/content/commandglue.js
@@ -731,4 +731,12 @@ function GetSelectTrashUri(folder)
return null;
}
+function Undo()
+{
+ messenger.Undo(msgWindow);
+}
+function Redo()
+{
+ messenger.Redo(msgWindow);
+}
diff --git a/mailnews/base/resources/content/messenger.xul b/mailnews/base/resources/content/messenger.xul
index 14929c69971b..b7903a951b0e 100644
--- a/mailnews/base/resources/content/messenger.xul
+++ b/mailnews/base/resources/content/messenger.xul
@@ -70,8 +70,16 @@ Rights Reserved.