[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: Re: koffice/libs/kotext/opendocument
From: Thorsten Zachmann <t.zachmann () zagge ! de>
Date: 2010-11-16 6:01:06
Message-ID: 201011160701.07894.t.zachmann () zagge ! de
[Download RAW message or body]
On Monday, November 08, 2010 10:32:17 you wrote:
> On Monday 8. November 2010 04.33.33 Thorsten Zachmann wrote:
> > Hello Thomas,
> >
> > On Sunday, November 07, 2010 07:04:18 pm Thomas Zander wrote:
> > > if (styleManager) {
> > >
> > > - styleManager->add(it->second);
> > > + styleManager->add(odfStyle.style);
> > >
> > > } else {
> > >
> > > - d->characterStylesToDelete.append(it->second);
> > > + if (!odfStyle.parentStyle.isEmpty()) { // an auto style
with a parent.
> > > + // lets find the parent and set the styleId of that one
on the auto-style too.
> > > + // this will have the effect that whereever the
autostyle is applied, it will
> > > + // cause the parent style-id to be applied. So we don't
loose this info.
> > > + KoCharacterStyle *parent =
characterStyle(odfStyle.parentStyle, false);
> > > + if (!parent)
> > > + parent = characterStyle(odfStyle.parentStyle,
true); // try harder
> > > + if (parent)
> > > + odfStyle.style->setStyleId(parent->styleId());
> > >
> > > }
> > >
> > > + d->characterStylesToDelete.append(odfStyle.style);
> >
> > there is a problem with the above code. If a style is in content.xml and
> > it is a automatic style its parent can be a automatic style in
> > content.xml or a document style in styles.xml. If it is a automatic
> > style and it is in styles.xml its parent can only be a automatic style
> > in styles.xml or a document style in styles.xml. Also a document style
> > can never have an automatic style as parent.
>
> There is a paragraph in the ODF spec (at least in 1.2) that says automatic
> styles can only have as parent non-automatic styles, aka document styles.
> So, the code makes the assumption that this is the case, if the document is
> not following the spec then indeed funny things may happen ;)
That is the point I have missed. Thanks. You are right parent styles can only
be document styles.
> > The above code is problematic as automatic styles in content.xml and
> > styles.xml can have the same name.
>
> That you can name a style in the content and a diffrent style in the styles
> xml the same is new too me, so lets see if that works...
It is true that an automatic style in content.xml and styles.xml can have the
same name.
> Hmm, if a document style in styles.xml has an odf name that is a duplicate
> of another document style in content.xml, then the design as it was before
> can't work because the line;
However there are only document styles in styles.xml so no duplicate names can
happen for document styles.
>
> addCharacterStyles(shapeContext,
> context.stylesReader().customStyles("text").values(), ContentDotXml |
> StylesDotXml, styleManager);
>
> adds each of those styles to both collections, and it would drop one style
> from those collections (but add it to the styleManager)
>
> So, maybe I misundestood? Can we really have two document styles with the
> same odf name in content.xml and styles.xml?
No. Document styles are only in styles.xml.
> If I understood correctly, do you agree I found a problem?
No problem.
There is a small thing that can be improved:
KoCharacterStyle *parent =
characterStyle(odfStyle.parentStyle, false); \
if (!parent) \
parent = characterStyle(odfStyle.parentStyle, true); //
try harder \
As doument styles are both in characterStyles of styles.xml and content.xml
only one need to be asked for the parent. So the second line can be removed.
Thorsten
_______________________________________________
koffice-devel mailing list
koffice-devel@kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic