make autosave of drafts not lock up compose window ui, 323351, sr=mscott

This commit is contained in:
bienvenu%nventure.com 2006-01-23 20:03:10 +00:00
Родитель c9cfe8cc08
Коммит 2e4aad3389
1 изменённых файлов: 25 добавлений и 6 удалений

Просмотреть файл

@ -86,6 +86,7 @@ var gPromptService;
var gLDAPPrefsService; var gLDAPPrefsService;
var gWindowLocked; var gWindowLocked;
var gContentChanged; var gContentChanged;
var gAutoSaving;
var gCurrentIdentity; var gCurrentIdentity;
var defaultSaveOperation; var defaultSaveOperation;
var gSendOrSaveOperationInProgress; var gSendOrSaveOperationInProgress;
@ -146,6 +147,7 @@ function InitializeGlobalVariables()
gCurrentIdentity = null; gCurrentIdentity = null;
defaultSaveOperation = "draft"; defaultSaveOperation = "draft";
gSendOrSaveOperationInProgress = false; gSendOrSaveOperationInProgress = false;
gAutoSaving = false;
gCloseWindowAfterSave = false; gCloseWindowAfterSave = false;
gIsOffline = gIOService.offline; gIsOffline = gIOService.offline;
gSessionAdded = false; gSessionAdded = false;
@ -286,7 +288,8 @@ var stateListener = {
if (aResult== Components.results.NS_OK) if (aResult== Components.results.NS_OK)
{ {
SetContentAndBodyAsUnmodified(); if (!gAutoSaving)
SetContentAndBodyAsUnmodified();
if (gCloseWindowAfterSave) if (gCloseWindowAfterSave)
{ {
@ -300,9 +303,16 @@ var stateListener = {
} }
} }
MsgComposeCloseWindow(true); MsgComposeCloseWindow(true);
}
} }
// else if we failed to save, and we're autosaving, need to re-mark the editor
// as changed, so that we won't lose the changes.
else if (gAutoSaving)
{
gMsgCompose.bodyModified = true;
gContentChanged = true;
} }
gAutoSaving = false;
gCloseWindowAfterSave = false; gCloseWindowAfterSave = false;
}, },
@ -1876,10 +1886,19 @@ function GenericSendMessage( msgType )
var event = document.createEvent('Events'); var event = document.createEvent('Events');
event.initEvent('compose-send-message', false, true); event.initEvent('compose-send-message', false, true);
document.getElementById("msgcomposeWindow").dispatchEvent(event); document.getElementById("msgcomposeWindow").dispatchEvent(event);
gAutoSaving = (msgType == nsIMsgCompDeliverMode.AutoSaveAsDraft);
gWindowLocked = true; // disable the ui if we're not auto-saving
disableEditableFields(); if (!gAutoSaving)
updateComposeItems(); {
gWindowLocked = true;
disableEditableFields();
updateComposeItems();
}
// if we're auto saving, mark the body as not changed here, and not
// when the save is done, because the user might change it between now
// and when the save is done.
else
SetContentAndBodyAsUnmodified();
var progress = Components.classes["@mozilla.org/messenger/progress;1"].createInstance(Components.interfaces.nsIMsgProgress); var progress = Components.classes["@mozilla.org/messenger/progress;1"].createInstance(Components.interfaces.nsIMsgProgress);
if (progress) if (progress)