Closed Bug 954158 Opened 10 years ago Closed 10 years ago

After selecting Themes is not possible to switch the submenu.

Categories

(Instantbird Graveyard :: Preferences, defect)

defect
Not set
major

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: bugzilla, Assigned: florian)

Details

(Whiteboard: [0.3-blocking])

Attachments

(2 files)

*** Original post on bio 723 by Michal Stanke <michal.stanke AT mikk.cz> at 2011-03-05 19:42:00 UTC ***

After I select Themes in the Preferences window, it's impossible to browse submenu in any panel till you close and reopen the window. It's not affected if you are using any emoticons or not.
_____
0.3a2pre (20110304041807)
Attached image screenshot
*** Original post on bio 723 as attmnt 549 by michal.stanke AT mikk.cz at 2011-03-05 19:43:00 UTC was without comment, so any subsequent comment numbers will be shifted ***
*** Original post on bio 723 by tymerkaev AT gmail.com at 2011-03-05 19:45:59 UTC ***

confirmed with new profile
Status: UNCONFIRMED → NEW
Ever confirmed: true
*** Original post on bio 723 at 2011-03-05 19:47:27 UTC ***

When reproducing, I see this in the error console:
Error: tab.parentNode is undefined
Source File: chrome://global/content/bindings/tabbox.xml
Line: 773
*** Original post on bio 723 at 2011-03-05 19:52:25 UTC ***

I suspect this is because importing jsProtoHelper.jsm breaks setTimeout arguments. If so, it's a regression from https://hg.instantbird.org/instantbird/rev/29458856cc04
Severity: normal → major
OS: Windows XP → All
Hardware: x86 → All
Whiteboard: [0.3-blocking]
*** Original post on bio 723 as attmnt 554 at 2011-03-06 12:41:00 UTC ***

My guess in comment 4 was right. Scoping the symbols imported from jsProtoHelper (and so not replacing the window.setTimeout by the jsProtoHelper setTimeout implementation) makes the bug disappear.

This is more or less a workaround as it doesn't really fix the broken setTimeout implementation (I don't understand why it's broken :-/), but it's cleaner to not import jsProtoHelper for all the prefwindow panes, so it's probably a good idea to take this patch anyway.
*** Original post on bio 723 at 2011-03-11 15:35:48 UTC ***

Fixed by https://hg.instantbird.org/instantbird/rev/a41a0948f778

The setTimeout implementation didn't work because I used "call" somewhere I should have used "apply".

I also fixed the problem explained in http://www.joshmatthews.net/blog/2011/03/nsitimer-anti-pattern/ and https://bugzilla.mozilla.org/show_bug.cgi?id=640629.

Attachment 8352295 [details] [diff] (bio-attmnt 554) is included too because it avoids polluting the global window scope of the prefwindow.
Assignee: nobody → florian
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → 0.3a2
You need to log in before you can comment on or make changes to this bug.