Monday, February 25, 2008

webrunner webrunner, going faster miles an hour

Oh yeah, the tray code for Linux now has feature parity with the Windows implementation. I never could get a native GtkWindow out of Mozilla, but instead of the whole InterfaceRequestor/Docshell/BaseWindow dance I just called nsIDOMWindowInternal's Focus method and called it a day. (SetZLevel only focuses the window currently.)

I'm contemplating menus for tray icons now. Hacked together some code that builds, but I haven't hooked up the plumbing through JavaScript. My thinking is to pass a menu's nsIPopupBoxObject to the tray code to attach it to an icon that way. Since Prism uses a 1.9 XULRunner, it will have the openPopupAtScreen method, and by getting the position of the tray icon that was clicked to bring up a menu, it can be opened at a reasonably proper location (modulo problems unknown at this time).
If I could get the actual GtkMenu out of Mozilla in some way I could use GTK's own menu positioning code for tray icons, but I don't see that happening.

Since XUL overlays can be loaded on-demand using document.loadOverlay, there's no reason why there couldn't be a webapp.xul overlay for more advanced usage of Prism (like for tray icon menus). But that's not up to me to decide. Perhaps using an extension is preferable in that case.

2 comments:

Matthew Gertner said...

I'm planning to add popup menu support to the new tray icon implementation. There's already a working implementation here: https://bugzilla.mozilla.org/show_bug.cgi?id=325353. But yeah, in 1.9 this should be a bunch easier.

fredrik said...

I added a bug for my code. I wonder how much of it constitutes redoing what's already been done in the bug you mentioned.

Also, mine isn't as general-purpose as that stuff, of course. Assumes the image format is compatible, etc, along with what the installer for Prism does (with image conversions and such).