Closed Bug 458512 Opened 17 years ago Closed 17 years ago

Polish toEM() and also toOpenWindowByType() should support more parameters.

Categories

(SeaMonkey :: UI Design, enhancement)

enhancement
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
seamonkey2.0a3

People

(Reporter: philip.chee, Assigned: philip.chee)

References

Details

Attachments

(1 file, 2 obsolete files)

While looking at Bug 456869 I filed Bug 458505 and then I came across Bug 407383 (Manage Add-ons in Preferences may open the add-on manager with an irrelevant pane selected). We should probably take this polish as well in our toEM() function. However it's just a wrapper for toOpenWindowByType() which takes just two parameters: function toOpenWindowByType( inType, uri ) The Firefox version is: function toOpenWindowByType(inType, uri, features) We probably would need something like: function toOpenWindowByType(inType, uri, features, params) *AND* return a handle to the window opened.
Blocks: 455001
Blocks: 465771
Changes: 1. toEM() now supports the pane parameter like the Firefox equivalent BrowserOpenAddonsMgr(). It's still a wrapper around toOpenWindowByType() where all the work is actually done. 2. toOpenWindowByType() 2a. Supports a third parameter "features" for compatibility with Firefox. 2b. Added two more parameters: winArgs and callback. 2c. |winArgs| are the extra arguments to be passed to the openDialog() call. It can be a string or an array or strings. 2d. |callback| is a function that is called when an existing window is detected. A handle to the existing window is passed to |callback|. This allows toEM() to call the showView() function in the context of the Addons Manager window.
Assignee: nobody → philip.chee
Attachment #356150 - Flags: superreview?(neil)
Attachment #356150 - Flags: review?(jag)
Comment on attachment 356150 [details] [diff] [review] Patch v1.0 toEM() and toOpenWindowByType() So, I'm tempted to think that this patch is overkill, so here's my suggestion: function toEM( pane ) { var win = toOpenWindowByType("Extension:Manager", "chrome://mozapps/content/extensions/extensions.xul", "all,dialog=no", pane); if (win) // found an existing window win.showView(pane); } function toOpenWindowByType( inType, uri, features, arg ) { // don't do several loads in parallel if (uri in window) return null; var topWindow = Components.classes['@mozilla.org/appshell/window-mediator;1'] .getService(nsIWindowMediator) .getMostRecentWindow(inType); if (topWindow) { toOpenWindow(topWindow); return topWindow; } // open the requested window, but block it until it's fully loaded function newWindowLoaded(event) { // make sure that this handler is called only once window.removeEventListener("unload", newWindowLoaded, false); window[uri].removeEventListener("load", newWindowLoaded, false); delete window[uri]; } // remember the newly loading window until it's fully loaded // or until the current window passes away window[uri] = window.openDialog(uri, "", features || "all,dialog=no", arg); window[uri].addEventListener("load", newWindowLoaded, false); window.addEventListener("unload", newWindowLoaded, false); return null; }
Attachment #356150 - Flags: superreview?(neil) → superreview-
Comment on attachment 356150 [details] [diff] [review] Patch v1.0 toEM() and toOpenWindowByType() As discussed on IRC, both of our versions are wrong ;-)
Attachment #356150 - Flags: review?(jag)
> As discussed on IRC, both of our versions are wrong ;-) For the record in case someone reading this wonders why, Neils suggested code doesn't work well because the addons window doesn't like being passed a null in window.arguments[0] nor in showView().
Attached patch Patch v1.1 Minimal Fix (obsolete) — Splinter Review
As discussed over irc this version is far less ambitious. 1. toEM(aPane) is a direct port of the Firefox BrowserOpenAddonsMgr(aPane) 2. toOpenWindowByType() just adds support for window features as the third parameter for parity with the red panda.
Attachment #356150 - Attachment is obsolete: true
Attachment #356329 - Flags: superreview?(neil)
Attachment #356329 - Flags: review?(neil)
(In reply to comment #5) > Created an attachment (id=356329) [details] > Patch v1.1 Minimal Fix > > As discussed over irc this version is far less ambitious. > > 1. toEM(aPane) is a direct port of the Firefox BrowserOpenAddonsMgr(aPane) + const EMTYPE = "Extension:Manager"; Why using a const only once?
Comment on attachment 356329 [details] [diff] [review] Patch v1.1 Minimal Fix Only remove the constants if you feel like it.
Attachment #356329 - Flags: superreview?(neil)
Attachment #356329 - Flags: superreview+
Attachment #356329 - Flags: review?(neil)
Attachment #356329 - Flags: review+
Patch for checkin. Carrying forward r+/sr+ > + const EMTYPE = "Extension:Manager"; > Why using a const only once? Too much cut and paste (from Firefox).
Attachment #356329 - Attachment is obsolete: true
Attachment #356370 - Flags: superreview+
Attachment #356370 - Flags: review+
Keywords: checkin-needed
Whiteboard: [checkin comment #8]
Attachment #356370 - Attachment description: Patch v1.2 [for checkin] → Patch v1.2 [Checkin: Comment 9]
Status: NEW → RESOLVED
Closed: 17 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Whiteboard: [checkin comment #8]
Target Milestone: --- → seamonkey2.0a3
Blocks: 483960
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: