Add a new preference, clibboard.plainTextOnly.
1. On: we only support kUnicodeMIME in SetData/GetData.
2. Off: we can support different MIME types in SetData/GetData
BTW, "copy image" is dependent on non-text/rich text support, so this
menu item is also disabled after we turn the pref off.
This code is super-hairy, but I think this is the minimum amount of changes
that we need.
nsPlainTextSerializer::IsInPre() before this patch is completely broken, and
I changed it to maintain a stack of bools representing whether the elements
that we saw as we were traversing the tree are preformatted or not.
nsXHTMLContentSerializer maintains this information using a counter, which is
broken in case pre and non-preformatted elements are stacked underneath each
other, but I'm not sure why this code is using a counter and I didn't want to
change it drastically, so for now I'm just making it look at the element's
style first as opposed to its tag name.
Follow-up work may include exploring whether nsXHTMLContentSerializer should
use a stack similar to nsPlainTextSerializer, and also audit this code for
more places where things are hardcoded based on tag names where we should be
really looking at the style.
This code is super-hairy, but I think this is the minimum amount of changes
that we need.
nsPlainTextSerializer::IsInPre() before this patch is completely broken, and
I changed it to maintain a stack of bools representing whether the elements
that we saw as we were traversing the tree are preformatted or not.
nsXHTMLContentSerializer maintains this information using a counter, which is
broken in case pre and non-preformatted elements are stacked underneath each
other, but I'm not sure why this code is using a counter and I didn't want to
change it drastically, so for now I'm just making it look at the element's
style first as opposed to its tag name.
Follow-up work may include exploring whether nsXHTMLContentSerializer should
use a stack similar to nsPlainTextSerializer, and also audit this code for
more places where things are hardcoded based on tag names where we should be
really looking at the style.
Previously this code only handled the special case of a <body> element that
had an explicit style attribute, which doesn't really make sense. Now we
do the right thing based on the computed white-space style.