Need some help with styles
Jos van den Oever
jos at vandenoever.info
Tue Nov 8 15:24:41 GMT 2016
Hello Dag,
The way the inhertance works is described here:
http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416276_253892949
Roughly, if a style does not define a property, there are quite a few places
where the code can look to find a value. First it looks in the parent styles.
If those do not define the property, that style of the parent element (and it's
parent styles) are queried. If that leads nowhere, the <style:default-style/>
comes into play and only then should the code resort to using an
implementation specific default value.
Cheers,
Jos
On Tuesday 08 November 2016 14:25:54 Dag wrote:
> Hi, I'm tracking a bug in Sheets style handling but I'm uncertain of how
> to fix it because I don't understand the code alt. how styles should
> work.
>
> I thought default styles where used when there was no style assigned to
> an object, and *maybe* used to give default values for things not
> specified in a style (but I thought parent style where used for that)?
>
> In Odf::loadSheetInsertStyles()
> we have code like this:
> if (autoStyles.contains(styleNames[i])) {
> Style style;
> style.setDefault(); // "overwrite" existing style
> style.merge(autoStyles[styleNames[i]]);
> outStyleRegions.append(qMakePair(styleRegion, style));
> } else {
>
> which effectivly adds a default sub style to the autostyle.
>
> Then there is the comment: // "overwrite" existing style
> What can that mean?
>
> Later a new style is composed based on this style with code in:
> StyleStorage::composeStyle()
>
> for (int i = 0; i < subStyles.count(); ++i) {
> if (subStyles[i]->type() == Style::DefaultStyleKey) {
> style = *styleManager()->defaultStyle();
> qDebug()<<Q_FUNC_INFO<<subStyles<<"default:"<<style;
> } else if (subStyles[i]->type() == Style::NamedStyleKey) {
> etc. (adding the different substyles)
>
> One problem here is that the position of the default substyle in the
> list seems to be random, and since all substyles positioned *before* the
> default substyle is forgotten about, the resulting style is also random.
>
> Boudewijn, git blame says you added this in 2009, I'm sure you can
> remember why? It is only 7 years ago :)
>
> The way I hit this was to format a number as scientific and then
> save/load; sometimes it is formatted as scientific, other times as a
> float.
>
> Cheers, Dag
More information about the calligra-devel
mailing list