Closed
Bug 285513
Opened 20 years ago
Closed 20 years ago
Selected options pane fails to persist if the last selected pane no longer exists
Categories
(Toolkit :: Preferences, defect)
Toolkit
Preferences
Tracking
()
RESOLVED
FIXED
mozilla1.8beta3
People
(Reporter: mossop, Assigned: mossop)
References
Details
Attachments
(6 obsolete files)
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8b2) Gecko/20050309 Firefox/1.0+ Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8b2) Gecko/20050309 Firefox/1.0+ If the last selected options pane no longer exists then when options is displayed it shows a blank pane, and will do every time it is opened until the entry in localstore.rdf is changed. Reproducible: Always Steps to Reproduce: 1. Install an extension that adds a new pane to the options dialog (e.g. JavaScript Options <=0.7). 2. Open the options and select the added pane. Close options with this pane selected. 3. Uninstall the extension and restart Firefox. 4. Open the options. Actual Results: A blank options window shows. Selecting one of the panes displays it just fine, but after closing and re-opening options a blank pane is shown once again. Expected Results: Spotted that the last selected pane no longer exists and used one of the others instead.
| Assignee | ||
Comment 1•20 years ago
|
||
There is a fairly simple fix that should probably suffice. Sorry I don't know
how to make patches, but in toolkit/content/widgets/preferences.xml, the line
(currently 460):
var lastPane = this.lastSelected ? document.getElementById(this.lastSelected) :
panes[0];
Should be followed with:
if (!lastPane)
lastPane=panes[0];
| Assignee | ||
Comment 2•20 years ago
|
||
Tested this patch on build and it works. I can't imagine there being any problems caused by it.
| Assignee | ||
Comment 3•20 years ago
|
||
This occurs on all platforms on the trunk. This will cause problems for people uninstalling some extensions in 1.1 so I think it should be blocking.
OS: Linux → All
Hardware: PC → All
Version: unspecified → Trunk
| Assignee | ||
Updated•20 years ago
|
Flags: blocking-aviary1.1?
| Assignee | ||
Comment 4•20 years ago
|
||
My bad. The last patch only made a valid pane display when an invalid pane was persisted, it did not fix the persistence problem itself. This is a proper fix.
Attachment #180393 -
Attachment is obsolete: true
| Assignee | ||
Comment 5•20 years ago
|
||
Comment on attachment 180398 [details] [diff] [review] Properly fixes the problem Requesting review. I'm new to this game, hopefully this is the right process.
Attachment #180398 -
Flags: review?(mconnor)
Updated•20 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
| Assignee | ||
Updated•20 years ago
|
Attachment #180398 -
Flags: review?(mconnor)
| Assignee | ||
Comment 6•20 years ago
|
||
Comment on attachment 180398 [details] [diff] [review] Properly fixes the problem The patch for Bug 284081 may have fixed this. Regardless it makes this patch unusable so I will revisit this when I get a chance.
Attachment #180398 -
Attachment is obsolete: true
| Assignee | ||
Comment 7•20 years ago
|
||
When trying to choose the first pane to display we try to retrieve the last displayed pane. If it doesnt exist then clear lastSelected since other code relies on it, and choose the first pane. Then do the extra check for a window argument. Re-requesting review.
Attachment #182188 -
Flags: review?(mconnor)
Comment 8•20 years ago
|
||
Comment on attachment 182188 [details] [diff] [review] Detects the problem and corrects >+ if (this.lastSelected) { >+ paneToLoad = document.getElementById(this.lastSelected); >+ if (!paneToLoad) { >+ paneToLoad=panes[0]; >+ this.lastSelected=null; nit, spaces around the = the two previous lines. >+ } >+ } >+ else { >+ paneToLoad=panes[0]; >+ } >+ there's no sense setting it here if we're setting it below. Drop the else statement, and after the if block below, do this, since this ensures that somehow we get a valid pane and we don't break (i.e. invalid pane arg). if (!paneToLoad) paneToLoad = panes[0]; > if ("arguments" in window && window.arguments[0]) > paneToLoad = document.getElementById(window.arguments[0]); r=me once I see the changes :)
Attachment #182188 -
Flags: review?(mconnor) → review-
| Assignee | ||
Comment 9•20 years ago
|
||
This fix now basically does two things. The first part checks if lastSelected is valid. If not it sets it to null which is the same state as when the options dialog has never been opened before. This is necessary since most of the pane changing code breaks if lastSelected is invalid. The second part just checks that any pane passed as an argument is actually valid before using it. The lastSelected pane is held in a local variable between the two parts to save a call to getDocumentElementById
Attachment #182188 -
Attachment is obsolete: true
Attachment #183941 -
Flags: review?(mconnor)
Comment 10•20 years ago
|
||
Comment on attachment 183941 [details] [diff] [review] Fix addressing mconnor's comments > var paneToLoad; >- if ("arguments" in window && window.arguments[0]) >+ if (("arguments" in window && window.arguments[0]) && (document.getElementById(window.arguments[0]))) r=me, with the above changed to this since its cleaner and has the same result: if ("arguments" in window && document.getElementById(window.arguments[0])) sorry this got lost in the cycle.
Attachment #183941 -
Flags: review?(mconnor) → review+
| Assignee | ||
Comment 11•20 years ago
|
||
Last change made. Looking for approval for 1.1a2
Attachment #183941 -
Attachment is obsolete: true
Attachment #184937 -
Flags: approval-aviary1.1a2?
Comment 12•20 years ago
|
||
Comment on attachment 184937 [details] [diff] [review] Final fix with mconnor's review marking r+ for mconnor, and a=shaver.
Attachment #184937 -
Flags: review+
Attachment #184937 -
Flags: approval-aviary1.1a2?
Attachment #184937 -
Flags: approval-aviary1.1a2+
Comment 13•20 years ago
|
||
Comment on attachment 184937 [details] [diff] [review] Final fix with mconnor's review as i explained to mconnor, who apparently failed to act on this before shaver got around to this bug in his queue, mconnor's advice was absolutely wrong. you will get an assert if you pass '' to getElementById, your older patch was better. i'm sorry.
Attachment #184937 -
Attachment is obsolete: true
Attachment #184937 -
Flags: review-
Attachment #184937 -
Flags: review+
Attachment #184937 -
Flags: approval-aviary1.1a2+
| Assignee | ||
Comment 14•20 years ago
|
||
Comment on attachment 183941 [details] [diff] [review] Fix addressing mconnor's comments Bringing back earlier patch, requesting review.
Attachment #183941 -
Attachment is obsolete: false
Attachment #183941 -
Flags: approval-aviary1.1a2?
Comment 15•20 years ago
|
||
at least attach a patch without the extraneous brackets. I'm waiting on review to remove the unnecessary assert here, but I suppose the empty-check is ok.
| Assignee | ||
Comment 16•20 years ago
|
||
Attachment #183941 -
Attachment is obsolete: true
Attachment #185034 -
Flags: review?(mconnor)
Attachment #185034 -
Flags: approval-aviary1.1a2?
Updated•20 years ago
|
Attachment #185034 -
Flags: review?(mconnor) → review+
Comment 17•20 years ago
|
||
Comment on attachment 183941 [details] [diff] [review] Fix addressing mconnor's comments a=shaver
Attachment #183941 -
Flags: approval-aviary1.1a2? → approval-aviary1.1a2+
Comment 18•20 years ago
|
||
Comment on attachment 185034 [details] [diff] [review] Hopefully the last patch a=shaver
Attachment #185034 -
Flags: approval-aviary1.1a2? → approval-aviary1.1a2+
Comment 19•20 years ago
|
||
*** Bug 296434 has been marked as a duplicate of this bug. ***
| Assignee | ||
Comment 20•20 years ago
|
||
I can't checkin so if someone could put this in that would be great.
| Assignee | ||
Updated•20 years ago
|
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
| Assignee | ||
Comment 21•20 years ago
|
||
Updated product to help people searching later
Product: Firefox → Toolkit
Target Milestone: --- → mozilla1.8beta3
Version: Trunk → unspecified
Comment 22•20 years ago
|
||
Comment on attachment 185034 [details] [diff] [review] Hopefully the last patch mozilla/toolkit/content/widgets/preferences.xml 1.16
Attachment #185034 -
Attachment is obsolete: true
Attachment #185034 -
Flags: review+
Updated•20 years ago
|
Flags: blocking-aviary1.1?
Updated•18 years ago
|
Flags: in-testsuite?
You need to log in
before you can comment on or make changes to this bug.
Description
•