Need some help with styles
Dag
danders at get2net.dk
Tue Nov 8 15:03:25 GMT 2016
Jos van den Oever skrev den 2016-11-08 16:24:
> 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
Yes, this looks fairly sane, thanks.
>
> 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.
I think Sheets are close to doing this, except for the case I outline
below but I have to look at it again with a clear head.
Thanks again.
>
> 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