From 315c435e6b5e21a49870350adef66619965a3528 Mon Sep 17 00:00:00 2001 From: "michael.buettner%sun.com" Date: Thu, 8 Mar 2007 17:13:59 +0000 Subject: [PATCH] bug #369084 missing thunderbird integration for undo/redo r=lilmatt --- .../base/content/calendar-item-editing.js | 9 +++++- .../content/messenger-overlay-sidebar.js | 28 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/calendar/base/content/calendar-item-editing.js b/calendar/base/content/calendar-item-editing.js index 1b71b352c8ff..4b6bc7f33d07 100644 --- a/calendar/base/content/calendar-item-editing.js +++ b/calendar/base/content/calendar-item-editing.js @@ -332,6 +332,7 @@ calTransaction.prototype = { mOldItem: null, mOldCalendar: null, mListener: null, + mIsDoTransaction: false, QueryInterface: function (aIID) { if (!aIID.equals(Components.interfaces.nsISupports) && @@ -348,7 +349,11 @@ calTransaction.prototype = { if (aOperationType == Components.interfaces.calIOperationListener.ADD || aOperationType ==Components.interfaces.calIOperationListener.MODIFY) { // Add/Delete return the original item as detail for success - this.mItem = aDetail; + if (this.mIsDoTransaction) { + this.mItem = aDetail; + } else { + this.mOldItem = aDetail; + } } } else { Components.utils.reportError("Severe error in internal transaction code!\n" + @@ -366,6 +371,7 @@ calTransaction.prototype = { }, doTransaction: function () { + this.mIsDoTransaction = true; switch (this.mAction) { case 'add': this.mCalendar.addItem(this.mItem, this); @@ -385,6 +391,7 @@ calTransaction.prototype = { } }, undoTransaction: function () { + this.mIsDoTransaction = false; switch (this.mAction) { case 'add': this.mCalendar.deleteItem(this.mItem, this); diff --git a/calendar/lightning/content/messenger-overlay-sidebar.js b/calendar/lightning/content/messenger-overlay-sidebar.js index 1fcd41c4ee82..d4b71f61cb93 100644 --- a/calendar/lightning/content/messenger-overlay-sidebar.js +++ b/calendar/lightning/content/messenger-overlay-sidebar.js @@ -51,6 +51,8 @@ var CalendarController = case "cmd_cut": case "cmd_copy": case "cmd_paste": + case "cmd_undo": + case "cmd_redo": case "cmd_print": case "cmd_printpreview": return true; @@ -68,6 +70,22 @@ var CalendarController = return currentView().getSelectedItems({}).length != 0; case "cmd_paste": return canPaste(); + case "cmd_undo": + if (this.isCalendarInForeground()) { + goSetMenuValue(command, 'valueDefault'); + if (canUndo()) { + return true; + } + } + break; + case "cmd_redo": + if (this.isCalendarInForeground()) { + goSetMenuValue(command, 'valueDefault'); + if(canRedo()) { + return true; + } + } + break; case "cmd_print": if (this.isCalendarInForeground()) { return true; @@ -104,6 +122,16 @@ var CalendarController = case "cmd_paste": pasteFromClipboard(); break; + case "cmd_undo": + if (this.isCalendarInForeground() && canUndo()) { + gTransactionMgr.undoTransaction(); + } + break; + case "cmd_redo": + if (this.isCalendarInForeground() && canRedo()) { + gTransactionMgr.redoTransaction(); + } + break; case "cmd_print": if (this.isCalendarInForeground()) { calPrint();