Closed Bug 202301 Opened 23 years ago Closed 23 years ago

pop3 mail delete does not delete, then mail wont open in series

Categories

(SeaMonkey :: MailNews: Message Display, defect)

x86
Windows 98
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 192780

People

(Reporter: searlej, Assigned: sspitzer)

Details

User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.3) Gecko/20030312 Build Identifier: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.3) Gecko/20030312 mail loads fine. can read each message. go to delete a message but it does not delete. from that delete attempt on, new messages will not open. Summary: delete (which does not delete the message) subsequently dissallows other mail to open. Message which was to be deleted stays on the screen. Reproducible: Always Steps to Reproduce: 1.start with list of unread messages 2.click, first messages opens, no problem 3.click next, next message opens, no problem ETC UNTIL 4.Click delete, message does not delete 5.click next, does not go to next message, just contunues to show message i tried to delete. 6.only way to see other messages from that point on is to double click them and have them open in another window. Still cannot delete them Actual Results: see above Expected Results: this happened with 1.3 which i just downloaded 2 days ago. 1.21 worked fine WHAT SHOULD I DO TO GET MY MAIL WORKING CORRECTLY. GO BACK TO 1.21
check the javascript console (tools>web dev>javascript console) as soon as mail breaks, if there's something interesting, list it here.
Assignee: asa → sspitzer
Component: Browser-General → Mail Window Front End
Product: Browser → MailNews
QA Contact: asa → esther
in javascript console (tools>web dev>javascript console) Source File: chrome://messenger/content/commacdglue.js /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is Mozilla Communicator client code, released * March 31, 1998. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998-1999 Netscape Communications Corporation. All * Rights Reserved. * * Contributors(s): * Jan Varga <varga@utcru.sk> * Håkan Waara (hwaara@chello.se) */ /* * Command-specific code. This stuff should be called by the widgets */ //NOTE: gMessengerBundle and gBrandBundle must be defined and set // for this Overlay to work properly var gFolderJustSwitched = false; var gBeforeFolderLoadTime; var gRDFNamespace = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; /* keep in sync with nsMsgFolderFlags.h */ const MSG_FOLDER_FLAG_TRASH = 0x0100; const MSG_FOLDER_FLAG_SENTMAIL = 0x0200; const MSG_FOLDER_FLAG_DRAFTS = 0x0400; const MSG_FOLDER_FLAG_QUEUE = 0x0800; const MSG_FOLDER_FLAG_INBOX = 0x1000; const MSG_FOLDER_FLAG_TEMPLATES = 0x400000; const MSG_FOLDER_FLAG_JUNK = 0x40000000; function OpenURL(url) { //dump("\n\nOpenURL from XUL\n\n\n"); messenger.SetWindow(window, msgWindow); messenger.OpenURL(url); } function GetMsgFolderFromResource(folderResource) { if (!folderResource) return null; var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); if (msgFolder && (msgFolder.parent || msgFolder.isServer)) return msgFolder; else return null; } function GetServer(uri) { if (!uri) return null; try { var folder = GetMsgFolderFromUri(uri, true); return folder.server; } catch (ex) { dump("GetServer("+uri+") failed, ex="+ex+"\n"); } return null; } function LoadMessageByUri(uri) { //dump("XXX LoadMessageByUri " + uri + " vs " + gCurrentDisplayedMessage + "\n"); if(uri != gCurrentDisplayedMessage) { dump("fix this, get the nsIMsgDBHdr and the nsIMsgFolder from the uri...\n"); /* var resource = RDF.GetResource(uri); var message = resource.QueryInterface(Components.interfaces.nsIMessage); if (message) setTitleFromFolder(message.msgFolder, message.mimef2DecodedSubject); var nsIMsgFolder = Components.interfaces.nsIMsgFolder; if (message.msgFolder.server.downloadOnBiff) message.msgFolder.biffState = nsIMsgFolder.nsMsgBiffState_NoMail; */ gCurrentDisplayedMessage = uri; gHaveLoadedMessage = true; OpenURL(uri); } } function setTitleFromFolder(msgfolder, subject) { if (!msgfolder) return; var title; var server = msgfolder.server; if (null != subject) title = subject+" - "; else title = ""; if (msgfolder.isServer) title += server.prettyName; else { var middle; var end; if (server.type == "nntp") { // <folder> on <hostname> middle = gMessengerBundle.getString("titleNewsPreHost"); end = server.hostName; } else { var identity; try { var identities = accountManager.GetIdentitiesForServer(server); identity = identities.QueryElementAt(0, Components.interfaces.nsIMsgIdentity); // <folder> for <email> middle = gMessengerBundle.getString("titleMailPreHost"); end = identity.email; } catch (ex) { } } title += msgfolder.prettyName; if (middle) title += " " + middle; if (end) title += " " + end; } title += " - " + gBrandBundle.getString("brandShortName"); window.title = title; } function UpdateMailToolbar(caller) { //dump("XXX update mail-toolbar " + caller + "\n"); document.commandDispatcher.updateCommands('mail-toolbar'); // hook for extra toolbar items var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.notifyObservers(window, "mail:updateToolbarItems", null); } function ChangeFolderByURI(uri, viewType, viewFlags, sortType, sortOrder) { //dump("In ChangeFolderByURI uri = " + uri + " sortType = " + sortType + "\n"); if (uri == gCurrentLoadingFolderURI) return; // hook for extra toolbar items var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.notifyObservers(window, "mail:setupToolbarItems", uri); var resource = RDF.GetResource(uri); var msgfolder = resource.QueryInterface(Components.interfaces.nsIMsgFolder); try { setTitleFromFolder(msgfolder, null); } catch (ex) { dump("error setting title: " + ex + "\n"); } //if it's a server, clear the threadpane and don't bother trying to load. if (msgfolder.isServer) { msgWindow.openFolder = null; ClearThreadPane(); // Load AccountCentral page here. ShowAccountCentral(); return; } else { if (msgfolder.server.displayStartupPage) { gDisplayStartupPage = true; msgfolder.server.displayStartupPage = false; } } // If the user clicks on msgfolder, time to display thread pane and message pane. // Hide AccountCentral page if (gAccountCentralLoaded) { HideAccountCentral(); } if (gFakeAccountPageLoaded) { HideFakeAccountPage(); } gCurrentLoadingFolderURI = uri; gNextMessageAfterDelete = null; // forget what message to select, if any gCurrentFolderToReroot = uri; gCurrentLoadingFolderViewFlags = viewFlags; gCurrentLoadingFolderViewType = viewType; gCurrentLoadingFolderSortType = sortType; gCurrentLoadingFolderSortOrder = sortOrder; var showMessagesAfterLoading; try { var server = msgfolder.server; if (server.redirectorType) { var prefString = server.type + "." + server.redirectorType + ".showMessagesAfterLoading"; showMessagesAfterLoading = gPrefs.getBoolPref(prefString); } else showMessagesAfterLoading = false; } catch (ex) { showMessagesAfterLoading = false; } if (msgfolder.manyHeadersToDownload || showMessagesAfterLoading) { gRerootOnFolderLoad = true; try { SetBusyCursor(window, true); msgfolder.startFolderLoading(); msgfolder.updateFolder(msgWindow); } catch(ex) { SetBusyCursor(window, false); dump("Error loading with many headers to download: " + ex + "\n"); } } else { SetBusyCursor(window, true); RerootFolder(uri, msgfolder, viewType, viewFlags, sortType, sortOrder); gRerootOnFolderLoad = false; msgfolder.startFolderLoading(); //Need to do this after rerooting folder. Otherwise possibility of receiving folder loaded //notification before folder has actually changed. msgfolder.updateFolder(msgWindow); } } function isNewsURI(uri) { return ((/^news-message:/.test(uri)) || (/^news:/.test(uri))); } function RerootFolder(uri, newFolder, viewType, viewFlags, sortType, sortOrder) { // workaround for #39655 gFolderJustSwitched = true; ClearThreadPaneSelection(); //Clear the new messages of the old folder var oldFolder = msgWindow.openFolder; if (oldFolder) { if (oldFolder.hasNewMessages) { oldFolder.clearNewMessages(); } } //Set the window's new open folder. msgWindow.openFolder = newFolder; SetViewFlags(viewFlags); //the new folder being selected should have its biff state get cleared. if(newFolder) { newFolder.biffState = Components.interfaces.nsIMsgFolder.nsMsgBiffState_NoMail; } //Clear out the thread pane so that we can sort it with the new sort id without taking any time. // folder.setAttribute('ref', ""); // show "Lines" for news, "Size" for mail SetNewsFolderColumns(isNewsURI(uri)); // null this out, so we don't try sort. if (gDBView) { gDBView.close(); gDBView = null; } // if this is the drafts, sent, or send later folder, // we show "Recipient" instead of "Author" SetSentFolderColumns(IsSpecialFolder(newFolder, MSG_FOLDER_FLAG_SENTMAIL | MSG_FOLDER_FLAG_DRAFTS | MSG_FOLDER_FLAG_QUEUE)); // now create the db view, which will sort it. CreateDBView(newFolder, viewType, viewFlags, sortType, sortOrder); if (oldFolder) { /*disable quick search clear button if we were in the search view on folder switching*/ disableQuickSearchClearButton(); /*we don't null out the db reference for inbox because inbox is like the "main" folder and performance outweighs footprint */ if (!IsSpecialFolder(oldFolder, MSG_FOLDER_FLAG_INBOX)) if (oldFolder.URI != newFolder.URI) oldFolder.setMsgDatabase(null); } // that should have initialized gDBView, now re-root the thread pane RerootThreadPane(); SetUpToolbarButtons(uri); UpdateStatusMessageCounts(newFolder); UpdateMailToolbar("reroot folder in 3 pane"); } function SwitchView(command) { var oldSortType = gDBView ? gDBView.sortType : nsMsgViewSortType.byThread; var oldSortOrder = gDBView ? gDBView.sortOrder : nsMsgViewSortOrder.ascending; var viewFlags = gCurViewFlags; // close existing view. if (gDBView) { gDBView.close(); gDBView = null; } switch(command) { case "cmd_viewUnreadMsgs": viewFlags = viewFlags | nsMsgViewFlagsType.kUnreadOnly; CreateDBView(msgWindow.openFolder, nsMsgViewType.eShowAllThreads, viewFlags, oldSortType, oldSortOrder ); break; case "cmd_viewAllMsgs": viewFlags = viewFlags & ~nsMsgViewFlagsType.kUnreadOnly; CreateDBView(msgWindow.openFolder, nsMsgViewType.eShowAllThreads, viewFlags, oldSortType, oldSortOrder); break; case "cmd_viewThreadsWithUnread": CreateDBView(msgWindow.openFolder, nsMsgViewType.eShowThreadsWithUnread, nsMsgViewFlagsType.kThreadedDisplay, nsMsgViewSortType.byThread, oldSortOrder); break; case "cmd_viewWatchedThreadsWithUnread": CreateDBView(msgWindow.openFolder, nsMsgViewType.eShowWatchedThreadsWithUnread, nsMsgViewFlagsType.kThreadedDisplay, nsMsgViewSortType.byThread, oldSortOrder); break; case "cmd_viewIgnoredThreads": if (viewFlags & nsMsgViewFlagsType.kShowIgnored) viewFlags = viewFlags & ~nsMsgViewFlagsType.kShowIgnored; else viewFlags = viewFlags | nsMsgViewFlagsType.kShowIgnored; CreateDBView(msgWindow.openFolder, nsMsgViewType.eShowAllThreads, viewFlags, oldSortType, oldSortOrder); break; } // that should have initialized gDBView, now re-root the thread pane var treeView = gDBView.QueryInterface(Components.interfaces.nsITreeView); if (treeView) { var tree = GetThreadTree(); tree.boxObject.QueryInterface(Components.interfaces.nsITreeBoxObject).view = treeView; } } function SetSentFolderColumns(isSentFolder) { var senderOrRecipientColumn = document.getElementById("senderOrRecipientCol"); var searchCriteria = document.getElementById("searchCriteria"); if(isSentFolder) { senderOrRecipientColumn.setAttribute("tooltiptext", gMessengerBundle.getString("recipientColumnTooltip")); senderOrRecipientColumn.setAttribute("label", gMessengerBundle.getString("recipientColumnHeader")); searchCriteria.setAttribute("value", gMessengerBundle.getString("recipientSearchCriteria")); } else { senderOrRecipientColumn.setAttribute("tooltiptext", gMessengerBundle.getString("senderColumnTooltip")); senderOrRecipientColumn.setAttribute("label", gMessengerBundle.getString("senderColumnHeader")); searchCriteria.setAttribute("value", gMessengerBundle.getString("senderSearchCriteria")); } } function SetNewsFolderColumns(isNewsFolder) { var sizeColumn = document.getElementById("sizeCol"); if (isNewsFolder) { sizeColumn.setAttribute("tooltiptext",gMessengerBundle.getString("linesColumnTooltip")); sizeColumn.setAttribute("label",gMessengerBundle.getString("linesColumnHeader")); } else { sizeColumn.setAttribute("tooltiptext", gMessengerBundle.getString("sizeColumnTooltip")); sizeColumn.setAttribute("label", gMessengerBundle.getString("sizeColumnHeader")); } } function UpdateStatusMessageCounts(folder) { var unreadElement = GetUnreadCountElement(); var totalElement = GetTotalCountElement(); if(folder && unreadElement && totalElement) { var numUnread = gMessengerBundle.getFormattedString("unreadMsgStatus", [ folder.getNumUnread(false)]); var numTotal = gMessengerBundle.getFormattedString("totalMsgStatus", [folder.getTotalMessages(false)]); unreadElement.setAttribute("label", numUnread); totalElement.setAttribute("label", numTotal); } } function ConvertColumnIDToSortType(columnID) { var sortKey; switch (columnID) { case "dateCol": sortKey = nsMsgViewSortType.byDate; break; case "senderOrRecipientCol": if (IsSpecialFolderSelected(MSG_FOLDER_FLAG_SENTMAIL | MSG_FOLDER_FLAG_DRAFTS | MSG_FOLDER_FLAG_QUEUE)) { sortKey = nsMsgViewSortType.byRecipient; } else { sortKey = nsMsgViewSortType.byAuthor; } break; case "subjectCol": sortKey = nsMsgViewSortType.bySubject; break; case "locationCol": sortKey = nsMsgViewSortType.byLocation; break; case "unreadButtonColHeader": sortKey = nsMsgViewSortType.byUnread; break; case "statusCol": sortKey = nsMsgViewSortType.byStatus; break; case "sizeCol": sortKey = nsMsgViewSortType.bySize; break; case "priorityCol": sortKey = nsMsgViewSortType.byPriority; break; case "flaggedCol": sortKey = nsMsgViewSortType.byFlagged; break; case "threadCol": sortKey = nsMsgViewSortType.byThread; break; case "labelCol": sortKey = nsMsgViewSortType.byLabel; break; case "junkStatusCol": sortKey = nsMsgViewSortType.byJunkStatus; break; case "idCol": sortKey = nsMsgViewSortType.byId; break; default: dump("unsupported sort column: " + columnID + "\n"); sortKey = 0; break; } return sortKey; } function ConvertSortTypeToColumnID(sortKey) { var columnID; // hack to turn this into an integer, if it was a string // it would be a string if it came from localStore.rdf sortKey = sortKey - 0; switch (sortKey) { case nsMsgViewSortType.byDate: columnID = "dateCol"; break; case nsMsgViewSortType.byAuthor: case nsMsgViewSortType.byRecipient: columnID = "senderOrRecipientCol"; break; case nsMsgViewSortType.bySubject: columnID = "subjectCol"; break; case nsMsgViewSortType.byLocation: columnID = "locationCol"; break; case nsMsgViewSortType.byUnread: columnID = "unreadButtonColHeader"; break; case nsMsgViewSortType.byStatus: columnID = "statusCol"; break; case nsMsgViewSortType.byLabel: columnID = "labelCol"; break; case nsMsgViewSortType.bySize: columnID = "sizeCol"; break; case nsMsgViewSortType.byPriority: columnID = "priorityCol"; break; case nsMsgViewSortType.byFlagged: columnID = "flaggedCol"; break; case nsMsgViewSortType.byThread: columnID = "threadCol"; break; case nsMsgViewSortType.byId: columnID = "idCol"; break; case nsMsgViewSortType.byJunkStatus: columnID = "junkStatusCol"; break; default: dump("unsupported sort key: " + sortKey + "\n"); columnID = null; break; } return columnID; } var nsMsgViewSortType = Components.interfaces.nsMsgViewSortType; var nsMsgViewSortOrder = Components.interfaces.nsMsgViewSortOrder; var nsMsgViewFlagsType = Components.interfaces.nsMsgViewFlagsType; var nsMsgViewCommandType = Components.interfaces.nsMsgViewCommandType; var nsMsgViewType = Components.interfaces.nsMsgViewType; var nsMsgNavigationType = Components.interfaces.nsMsgNavigationType; var gDBView = null; var gCurViewFlags; var gCurSortType; // CreateDBView is called when we have a thread pane. CreateBareDBView is called when there is no // tree associated with the view. CreateDBView will call into CreateBareDBView... function CreateBareDBView(originalView, msgFolder, viewType, viewFlags, sortType, sortOrder) { var dbviewContractId = "@mozilla.org/messenger/msgdbview;1?type="; // hack to turn this into an integer, if it was a string // it would be a string if it came from localStore.rdf viewType = viewType - 0; switch (viewType) { case nsMsgViewType.eShowQuickSearchResults: dbviewContractId += "quicksearch"; break; case nsMsgViewType.eShowThreadsWithUnread: dbviewContractId += "threadswithunread"; break; case nsMsgViewType.eShowWatchedThreadsWithUnread: dbviewContractId += "watchedthreadswithunread"; break; case nsMsgViewType.eShowAllThreads: default: dbviewContractId += "threaded"; break; } if (!originalView) gDBView = Components.classes[dbviewContractId].createInstance(Components.interfaces.nsIMsgDBView); gCurViewFlags = viewFlags; var count = new Object; if (!gThreadPaneCommandUpdater) gThreadPaneCommandUpdater = new nsMsgDBViewCommandUpdater(); if ((sortType == nsMsgViewSortType.byAuthor) && IsSpecialFolder(msgFolder, MSG_FOLDER_FLAG_SENTMAIL | MSG_FOLDER_FLAG_DRAFTS | MSG_FOLDER_FLAG_QUEUE)) { gCurSortType = nsMsgViewSortType.byRecipient; } else { gCurSortType = sortType; } if (!originalView) { gDBView.init(messenger, msgWindow, gThreadPaneCommandUpdater); var treatRecipientAsAuthor = IsSpecialFolder(msgFolder, MSG_FOLDER_FLAG_SENTMAIL | MSG_FOLDER_FLAG_DRAFTS | MSG_FOLDER_FLAG_QUEUE); gDBView.open(msgFolder, gCurSortType, sortOrder, viewFlags, treatRecipientAsAuthor, count); } else { gDBView = originalView.cloneDBView(messenger, msgWindow, gThreadPaneCommandUpdater); } } function CreateDBView(msgFolder, viewType, viewFlags, sortType, sortOrder) { // call the inner create method CreateBareDBView(null, msgFolder, viewType, viewFlags, sortType, sortOrder); // now do tree specific work // based on the collapsed state of the thread pane/message pane splitter, // suppress message display if appropriate. gDBView.suppressMsgDisplay = IsThreadAndMessagePaneSplitterCollapsed(); UpdateSortIndicators(gCurSortType, sortOrder); } function SetViewFlags(viewFlags) { if (!gDBView) return; gDBView.viewFlags = viewFlags; } //------------------------------------------------------------ // Sets the column header sort icon based on the requested // column and direction. // // Notes: // (1) This function relies on the first part of the // <treecell id> matching the <treecol id>. The treecell // id must have a "Header" suffix. // (2) By changing the "sortDirection" attribute, a different // CSS style will be used, thus changing the icon based on // the "sortDirection" parameter. //------------------------------------------------------------ function UpdateSortIndicator(column,sortDirection) { // this is obsolete } function GetSelectedFolderResource() { var folderTree = GetFolderTree(); var startIndex = {}; var endIndex = {}; folderTree.treeBoxObject.selection.getRangeAt(0, startIndex, endIndex); return GetFolderResource(folderTree, startIndex.value); } function NotifyChangedMessagePaneVisibility(now_hidden) { var event = document.createEvent('Events'); if (now_hidden) { event.initEvent('messagepane-hide', false, true); } else { event.initEvent('messagepane-unhide', false, true); } document.getElementById("messengerWindow").dispatchEvent(event); } function OnMouseUpThreadAndMessagePaneSplitter() { // the collapsed state is the state after we released the mouse // so we take it as it is var now_hidden = IsThreadAndMessagePaneSplitterCollapsed(); if (gDBView) { gDBView.suppressMsgDisplay = now_hidden; } NotifyChangedMessagePaneVisibility(now_hidden); } function OnClickThreadAndMessagePaneSplitterGrippy() { // the collapsed state is the state when we clicked on the grippy // not when afterwards, so we need to reverse this value var now_hidden = !IsThreadAndMessagePaneSplitterCollapsed(); if (gDBView) { gDBView.suppressMsgDisplay = now_hidden; } NotifyChangedMessagePaneVisibility(now_hidden); } function FolderPaneSelectionChange() { var folderTree = GetFolderTree(); var folderSelection = folderTree.treeBoxObject.selection; // This prevents a folder from being loaded in the case that the user // has right-clicked on a folder different from the one that was // originally highlighted. On a right-click, the highlight (selection) // of a row will be different from the value of currentIndex, thus if // the currentIndex is not selected, it means the user right-clicked // and we don't want to load the contents of the folder. if (!folderSelection.isSelected(folderSelection.currentIndex)) return; if(gTimelineEnabled) { gTimelineService.startTimer("FolderLoading"); gTimelineService.enter("FolderLoading has Started"); } if (folderSelection.count == 1) { var startIndex = {}; var endIndex = {}; folderSelection.getRangeAt(0, startIndex, endIndex); var folderResource = GetFolderResource(folderTree, startIndex.value); var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); if (msgFolder == msgWindow.openFolder) return; else { var sortType = 0; var sortOrder = 0; var viewFlags = 0; var viewType = 0; // don't get the db if this folder is a server // we're going to be display account central if (!(msgFolder.isServer)) { try { var msgDatabase = msgFolder.getMsgDatabase(msgWindow); if (msgDatabase) { var dbFolderInfo = msgDatabase.dBFolderInfo; sortType = dbFolderInfo.sortType; sortOrder = dbFolderInfo.sortOrder; viewFlags = dbFolderInfo.viewFlags; viewType = dbFolderInfo.viewType; msgDatabase = null; dbFolderInfo = null; } } catch (ex) { dump("failed to get view & sort values. ex = " + ex +"\n"); } } if (gDBView && gDBView.viewType == nsMsgViewType.eShowQuickSearchResults) { if (gPreQuickSearchView) //close cached view before quick search { gPreQuickSearchView.close(); gPreQuickSearchView = null; } var searchInput = document.getElementById("searchInput"); //reset the search input on folder switch if (searchInput) searchInput.value = ""; } ClearMessagePane(); if (gSearchEmailAddress || gDefaultSearchViewTerms) viewType = nsMsgViewType.eShowQuickSearchResults; else if (viewType == nsMsgViewType.eShowQuickSearchResults) viewType = nsMsgViewType.eShowAllThreads; //override viewType - we don't want to start w/ quick search ChangeFolderByURI(folderResource.Value, viewType, viewFlags, sortType, sortOrder); } } else { msgWindow.openFolder = null; ClearThreadPane(); } if (gAccountCentralLoaded) UpdateMailToolbar("gAccountCentralLoaded"); else if (gFakeAccountPageLoaded) UpdateMailToolbar("gFakeAccountPageLoaded"); else document.getElementById('advancedButton').setAttribute("disabled" , !(IsCanSearchMessagesEnabled())); if (gDisplayStartupPage) { loadStartPage(); gDisplayStartupPage = false; UpdateMailToolbar("gDisplayStartupPage"); } } function ClearThreadPane() { if (gDBView) { gDBView.close(); gDBView = null; } } function IsSpecialFolder(msgFolder, flags) { if (!msgFolder) { return false; } else if ((msgFolder.flags & flags) == 0) { var parentMsgFolder = msgFolder.parentMsgFolder; if(!parentMsgFolder) { return false; } return IsSpecialFolder(parentMsgFolder, flags); } else { // the user can set their INBOX to be their SENT folder. // in that case, we want this folder to act like an INBOX, // and not a SENT folder if ((flags & MSG_FOLDER_FLAG_SENTMAIL) && (msgFolder.flags & MSG_FOLDER_FLAG_INBOX)) { return false; } else { return true; } } } function SelectNextMessage(nextMessage) { dump("XXX implement SelectNextMessage()\n"); } function GetSelectTrashUri(folder) { if (!folder) return null; var uri = folder.getAttribute('id'); var resource = RDF.GetResource(uri); var msgFolder = resource.QueryInterface(Components.interfaces.nsIMsgFolder); if (msgFolder) { var rootFolder = msgFolder.rootFolder; var numFolder; var out = new Object(); var trashFolder = rootFolder.getFoldersWithFlag(MSG_FOLDER_FLAG_TRASH, 1, out); numFolder = out.value; if (trashFolder) { return trashFolder.URI; } } return null; } function Undo() { messenger.Undo(msgWindow); } function Redo() { messenger.Redo(msgWindow); } var mailOfflineObserver = { observe: function(subject, topic, state) { // sanity checks if (topic != "network:offline-status-changed") return; MailOfflineStateChanged(state == "offline"); } } function AddMailOfflineObserver() { var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(mailOfflineObserver, "network:offline-status-changed", false); } function RemoveMailOfflineObserver() { var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(mailOfflineObserver,"network:offline-status-changed"); }
sorry i forgot to mention in comment #2... In JavaScript Console ... Error: redeclaration of const MSG_FOLDER_FLAG_TRASH
This appears to be a duplicate of Bug 192780 (applies to POP mail only). It has been fixed in 1.4a and subsequent nightly builds, and will be part of the 1.3.1 release as well. For a workaround, see Bug 184959 Comment 19. btw, that Javascript thing was a red herring. Timeless, you shoulda known better! This bug has been massively duped in 1.3.
*** This bug has been marked as a duplicate of 192780 ***
Status: UNCONFIRMED → RESOLVED
Closed: 23 years ago
Resolution: --- → DUPLICATE
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.