Closed Bug 44163 Opened 25 years ago Closed 25 years ago

improperly parented modal dialog in nsImapIncomingServer.cpp

Categories

(MailNews Core :: Networking: IMAP, defect, P3)

defect

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: danm.moz, Assigned: mscott)

References

Details

(Keywords: embed, Whiteboard: [nsbeta3+][nsbeta2-])

Attachments

(1 file)

nsNetSupportDialog should only be used as a backup plan if no other nsIPrompt interface is available. It has been used in dozens of places because of its seductive convenience. But it's flawed, creating modal windows that don't behave correctly; the cause of various blanket bugs like 25684 and 39439 (both currently considered nsbeta2+). This problem can only be fixed by trying much harder to find a proper window to be the modal dialog's parent. nsNetSupportDialog should be relegated to providing backup when herculean efforts to locate the actual parent window fail for some reason. As an example, the cookie service has been taught to use a proper parent window for its dialog by laboriously storing a reference to that window's nsIPrompt in nsHTTPChannel, from which it can be extracted and passed around while processing notification events, punting to nsNetSupportDialog only when no other choice is available. That same sort of thing needs to be done in many more places. There are two such places in nsImapIncomingServer.cpp: FEAlert and FEAlertFromServer. Happy recipients of this bug would spread the happiness most widely if they would start using a good nsIPrompt window. The "modal windows don't behave nicely" bugs are being made dependent on this bug and its siblings, and will eventually be closed as "as fixed as they're going to get" once these have all been considered.
Blocks: 25684
I believe these bugs are supposed to be nsbeta2. See 44164 for an example.
Keywords: nsbeta2
Putting on [nsbeta2+] radar for beta2 fix.
Whiteboard: [nsbeta2+]
setting estimated completion date.
Whiteboard: [nsbeta2+] → [nsbeta2+] Est. 7/21
.
Target Milestone: --- → M17
I would not hold nsbeta2 for this. Per the leads meeting today that's the new litmus test. Adding the nsbeta2-.
Keywords: nsbeta3
Whiteboard: [nsbeta2+] Est. 7/21 → [nsbeta2-]
Target Milestone: M17 → M18
Keywords: mail4
+ per mail triage
Whiteboard: [nsbeta2-] → [nsbeta3+][nsbeta2-]
Because of the use of nsCommonDialogs, or the use of the nsIPrompt service, this component can not be used for embedding. Adding the embedding keyword. How To Bring Up A Modal Dialog: You need to know what window you want to have modality against. This will be a nsIDOMWindow. Using a magic "hidden" window breaks modality and embedding application may not have this hack. One you have the parent DOMWindow, you simply: nsCOMPtr<nsIPrompt> prompter; aDOMWinow->GetPrompt(getter_AddRefs(prompter)); if (prompter) prompter-> Any other way that you try to bring up a dialog may not work in an embedding application. To reiterate, do not use the nsICommonDialogs interface -or- a nsIPrompt service if you want your component in a non-seamonkey app. I don't have a DOMWindow?! If you don't have a DOMWindow, you need to get one. Just about every place I saw that used the hidden window, could have used the real parent window with some work. There really is no place in the code where we should be displaying a modal dialog without knowing what parent window we are modal against. If you find a case where you don't have a top level window, lets talk.
Keywords: embed
Attached patch proposed fixSplinter Review
I've attached the fix for this. Bienvenu can you code review it? I just changed FEAlert and FEAlertFromServer to take a message window. Then instead of using the prompt service we get the prompt associated with the message window. (most of the changes in nsImapIncomingServer are just white space)
Status: NEW → ASSIGNED
sure, r=bienvenu
Fix checked in.
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
What is the dialog that gets brought up for this? (so we can verify)
verifying ....
nsIPrompt is being used now.
Status: RESOLVED → VERIFIED
Product: MailNews → Core
Product: Core → MailNews Core
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: