libreoffice/bsc1200085.patch

742 lines
30 KiB
Diff

From 016b7dc2d32f8165a22a07d1ff274426c3e07235 Mon Sep 17 00:00:00 2001
From: Sarper Akdemir <sarper.akdemir@collabora.com>
Date: Tue, 21 Feb 2023 02:33:01 +0300
Subject: [PATCH] related tdf#148966: rework sdr compatibility flags
Rework access/set methods for sdr compatibility flags so it
is possible to address a compatibility flag without directly
interfacing with SdrModel.
(preliminary work for exposing compatibility flags to
editeng)
Change-Id: I2fab219f9e125151916228300be2d9d88156d8a6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147407
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
---
Index: libreoffice-7.5.3.2/include/svx/compatflags.hxx
===================================================================
--- /dev/null
+++ libreoffice-7.5.3.2/include/svx/compatflags.hxx
@@ -0,0 +1,18 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+
+/// SdrCompatibilityFlags that are implemented in SdrModelImpl
+enum class SdrCompatibilityFlag
+{
+ AnchoredTextOverflowLegacy, ///< for tdf#99729
+ LegacySingleLineFontwork, ///< for tdf#148000
+ IgnoreBreakAfterMultilineField, ///< for tdf#148966
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
Index: libreoffice-7.5.3.2/include/svx/svdmodel.hxx
===================================================================
--- libreoffice-7.5.3.2.orig/include/svx/svdmodel.hxx
+++ libreoffice-7.5.3.2/include/svx/svdmodel.hxx
@@ -77,6 +77,7 @@ class SdrUndoFactory;
class ImageMap;
class TextChain;
enum class CharCompressType;
+enum class SdrCompatibilityFlag;
namespace comphelper
{
class IEmbeddedHelper;
@@ -571,13 +572,9 @@ public:
void SetAddExtLeading( bool bEnabled );
bool IsAddExtLeading() const { return mbAddExtLeading; }
- // tdf#99729 compatibility flag
- void SetAnchoredTextOverflowLegacy(bool bEnabled);
- bool IsAnchoredTextOverflowLegacy() const;
-
- // tdf#148000 compatibility flag
- void SetLegacySingleLineFontwork(bool bEnabled);
- bool IsLegacySingleLineFontwork() const;
+ void SetCompatibilityFlag(SdrCompatibilityFlag eFlag, bool bEnabled);
+ /// @returns state of the SdrCompatibilityFlag
+ bool GetCompatibilityFlag(SdrCompatibilityFlag eFlag) const;
// tdf#149756 compatibility flag
void SetConnectorUseSnapRect(bool bEnabled);
Index: libreoffice-7.5.3.2/sc/source/ui/docshell/docsh.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/sc/source/ui/docshell/docsh.cxx
+++ libreoffice-7.5.3.2/sc/source/ui/docshell/docsh.cxx
@@ -77,6 +77,7 @@
#include <scabstdlg.hxx>
#include <sot/formats.hxx>
+#include <svx/compatflags.hxx>
#include <svx/dialogs.hrc>
#include <formulacell.hxx>
@@ -585,13 +586,16 @@ bool ScDocShell::Load( SfxMedium& rMediu
InitOptions(true);
// If this is an ODF file being loaded, then by default, use legacy processing
- // for tdf#99729 (if required, it will be overridden in *::ReadUserDataSequence())
+ // (if required, it will be overridden in *::ReadUserDataSequence())
if (IsOwnStorageFormat(rMedium))
{
- if (m_pDocument->GetDrawLayer())
- m_pDocument->GetDrawLayer()->SetAnchoredTextOverflowLegacy(true);
- if (m_pDocument->GetDrawLayer())
- m_pDocument->GetDrawLayer()->SetLegacySingleLineFontwork(true); //for tdf#148000
+ if (ScDrawLayer* pDrawLayer = m_pDocument->GetDrawLayer())
+ {
+ pDrawLayer->SetCompatibilityFlag(SdrCompatibilityFlag::AnchoredTextOverflowLegacy,
+ true); // for tdf#99729
+ pDrawLayer->SetCompatibilityFlag(SdrCompatibilityFlag::LegacySingleLineFontwork,
+ true); // for tdf#148000
+ }
}
GetUndoManager()->Clear();
Index: libreoffice-7.5.3.2/sd/source/ui/docshell/docshel4.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/sd/source/ui/docshell/docshel4.cxx
+++ libreoffice-7.5.3.2/sd/source/ui/docshell/docshel4.cxx
@@ -27,6 +27,7 @@
#include <com/sun/star/document/PrinterIndependentLayout.hpp>
#include <editeng/outlobj.hxx>
#include <tools/urlobj.hxx>
+#include <svx/compatflags.hxx>
#include <svx/svxids.hrc>
#include <editeng/editeng.hxx>
#include <editeng/editstat.hxx>
@@ -265,11 +266,11 @@ bool DrawDocShell::InitNew( const css::u
bool DrawDocShell::Load( SfxMedium& rMedium )
{
// If this is an ODF file being loaded, then by default, use legacy processing
- // for tdf#99729 (if required, it will be overridden in *::ReadUserDataSequence())
+ // (if required, it will be overridden in *::ReadUserDataSequence())
if (IsOwnStorageFormat(rMedium))
{
- mpDoc->SetAnchoredTextOverflowLegacy(true);
- mpDoc->SetLegacySingleLineFontwork(true); //for tdf#148000
+ mpDoc->SetCompatibilityFlag(SdrCompatibilityFlag::AnchoredTextOverflowLegacy, true); // for tdf#99729
+ mpDoc->SetCompatibilityFlag(SdrCompatibilityFlag::LegacySingleLineFontwork, true); // for tdf#148000
}
bool bRet = false;
@@ -410,6 +411,12 @@ bool DrawDocShell::ImportFrom(SfxMedium
mpDoc->SetConnectorUseSnapRect(true);
}
+ if (aFilterName == "Impress MS PowerPoint 2007 XML")
+ {
+ // compatibility flag for tdf#148966
+ mpDoc->SetCompatibilityFlag(SdrCompatibilityFlag::IgnoreBreakAfterMultilineField, true);
+ }
+
if (aFilterName == "Impress MS PowerPoint 2007 XML" ||
aFilterName == "Impress MS PowerPoint 2007 XML AutoPlay" ||
aFilterName == "Impress MS PowerPoint 2007 XML VBA" ||
Index: libreoffice-7.5.3.2/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
+++ libreoffice-7.5.3.2/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
@@ -19,6 +19,7 @@
#include "EnhancedCustomShapeFontWork.hxx"
#include <svl/itemset.hxx>
+#include <svx/compatflags.hxx>
#include <svx/svddef.hxx>
#include <svx/svdopath.hxx>
#include <vcl/kernarray.hxx>
@@ -133,7 +134,8 @@ static bool InitializeFontWorkData(
do
{
// search line break.
- if (!rSdrObjCustomShape.getSdrModelFromSdrObject().IsLegacySingleLineFontwork())
+ if (!rSdrObjCustomShape.getSdrModelFromSdrObject().GetCompatibilityFlag(
+ SdrCompatibilityFlag::LegacySingleLineFontwork))
nPos = aParaText[nPara].indexOf(sal_Unicode(u'\1'), nPrevPos);
else
nPos = -1; // tdf#148000: ignore line breaks in legacy fontworks
Index: libreoffice-7.5.3.2/svx/source/svdraw/svdmodel.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/svx/source/svdraw/svdmodel.cxx
+++ libreoffice-7.5.3.2/svx/source/svdraw/svdmodel.cxx
@@ -29,6 +29,7 @@
#include <unotools/pathoptions.hxx>
#include <svl/whiter.hxx>
#include <svl/asiancfg.hxx>
+#include <svx/compatflags.hxx>
#include <svx/xbtmpit.hxx>
#include <svx/xlndsit.hxx>
#include <svx/xlnedit.hxx>
@@ -85,6 +86,7 @@ struct SdrModelImpl
bool mbAnchoredTextOverflowLegacy; // tdf#99729 compatibility flag
bool mbLegacySingleLineFontwork; // tdf#148000 compatibility flag
bool mbConnectorUseSnapRect; // tdf#149756 compatibility flag
+ bool mbIgnoreBreakAfterMultilineField; ///< tdf#148966 compatibility flag
std::unique_ptr<svx::Theme> mpTheme;
SdrModelImpl()
@@ -93,6 +95,7 @@ struct SdrModelImpl
, mbAnchoredTextOverflowLegacy(false)
, mbLegacySingleLineFontwork(false)
, mbConnectorUseSnapRect(false)
+ , mbIgnoreBreakAfterMultilineField(false)
{}
};
@@ -1715,24 +1718,35 @@ void SdrModel::SetAddExtLeading( bool bE
}
}
-void SdrModel::SetAnchoredTextOverflowLegacy(bool bEnabled)
+void SdrModel::SetCompatibilityFlag(SdrCompatibilityFlag eFlag, bool bEnabled)
{
- mpImpl->mbAnchoredTextOverflowLegacy = bEnabled;
-}
-
-bool SdrModel::IsAnchoredTextOverflowLegacy() const
-{
- return mpImpl->mbAnchoredTextOverflowLegacy;
-}
-
-void SdrModel::SetLegacySingleLineFontwork(bool bEnabled)
-{
- mpImpl->mbLegacySingleLineFontwork = bEnabled;
+ switch (eFlag)
+ {
+ case SdrCompatibilityFlag::AnchoredTextOverflowLegacy:
+ mpImpl->mbAnchoredTextOverflowLegacy = bEnabled;
+ break;
+ case SdrCompatibilityFlag::LegacySingleLineFontwork:
+ mpImpl->mbLegacySingleLineFontwork = bEnabled;
+ break;
+ case SdrCompatibilityFlag::IgnoreBreakAfterMultilineField:
+ mpImpl->mbIgnoreBreakAfterMultilineField = bEnabled;
+ break;
+ }
}
-bool SdrModel::IsLegacySingleLineFontwork() const
+bool SdrModel::GetCompatibilityFlag(SdrCompatibilityFlag eFlag) const
{
- return mpImpl->mbLegacySingleLineFontwork;
+ switch (eFlag)
+ {
+ case SdrCompatibilityFlag::AnchoredTextOverflowLegacy:
+ return mpImpl->mbAnchoredTextOverflowLegacy;
+ case SdrCompatibilityFlag::LegacySingleLineFontwork:
+ return mpImpl->mbLegacySingleLineFontwork;
+ case SdrCompatibilityFlag::IgnoreBreakAfterMultilineField:
+ return mpImpl->mbIgnoreBreakAfterMultilineField;
+ default:
+ return false;
+ }
}
void SdrModel::SetConnectorUseSnapRect(bool bEnabled)
@@ -1822,6 +1836,14 @@ void SdrModel::ReadUserDataSequenceValue
}
}
}
+ else if (pValue->Name == "IgnoreBreakAfterMultilineField")
+ {
+ bool bBool = false;
+ if (pValue->Value >>= bBool)
+ {
+ mpImpl->mbIgnoreBreakAfterMultilineField = bBool;
+ }
+ }
}
template <typename T>
@@ -1833,8 +1855,12 @@ static void addPair(std::vector< std::pa
void SdrModel::WriteUserDataSequence(uno::Sequence <beans::PropertyValue>& rValues)
{
std::vector< std::pair< OUString, uno::Any > > aUserData;
- addPair(aUserData, "AnchoredTextOverflowLegacy", IsAnchoredTextOverflowLegacy());
- addPair(aUserData, "LegacySingleLineFontwork", IsLegacySingleLineFontwork());
+ addPair(aUserData, "AnchoredTextOverflowLegacy",
+ GetCompatibilityFlag(SdrCompatibilityFlag::AnchoredTextOverflowLegacy));
+ addPair(aUserData, "LegacySingleLineFontwork",
+ GetCompatibilityFlag(SdrCompatibilityFlag::LegacySingleLineFontwork));
+ addPair(aUserData, "IgnoreBreakAfterMultilineField",
+ GetCompatibilityFlag(SdrCompatibilityFlag::IgnoreBreakAfterMultilineField));
addPair(aUserData, "ConnectorUseSnapRect", IsConnectorUseSnapRect());
const sal_Int32 nOldLength = rValues.getLength();
Index: libreoffice-7.5.3.2/svx/source/svdraw/svdoedge.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/svx/source/svdraw/svdoedge.cxx
+++ libreoffice-7.5.3.2/svx/source/svdraw/svdoedge.cxx
@@ -27,6 +27,7 @@
#include <sdr/contact/viewcontactofsdredgeobj.hxx>
#include <sdr/properties/connectorproperties.hxx>
+#include <svx/compatflags.hxx>
#include <svx/sdrhittesthelper.hxx>
#include <svx/svddrag.hxx>
#include <svx/svddrgmt.hxx>
Index: libreoffice-7.5.3.2/svx/source/svdraw/svdotextdecomposition.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/svx/source/svdraw/svdotextdecomposition.cxx
+++ libreoffice-7.5.3.2/svx/source/svdraw/svdotextdecomposition.cxx
@@ -17,7 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-
+#include <svx/compatflags.hxx>
#include <svx/svdetc.hxx>
#include <svx/svdoutl.hxx>
#include <svx/svdpage.hxx>
@@ -1021,7 +1021,8 @@ void SdrTextObj::impDecomposeBlockTextPr
bool bAllowGrowHorizontal = bVerticalWriting;
// Compatibility mode for tdf#99729
- if (getSdrModelFromSdrObject().IsAnchoredTextOverflowLegacy())
+ if (getSdrModelFromSdrObject().GetCompatibilityFlag(
+ SdrCompatibilityFlag::AnchoredTextOverflowLegacy))
{
bAllowGrowVertical = bHorizontalIsBlock;
bAllowGrowHorizontal = bVerticalIsBlock;
Index: libreoffice-7.5.3.2/sw/source/uibase/app/docshini.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/sw/source/uibase/app/docshini.cxx
+++ libreoffice-7.5.3.2/sw/source/uibase/app/docshini.cxx
@@ -35,6 +35,7 @@
#include <editeng/autokernitem.hxx>
#include <com/sun/star/document/UpdateDocMode.hpp>
#include <com/sun/star/i18n/ScriptType.hpp>
+#include <svx/compatflags.hxx>
#include <svx/svxids.hrc>
#include <editeng/fhgtitem.hxx>
#include <editeng/fontitem.hxx>
@@ -479,8 +480,10 @@ bool SwDocShell::Load( SfxMedium& rMedi
SwDrawModel* pDrawModel = m_xDoc->getIDocumentDrawModelAccess().GetDrawModel();
if (pDrawModel)
{
- pDrawModel->SetAnchoredTextOverflowLegacy(true); // legacy processing for tdf#99729
- pDrawModel->SetLegacySingleLineFontwork(true); // legacy processing for tdf#148000
+ pDrawModel->SetCompatibilityFlag(SdrCompatibilityFlag::AnchoredTextOverflowLegacy,
+ true); // legacy processing for tdf#99729
+ pDrawModel->SetCompatibilityFlag(SdrCompatibilityFlag::LegacySingleLineFontwork,
+ true); // legacy processing for tdf#148000
}
}
Index: libreoffice-7.5.3.2/editeng/inc/outleeng.hxx
===================================================================
--- /dev/null
+++ libreoffice-7.5.3.2/editeng/inc/outleeng.hxx
@@ -0,0 +1,90 @@
+/* -*- 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 <editeng/outliner.hxx>
+#include <editeng/editeng.hxx>
+
+enum class SdrCompatibilityFlag;
+
+typedef std::vector<EENotify> NotifyList;
+
+class OutlinerEditEng : public EditEngine
+{
+ Outliner* pOwner;
+
+protected:
+
+ // derived from EditEngine. Allows Outliner objects to provide
+ // bullet access to the EditEngine.
+ virtual const SvxNumberFormat* GetNumberFormat( sal_Int32 nPara ) const override;
+
+public:
+ OutlinerEditEng( Outliner* pOwner, SfxItemPool* pPool );
+ virtual ~OutlinerEditEng() override;
+
+ virtual void PaintingFirstLine(sal_Int32 nPara, const Point& rStartPos, const Point& rOrigin, Degree10 nOrientation, OutputDevice& rOutDev) override;
+
+ virtual void ParagraphInserted( sal_Int32 nNewParagraph ) override;
+ virtual void ParagraphDeleted( sal_Int32 nDeletedParagraph ) override;
+ virtual void ParagraphConnected( sal_Int32 nLeftParagraph, sal_Int32 nRightParagraph ) override;
+
+ virtual void DrawingText( const Point& rStartPos, const OUString& rText, sal_Int32 nTextStart,
+ sal_Int32 nTextLen, o3tl::span<const sal_Int32> pDXArray,
+ o3tl::span<const sal_Bool> pKashidaArray, const SvxFont& rFont,
+ sal_Int32 nPara, sal_uInt8 nRightToLeft,
+ const EEngineData::WrongSpellVector* pWrongSpellVector,
+ const SvxFieldData* pFieldData,
+ bool bEndOfLine,
+ bool bEndOfParagraph,
+ const css::lang::Locale* pLocale,
+ const Color& rOverlineColor,
+ const Color& rTextLineColor) override;
+
+ virtual void DrawingTab(
+ const Point& rStartPos, tools::Long nWidth, const OUString& rChar,
+ const SvxFont& rFont, sal_Int32 nPara, sal_uInt8 nRightToLeft,
+ bool bEndOfLine,
+ bool bEndOfParagraph,
+ const Color& rOverlineColor,
+ const Color& rTextLineColor) override;
+
+ virtual void StyleSheetChanged( SfxStyleSheet* pStyle ) override;
+ virtual void ParaAttribsChanged( sal_Int32 nPara ) override;
+ virtual bool SpellNextDocument() override;
+ virtual OUString GetUndoComment( sal_uInt16 nUndoId ) const override;
+
+ // for text conversion
+ virtual bool ConvertNextDocument() override;
+
+ virtual OUString CalcFieldValue( const SvxFieldItem& rField, sal_Int32 nPara, sal_Int32 nPos, std::optional<Color>& rTxtColor, std::optional<Color>& rFldColor ) override;
+
+ virtual tools::Rectangle GetBulletArea( sal_Int32 nPara ) override;
+
+ /// @returns state of the SdrCompatibilityFlag
+ std::optional<bool> GetCompatFlag(SdrCompatibilityFlag eFlag) const;
+
+ virtual void SetParaAttribs( sal_Int32 nPara, const SfxItemSet& rSet ) override;
+
+ // belongs into class Outliner, move there before incompatible update!
+ Link<EENotify&,void> aOutlinerNotifyHdl;
+ NotifyList aNotifyCache;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Index: libreoffice-7.5.3.2/editeng/source/editeng/impedit3.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/editeng/source/editeng/impedit3.cxx
+++ libreoffice-7.5.3.2/editeng/source/editeng/impedit3.cxx
@@ -24,6 +24,7 @@
#include <vcl/settings.hxx>
#include <vcl/window.hxx>
+#include <editeng/outliner.hxx>
#include <editeng/tstpitem.hxx>
#include <editeng/lspcitem.hxx>
#include <editeng/flditem.hxx>
@@ -44,11 +45,14 @@
#include <editeng/scriptspaceitem.hxx>
#include <editeng/charscaleitem.hxx>
#include <editeng/numitem.hxx>
+#include <outleeng.hxx>
#include <svtools/colorcfg.hxx>
#include <svl/ctloptions.hxx>
#include <svl/asiancfg.hxx>
+#include <svx/compatflags.hxx>
+
#include <editeng/hngpnctitem.hxx>
#include <editeng/forbiddencharacterstable.hxx>
@@ -3606,6 +3610,22 @@ void ImpEditEngine::Paint( OutputDevice&
nTextStart = *curIt;
nTextLen = nTextLen - nTextStart;
bParsingFields = false;
+
+ if (nLine + 1 < nLines)
+ {
+ // tdf#148966 don't paint the line break following a
+ // multiline field based on a compat flag
+ OutlinerEditEng* pOutlEditEng{ dynamic_cast<OutlinerEditEng*>(pEditEngine) };
+ if (pOutlEditEng
+ && pOutlEditEng->GetCompatFlag(SdrCompatibilityFlag::IgnoreBreakAfterMultilineField)
+ .value_or(false))
+ {
+ int nStartNextLine = pPortion->GetLines()[nLine + 1].GetStartPortion();
+ const TextPortion& rNextTextPortion = pPortion->GetTextPortions()[nStartNextLine];
+ if (rNextTextPortion.GetKind() == PortionKind::LINEBREAK)
+ ++nLine; //ignore the following linebreak
+ }
+ }
}
}
Index: libreoffice-7.5.3.2/editeng/source/outliner/outleeng.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/editeng/source/outliner/outleeng.cxx
+++ libreoffice-7.5.3.2/editeng/source/outliner/outleeng.cxx
@@ -21,9 +21,10 @@
#include <editeng/eerdll.hxx>
#include <editeng/outliner.hxx>
-#include "outleeng.hxx"
+#include <outleeng.hxx>
#include "paralist.hxx"
#include <editeng/editrids.hrc>
+#include <optional>
#include <svl/itemset.hxx>
#include <editeng/editstat.hxx>
#include "outlundo.hxx"
@@ -69,6 +70,15 @@ tools::Rectangle OutlinerEditEng::GetBul
return aBulletArea;
}
+std::optional<bool> OutlinerEditEng::GetCompatFlag(SdrCompatibilityFlag eFlag) const
+{
+ if(pOwner)
+ {
+ return pOwner->GetCompatFlag(eFlag);
+ }
+ return {};
+}
+
void OutlinerEditEng::ParagraphInserted( sal_Int32 nNewParagraph )
{
pOwner->ParagraphInserted( nNewParagraph );
Index: libreoffice-7.5.3.2/editeng/source/outliner/outleeng.hxx
===================================================================
--- libreoffice-7.5.3.2.orig/editeng/source/outliner/outleeng.hxx
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- 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 <editeng/outliner.hxx>
-#include <editeng/editeng.hxx>
-
-typedef std::vector<EENotify> NotifyList;
-
-class OutlinerEditEng : public EditEngine
-{
- Outliner* pOwner;
-
-protected:
-
- // derived from EditEngine. Allows Outliner objects to provide
- // bullet access to the EditEngine.
- virtual const SvxNumberFormat* GetNumberFormat( sal_Int32 nPara ) const override;
-
-public:
- OutlinerEditEng( Outliner* pOwner, SfxItemPool* pPool );
- virtual ~OutlinerEditEng() override;
-
- virtual void PaintingFirstLine(sal_Int32 nPara, const Point& rStartPos, const Point& rOrigin, Degree10 nOrientation, OutputDevice& rOutDev) override;
-
- virtual void ParagraphInserted( sal_Int32 nNewParagraph ) override;
- virtual void ParagraphDeleted( sal_Int32 nDeletedParagraph ) override;
- virtual void ParagraphConnected( sal_Int32 nLeftParagraph, sal_Int32 nRightParagraph ) override;
-
- virtual void DrawingText( const Point& rStartPos, const OUString& rText, sal_Int32 nTextStart,
- sal_Int32 nTextLen, o3tl::span<const sal_Int32> pDXArray,
- o3tl::span<const sal_Bool> pKashidaArray, const SvxFont& rFont,
- sal_Int32 nPara, sal_uInt8 nRightToLeft,
- const EEngineData::WrongSpellVector* pWrongSpellVector,
- const SvxFieldData* pFieldData,
- bool bEndOfLine,
- bool bEndOfParagraph,
- const css::lang::Locale* pLocale,
- const Color& rOverlineColor,
- const Color& rTextLineColor) override;
-
- virtual void DrawingTab(
- const Point& rStartPos, tools::Long nWidth, const OUString& rChar,
- const SvxFont& rFont, sal_Int32 nPara, sal_uInt8 nRightToLeft,
- bool bEndOfLine,
- bool bEndOfParagraph,
- const Color& rOverlineColor,
- const Color& rTextLineColor) override;
-
- virtual void StyleSheetChanged( SfxStyleSheet* pStyle ) override;
- virtual void ParaAttribsChanged( sal_Int32 nPara ) override;
- virtual bool SpellNextDocument() override;
- virtual OUString GetUndoComment( sal_uInt16 nUndoId ) const override;
-
- // for text conversion
- virtual bool ConvertNextDocument() override;
-
- virtual OUString CalcFieldValue( const SvxFieldItem& rField, sal_Int32 nPara, sal_Int32 nPos, std::optional<Color>& rTxtColor, std::optional<Color>& rFldColor ) override;
-
- virtual tools::Rectangle GetBulletArea( sal_Int32 nPara ) override;
-
- virtual void SetParaAttribs( sal_Int32 nPara, const SfxItemSet& rSet ) override;
-
- // belongs into class Outliner, move there before incompatible update!
- Link<EENotify&,void> aOutlinerNotifyHdl;
- NotifyList aNotifyCache;
-};
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Index: libreoffice-7.5.3.2/editeng/source/outliner/outlin2.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/editeng/source/outliner/outlin2.cxx
+++ libreoffice-7.5.3.2/editeng/source/outliner/outlin2.cxx
@@ -30,7 +30,7 @@
#include <editeng/outliner.hxx>
#include "paralist.hxx"
-#include "outleeng.hxx"
+#include <outleeng.hxx>
#include <editeng/editstat.hxx>
Index: libreoffice-7.5.3.2/editeng/source/outliner/outliner.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/editeng/source/outliner/outliner.cxx
+++ libreoffice-7.5.3.2/editeng/source/outliner/outliner.cxx
@@ -30,7 +30,7 @@
#include <editeng/outliner.hxx>
#include "paralist.hxx"
#include <editeng/outlobj.hxx>
-#include "outleeng.hxx"
+#include <outleeng.hxx>
#include "outlundo.hxx"
#include <editeng/eeitem.hxx>
#include <editeng/editstat.hxx>
Index: libreoffice-7.5.3.2/editeng/source/outliner/outlvw.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/editeng/source/outliner/outlvw.cxx
+++ libreoffice-7.5.3.2/editeng/source/outliner/outlvw.cxx
@@ -30,7 +30,7 @@
#include <i18nlangtag/languagetag.hxx>
#include <editeng/outliner.hxx>
-#include "outleeng.hxx"
+#include <outleeng.hxx>
#include "paralist.hxx"
#include "outlundo.hxx"
#include <editeng/outlobj.hxx>
Index: libreoffice-7.5.3.2/include/editeng/outliner.hxx
===================================================================
--- libreoffice-7.5.3.2.orig/include/editeng/outliner.hxx
+++ libreoffice-7.5.3.2/include/editeng/outliner.hxx
@@ -77,6 +77,7 @@ class SvxFieldData;
enum class PointerStyle;
class SvxNumRule;
enum class TextRotation;
+enum class SdrCompatibilityFlag;
namespace com::sun::star::linguistic2 {
class XSpellChecker1;
@@ -987,6 +988,9 @@ public:
// convenient method to determine the bullets/numbering status for all paragraphs
sal_Int32 GetBulletsNumberingStatus() const;
+
+ // overriden in SdrOutliner
+ virtual std::optional<bool> GetCompatFlag(SdrCompatibilityFlag /*eFlag*/) const { return {}; };
};
#endif
Index: libreoffice-7.5.3.2/include/svx/svdoutl.hxx
===================================================================
--- libreoffice-7.5.3.2.orig/include/svx/svdoutl.hxx
+++ libreoffice-7.5.3.2/include/svx/svdoutl.hxx
@@ -20,11 +20,13 @@
#pragma once
#include <editeng/outliner.hxx>
+#include <optional>
#include <svx/svxdllapi.h>
#include <unotools/weakref.hxx>
class SdrTextObj;
class SdrPage;
+enum class SdrCompatibilityFlag;
class SVXCORE_DLLPUBLIC SdrOutliner : public Outliner
{
@@ -45,6 +47,9 @@ public:
virtual OUString CalcFieldValue(const SvxFieldItem& rField, sal_Int32 nPara, sal_Int32 nPos, std::optional<Color>& rpTxtColor, std::optional<Color>& rpFldColor) override;
bool hasEditViewCallbacks() const;
+
+ /// @returns state of the SdrCompatibilityFlag
+ virtual std::optional<bool> GetCompatFlag(SdrCompatibilityFlag eFlag) const override;
};
Index: libreoffice-7.5.3.2/solenv/clang-format/excludelist
===================================================================
--- libreoffice-7.5.3.2.orig/solenv/clang-format/excludelist
+++ libreoffice-7.5.3.2/solenv/clang-format/excludelist
@@ -3397,6 +3397,7 @@ editeng/inc/editattr.hxx
editeng/inc/editdoc.hxx
editeng/inc/edtspell.hxx
editeng/inc/eerdll2.hxx
+editeng/inc/outleeng.hxx
editeng/inc/unomodel.hxx
editeng/qa/items/borderline_test.cxx
editeng/qa/lookuptree/lookuptree_test.cxx
@@ -3475,7 +3476,6 @@ editeng/source/misc/swafopt.cxx
editeng/source/misc/txtrange.cxx
editeng/source/misc/unolingu.cxx
editeng/source/outliner/outleeng.cxx
-editeng/source/outliner/outleeng.hxx
editeng/source/outliner/outlin2.cxx
editeng/source/outliner/outliner.cxx
editeng/source/outliner/outlobj.cxx
Index: libreoffice-7.5.3.2/svx/source/svdraw/svdoutl.cxx
===================================================================
--- libreoffice-7.5.3.2.orig/svx/source/svdraw/svdoutl.cxx
+++ libreoffice-7.5.3.2/svx/source/svdraw/svdoutl.cxx
@@ -17,9 +17,12 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <optional>
#include <svx/svdoutl.hxx>
#include <editeng/outliner.hxx>
+#include <svx/svdmodel.hxx>
#include <svx/svdotext.hxx>
+#include <svx/svdpage.hxx>
#include <editeng/editstat.hxx>
#include <svl/itempool.hxx>
#include <editeng/editview.hxx>
@@ -104,4 +107,13 @@ bool SdrOutliner::hasEditViewCallbacks()
return false;
}
+std::optional<bool> SdrOutliner::GetCompatFlag(SdrCompatibilityFlag eFlag) const
+{
+ if( mpVisualizedPage )
+ {
+ return {mpVisualizedPage->getSdrModelFromSdrPage().GetCompatibilityFlag(eFlag)};
+ }
+ return {};
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */