Closed Bug 580868 Opened 10 years ago Closed 10 years ago

Status Bar Icons No Longer Display

Categories

(SeaMonkey :: General, defect, P2)

Tracking

(blocking-seamonkey2.1 a3+)

RESOLVED FIXED
seamonkey2.1a3
Tracking Status
blocking-seamonkey2.1 --- a3+

People

(Reporter: therubex, Assigned: neil)

References

Details

Attachments

(3 files, 1 obsolete file)

User-Agent:       Mozilla/5.0 (Windows; Windows NT 6.1; rv:2.0b3pre) Gecko/20100721 SeaMonkey/2.1a3pre
Build Identifier: Mozilla/5.0 (Windows; Windows NT 6.1; rv:2.0b3pre) Gecko/20100721 SeaMonkey/2.1a3pre

 
(Appears that third-party) extensions that placed icons on the Status Bar no longer display.
 

Reproducible: Always

Steps to Reproduce:
 
1. Install an extension that places an icon on the Status Bar
 
Actual Results:  
 
No icon displays.
 

Expected Results:  
 
The icon should display.
 

 
Theme appears not to be an issue.

Regression between 7/20 & 7/21.
http://hg.mozilla.org/mozilla-central/pushloghtml?startdate=2010-07-20&enddate=2010-07-21

The extensions are there & do look to work.  They display in about:addons, context menu's work, shortcut keys work, you can open Properties ...

NoScript:
https://addons.mozilla.org/en-US/seamonkey/addon/722/
Actually you will need the latest #dev version here: http://noscript.net/getit#devel

Adblock Plus:
https://addons.mozilla.org/en-US/seamonkey/addon/1865/

Both NoScript & ABP have (options) to place icons on the Status Bar.
NoScript Options -> Appearance -> Status bar icon
ABP Preference -> Options -> Show in status bar

Neither (now) display.

Separately, though likely related, NoScript may display a "Status bar label", which would (normally) sit just above the Status Bar, that no longer displays.  (I believe that regression was a bit earlier.  Will have to check.)

Minefield does not show these issues.
Mozilla/5.0 (Windows; Windows NT 6.1; rv:2.0b3pre) Gecko/20100721 Minefield/4.0b3pre
(The two screenshots were actually from different Profiles.   Nevertheless, the premiss is valid.)
Oh, just some other extensions that also no longer show (other then those mentioned already):

NoSquint: http://xsidebar.mozdev.org/modifiedmisc.html#nosquint
AutoCopy: https://addons.mozilla.org/en-US/firefox/addon/383/
JSView: https://addons.mozilla.org/en-US/firefox/addon/2076/
same for win xp
> Separately, though likely related, NoScript may display a "Status bar label"

Ignore that comment.  Most likely a NoScript issue with the Trunk.  I'll pursue it there.
Status: UNCONFIRMED → NEW
Ever confirmed: true
I see this behavior (losing my NoScript icon) on my Win7-64 installation of

Mozilla/5.0 (Windows; Windows NT 6.1; WOW64; rv:2.0b3pre) Gecko/20100724 SeaMonkey/2.1a3pre.

Breaking the ability of extensions to communicate / interact with the user by using the status bar is not a good thing (obviously).
blocking-seamonkey2.1: --- → ?
Priority: -- → P2
Target Milestone: --- → seamonkey2.1a3
Version: unspecified → Trunk
Ok, partially investigated.

I first did not see this on 2.1a2 then realized I had to turn on ABP's status icon from its preferences. Once done I *do* see the icon in 2.1a2 and *not* in my self-built nightly.

I will be investigating/disecting further to see exactly where the bug lies (I'm not certain if its our side, or something the ABP developer and others need to fix on their end, but I wish to find out so at the worse case we can tell them what to do).

Assigning to myself, at least while I investigate.
Assignee: nobody → bugspam.Callek
Now i remember that i see this problem after applying Personas patch.
OS: Windows 7 → All
Hardware: x86 → All
Early on in the creation of the window (before dynamic overlays load), a reference is made to the status bar element. This causes dynamic overlays to fail to overlay the status bar. The failure appears to be related to the XBL binding on the status bar since if I comment out its content then the overlay succeeds. The details of the reference are included below but this is a potential future issue as accessing the status bar element from inline script in navigator.js causes previous builds to fail in a similar way.

Inline script in charsetOverlay.js accesses the documentElement in order to work out which charset load listener to add. This then triggers the constructor for general.xml#root-element which looks for a lightweightthemesattribute and if so loads the lightweight theme consumer which retrives the status bar element so that it can set some attributes and styles on it.
So, accessing the element triggers the XBL binding early, nut since overlays don't notify, the overlaid elements never make it into the XBL children. The easy way to verify this is to view the status bar element in DOM Inspector with and without anonymous nodes.
How does Firefox make it succeed? For the moment, they still have a status bar after all, and it works with lwthemes and 3rd-party overlays.
blocking-seamonkey2.1: ? → a3+
Attached patch Possible patch (obsolete) — Splinter Review
The easiest solution from my point of view is to defer charset menu init until we get an event that it might be interested in. We then attach the real event handler, so if the event was for the wrong target then too bad, but at least we didn't miss an event for the correct target.

Note to self: this is a -w patch, don't check it in!
Attachment #460829 - Flags: review?(gavin.sharp)
i.e. using load instead of pageshow, which fires first anyway.
Assignee: bugspam.Callek → neil
Status: NEW → ASSIGNED
Attachment #461299 - Flags: review?(gavin.sharp)
Comment on attachment 460829 [details] [diff] [review]
Possible patch

Sigh, missed a checkbox...
Attachment #460829 - Attachment is obsolete: true
Attachment #460829 - Flags: review?(gavin.sharp)
Attachment #461299 - Flags: review?(gavin.sharp) → review+
Comment on attachment 461299 [details] [diff] [review]
Updated for review comments

This stops charsetOverlay.js from touching elements and causing XBL binding to happen at an unsafe time (i.e. before layout has started).
Attachment #461299 - Flags: approval2.0?
Comment on attachment 461299 [details] [diff] [review]
Updated for review comments

a2.0=me
Attachment #461299 - Flags: approval2.0? → approval2.0+
Pushed changeset 89b995bca723 to mozilla-central.
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
I'm still have this problem in my linux build. Also changeset 89b995bca723 description says "Bug 522770 followup to fix shared build bustage r=khuey" ...
> Pushed changeset 89b995bca723 to mozilla-central.
ITYM:
http://hg.mozilla.org/mozilla-central/rev/e5e95e3947c3
Sorry, copy/paste error, I meant changeset e5e95e3947c3
Well, my NoScript and AdBlock Plus statusbar icons still missing. Fedora 13

Build identifier: Mozilla/5.0 (X11; Linux i686; rv:2.0b3pre) Gecko/20100802 NOT Firefox/3.5.5 SeaMonkey/2.1a3pre

about:buildconfig
Source

Built from http://hg.mozilla.org/mozilla-central/rev/a4d86c3a3494
Build platform
target
i686-pc-linux-gnu
Build tools
Compiler 	Version 	Compiler flags
gcc 	gcc version 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC) 	-Wall -W -Wno-unused -Wpointer-arith -Wcast-align -W -pedantic -Wno-long-long -fno-strict-aliasing -pthread -pipe -DNDEBUG -DTRIMMED -Os -freorder-blocks -fomit-frame-pointer
c++ 	gcc version 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC) 	-fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-variadic-macros -Werror=return-type -pedantic -Wno-long-long -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -Os -freorder-blocks -fomit-frame-pointer
Configure arguments

--enable-application=suite --enable-optimize --disable-debug --disable-crashreporter --enable-application=suite --enable-optimize --disable-debug --disable-crashreporter --enable-application=../suite --disable-official-branding --with-branding=../suite/branding/nightly --cache-file=.././config.cache --srcdir=/home/misak/workspace/src/mozilla
Mozilla/5.0 (Windows; Windows NT 5.1; rv:2.0b3pre) Gecko/20100802 SeaMonkey/2.1a3pre - Build ID: 20100802005711

Icons still missing
Do you have NoScript installed by chance? It looks like that add-on has a bug that triggers the same behavior, possibly doing the same that charsetOverlay did until it was fixed here...
I have NoScript installed but disabled when I post 1st message. Now I deinstall it.
No changes.
No one addons icon in statusbar.
Same for Mozilla/5.0 (X11; Linux i686; rv:2.0b3pre) Gecko/20100802 SeaMonkey/2.1a3pre - Build ID: 20100802013443
(In reply to comment #26)
> I have NoScript installed but disabled when I post 1st message. Now I deinstall
> it.

If you also have installed Adblock Plus you need to disable it too. After disabling both add-ons the status bar icons are shown again.
Adblock Plus, alone, should be working.

Appears that /at least/ two extensions are now known to cause icons to (again) disappear; NoScript & xsidebar.

NoScript thread: http://forums.informaction.com/viewtopic.php?f=10&t=4786
I posted an explanation in the mozilla.dev.extensions newsgroup:

news://news.mozilla.org:119/g56dnTkfUJt7rsrRnZ2dnUVZ_jWdnZ2d@mozilla.org
I've fixed the problem in xSidebar and pushed out another 1.2alpha:
http://downloads.mozdev.org/xsidebar/xsidebar-1.unstable.xpi

But the problem also exists with random other extensions e.g. nightly tester tools. Interestingly enough with the Organize Statusbars extension installed and having moved at least one statusbar button to a non default location, all the buttons now show up. This was initially why I never saw the problem having had OSB installed for a long time.
(In reply to comment #31)
> Interestingly enough with the Organize Statusbars extension installed and
> having moved at least one statusbar button to a non default location, all the
> buttons now show up. This was initially why I never saw the problem having
> had OSB installed for a long time.
Either ordinal attributes or DOM manipulations probably cause XBL to rebuild the statusbar logical child list thus working around the problem.
Just a FYI bug 554279 fixed a similar problem with toolbar initialization and fixed it by moving the code in the toolbar constructor to a readystate event listener. See attachment 497706 [details] [diff] [review].
You need to log in before you can comment on or make changes to this bug.