office-gobmx/xmloff/source/text/XMLTextListBlockContext.hxx
Michael Stahl 5467411488 tdf#114287 tdf#159366 xmloff: ODF import: revert text:list override
This reverts commit ade0a153f4 "tdf#114287
xmloff: ODF import: fix text:list override of list style" and subsequent
commits 7cf5faec6f and
1b2a6b9829.

It turns out that there is actually a paragraph in ODF 1.2 and later
that gives paragraph's indent priority over the list style's, which i
unfortunately missed when investigating the above issues:

  17.20  <style:list-level-label-alignment>
  ...

  The fo:text-indent and fo:margin-left attributes are evaluated only
  for paragraphs inside list items whose paragraph styles do not specify
  them. If one of the two properties, or both, are specified by the
  paragraph style, the text indent and/or left margin are taken from the
  paragraph style. In this case the paragraph style's properties are
  used to determine the indent and margin for the text lines and thus
  also the alignment position.

This is usually interpreted as "on the same level", so applying a
list-style at a paragraph style overrides the indents inherited from a
parent paragraph style, but if the style then specifies its own indents
that overrides the list style's indents.

Furthermore it turns out that Google Docs now imports this bugdoc the
same way as LO 7.5 does; unclear if that changed recently (it shows
it like Word does in the preview, but like LO 7.5 does after opening it).

This means the way MS Word imports the bugdoc, which remains unchanged,
now looks like a bug and we should not change LO to be compatible with
it (when the same structure is created in Word, storing to ODF and
loading again, it looks different too).

Change-Id: I0c65bde38de9e6fcbccec55899c60c3245adb5ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166309
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Tested-by: Jenkins
2024-04-26 13:08:35 +02:00

77 lines
2.9 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#pragma once
#include <com/sun/star/container/XIndexReplace.hpp>
#include <xmloff/xmlictxt.hxx>
class XMLTextImportHelper;
class XMLTextListBlockContext : public SvXMLImportContext
{
XMLTextImportHelper& mrTxtImport;
css::uno::Reference< css::container::XIndexReplace > mxNumRules;
// text:style-name property of <list> element
OUString msListStyleName;
rtl::Reference<XMLTextListBlockContext> mxParentListBlock;
sal_Int16 mnLevel;
bool mbRestartNumbering;
bool mbSetDefaults;
// text:id property of <list> element, only valid for root <list> element
OUString msListId;
// text:continue-list property of <list> element, only valid for root <list> element
OUString msContinueListId;
public:
// add optional parameter <bRestartNumberingAtSubList>
XMLTextListBlockContext(
SvXMLImport& rImport,
XMLTextImportHelper& rTxtImp,
const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList,
const bool bRestartNumberingAtSubList = false );
virtual ~XMLTextListBlockContext() override;
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement,
const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
sal_Int16 GetLevel() const { return mnLevel; }
bool IsRestartNumbering() const { return mbRestartNumbering; }
void ResetRestartNumbering() { mbRestartNumbering = false; }
/// does this list have (possibly inherited from parent) list-style-name?
const css::uno::Reference < css::container::XIndexReplace >& GetNumRules() const
{ return mxNumRules; }
const OUString& GetListId() const { return msListId;}
const OUString& GetContinueListId() const { return msContinueListId;}
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */