Phillip J. Eby wrote:
The reason for #2 is to support upgrading; when a new version of a parcel is loaded, all the values set in installParcel() will override any existing values, thus wiping out the preferences. And, since initialValue settings are only applied when an item is created, an upgrade that adds new preferences will find the preference data missing from the preferences item.

+1 to this idea, I think I must have glossed over that in your last post.

(This is actually how we did it in mozilla as well - the default value was stored internally as a part of the app, and only used as backing for when the user's preference wasn't already set - that's why some preferences are bold in about:config - those are the ones that have a 'local' or user-set value)

Alec
By contrast, a preference attribute's 'defaultValue' will always be seen if no value has been specifically assigned to the attribute. This also means that when an upgrade occurs, we can change the default setting for a preference, and it will apply as long as the user has never changed the original setting. For example, if we have a "theme" preference, and the user never changes it, then when we change the default theme in an upgrade, the new default theme will automatically be selected.

Anyway, this is probably more detailed than what you wanted to get into right now, but I thought I should mention it for future reference. That is, we need to include consideration of what happens to preferences during upgrading, even if we decide on a different policy than what I'm describing here.


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev

Reply via email to