зеркало из https://github.com/mozilla/gecko-dev.git
make autosave of drafts not lock up compose window ui, 323351, sr=mscott
This commit is contained in:
Родитель
c9cfe8cc08
Коммит
2e4aad3389
|
@ -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)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче