[Libreoffice-commits] core.git: 4 commits - sw/inc sw/qa sw/source
Michael Stahl
mstahl at redhat.com
Wed May 10 16:03:22 UTC 2017
sw/inc/IDocumentContentOperations.hxx | 25 +-
sw/inc/swtypes.hxx | 16 -
sw/qa/extras/uiwriter/uiwriter.cxx | 156 ++++++++++++++++
sw/source/core/doc/DocumentContentOperationsManager.cxx | 9
sw/source/core/frmedt/fefly1.cxx | 15 -
sw/source/core/inc/DocumentContentOperationsManager.hxx | 6
sw/source/core/txtnode/thints.cxx | 8
sw/source/core/undo/undel.cxx | 6
sw/source/core/undo/undobj1.cxx | 2
sw/source/core/undo/unins.cxx | 6
sw/source/core/unocore/unoframe.cxx | 17 +
sw/source/filter/html/htmlgrin.cxx | 6
sw/source/filter/html/htmlplug.cxx | 12 -
sw/source/filter/ww8/ww8graf.cxx | 6
sw/source/filter/ww8/ww8graf2.cxx | 12 -
sw/source/filter/ww8/ww8par4.cxx | 3
sw/source/filter/ww8/ww8par5.cxx | 3
sw/source/filter/xml/xmltexti.cxx | 38 ++-
18 files changed, 271 insertions(+), 75 deletions(-)
New commits:
commit 771d85baf18e5b503eb6248e1f41928b00265d8d
Author: Michael Stahl <mstahl at redhat.com>
Date: Wed May 10 17:45:14 2017 +0200
tdf#107512 sw: fix rollback of text attributes in SwUndoDelete
The problem is that in SwUndoDelete::UndoImpl(), first the formatting
attributes are restored via TmpRollback(), and then all footnote/fly
attributes are restored via Rollback(). This means that the SwHistory
doesn't actually store the original positions of the formatting hints;
ideally there wouldn't be 2 separate steps here, but that appears
difficult to change now given the plethora of calls to
DelContentIndex() ...
So work around the problem by adding a new SetAttrMode::NOHINTEXPAND
to prevent expanding the existing hints when the CH_TXTATR_BREAKWORD
are inserted from SwUndoDelLayFormat.
This fixes 2 problematic cases: at the start of the paragraph,
and if the hint ends at the position before the CH_TXTATR_BREAKWORD.
Let's hope this won't break anything anybody cares about.
Change-Id: I557c4c9136f4225ca502019730fb9f0a9c03d23b
diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx
index 76ee8b94243a..2307091b98e4 100644
--- a/sw/inc/swtypes.hxx
+++ b/sw/inc/swtypes.hxx
@@ -170,11 +170,13 @@ enum class SetAttrMode
/// Force hint expand (only matters for hints with CH_TXTATR).
FORCEHINTEXPAND = 0x0040,
/// The inserted item is a copy -- intended for use in ndtxt.cxx.
- IS_COPY = 0x0080
+ IS_COPY = 0x0080,
+ /// for Undo, translated to SwInsertFlags::NOHINTEXPAND
+ NOHINTEXPAND = 0x0100,
};
namespace o3tl
{
- template<> struct typed_flags<SetAttrMode> : is_typed_flags<SetAttrMode, 0x0ff> {};
+ template<> struct typed_flags<SetAttrMode> : is_typed_flags<SetAttrMode, 0x1ff> {};
}
#define SW_ISPRINTABLE( c ) ( c >= ' ' && 127 != c )
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 4d58b7c242aa..6816d9f6c3db 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -186,6 +186,7 @@ public:
void testTableBackgroundColor();
void testTdf88899();
void testTdf90362();
+ void testUndoDelAsCharTdf107512();
void testUndoCharAttribute();
void testUndoDelAsChar();
void testTdf86639();
@@ -319,6 +320,7 @@ public:
CPPUNIT_TEST(testTableBackgroundColor);
CPPUNIT_TEST(testTdf88899);
CPPUNIT_TEST(testTdf90362);
+ CPPUNIT_TEST(testUndoDelAsCharTdf107512);
CPPUNIT_TEST(testUndoCharAttribute);
CPPUNIT_TEST(testUndoDelAsChar);
CPPUNIT_TEST(testTdf86639);
@@ -3187,6 +3189,125 @@ void SwUiWriterTest::testTdf90362()
comphelper::ConfigurationHelper::writeDirectKey(xComponentContext, "org.openoffice.Office.Writer/", "Cursor/Option", "IgnoreProtectedArea", css::uno::Any(false), comphelper::EConfigurationModes::Standard);
}
+void SwUiWriterTest::testUndoDelAsCharTdf107512()
+{
+ SwDoc * pDoc(createDoc());
+ sw::UndoManager & rUndoManager(pDoc->GetUndoManager());
+ IDocumentContentOperations & rIDCO(pDoc->getIDocumentContentOperations());
+ SwCursorShell * pShell(pDoc->GetEditShell());
+ SfxItemSet frameSet(pDoc->GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1);
+ SfxItemSet grfSet(pDoc->GetAttrPool(), RES_GRFATR_BEGIN, RES_GRFATR_END-1);
+ rIDCO.InsertString(*pShell->GetCursor(), "foo");
+ pShell->ClearMark();
+ SwFormatAnchor anchor(RndStdIds::FLY_AS_CHAR);
+ frameSet.Put(anchor);
+ GraphicObject grf;
+ pShell->SttEndDoc(true);
+ CPPUNIT_ASSERT(rIDCO.InsertGraphicObject(*pShell->GetCursor(), grf, &frameSet, &grfSet, nullptr));
+ pShell->SttEndDoc(false);
+ CPPUNIT_ASSERT(rIDCO.InsertGraphicObject(*pShell->GetCursor(), grf, &frameSet, &grfSet, nullptr));
+ CPPUNIT_ASSERT_EQUAL(size_t(2), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ SvxCharHiddenItem hidden(true, RES_CHRATR_HIDDEN);
+ pShell->SelectText(1, 4);
+ rIDCO.InsertPoolItem(*pShell->GetCursor(), hidden);
+ // now we have "\1foo\1" with the "foo" hidden
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(4, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(OUString(OUStringLiteral1(CH_TXTATR_BREAKWORD) + u"foo" + OUStringLiteral1(CH_TXTATR_BREAKWORD)), pShell->GetCursor()->GetNode().GetTextNode()->GetText());
+ SfxPoolItem const* pItem;
+ SfxItemSet query(pDoc->GetAttrPool(), RES_CHRATR_HIDDEN, RES_CHRATR_HIDDEN);
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 1, 4);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::SET, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ CPPUNIT_ASSERT(static_cast<SvxCharHiddenItem const*>(pItem)->GetValue());
+ query.ClearItem(RES_CHRATR_HIDDEN);
+
+ // delete from the start
+ pShell->SelectText(0, 4);
+ rIDCO.DeleteAndJoin(*pShell->GetCursor());
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT_EQUAL(1, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 0, 1);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::DEFAULT, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(4, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(size_t(2), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT_EQUAL(5, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ CPPUNIT_ASSERT_EQUAL(OUString(OUStringLiteral1(CH_TXTATR_BREAKWORD) + u"foo" + OUStringLiteral1(CH_TXTATR_BREAKWORD)), pShell->GetCursor()->GetNode().GetTextNode()->GetText());
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 0, 1);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::DEFAULT, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 1, 4);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::SET, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ CPPUNIT_ASSERT(static_cast<SvxCharHiddenItem const*>(pItem)->GetValue());
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ rUndoManager.Redo();
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT_EQUAL(1, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 0, 1);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::DEFAULT, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(4, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(size_t(2), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT_EQUAL(5, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ CPPUNIT_ASSERT_EQUAL(OUString(OUStringLiteral1(CH_TXTATR_BREAKWORD) + u"foo" + OUStringLiteral1(CH_TXTATR_BREAKWORD)), pShell->GetCursor()->GetNode().GetTextNode()->GetText());
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 0, 1);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::DEFAULT, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 1, 4);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::SET, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ CPPUNIT_ASSERT(static_cast<SvxCharHiddenItem const*>(pItem)->GetValue());
+ query.ClearItem(RES_CHRATR_HIDDEN);
+
+ // delete from the end
+ pShell->SelectText(1, 5);
+ rIDCO.DeleteAndJoin(*pShell->GetCursor());
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT_EQUAL(1, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 4, 5);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::DEFAULT, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(4, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(size_t(2), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT_EQUAL(5, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ CPPUNIT_ASSERT_EQUAL(OUString(OUStringLiteral1(CH_TXTATR_BREAKWORD) + u"foo" + OUStringLiteral1(CH_TXTATR_BREAKWORD)), pShell->GetCursor()->GetNode().GetTextNode()->GetText());
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 4, 5);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::DEFAULT, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 1, 4);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::SET, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ CPPUNIT_ASSERT(static_cast<SvxCharHiddenItem const*>(pItem)->GetValue());
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ rUndoManager.Redo();
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT_EQUAL(1, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 4, 5);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::DEFAULT, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(4, RES_TXTATR_FLYCNT));
+ CPPUNIT_ASSERT_EQUAL(size_t(2), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT_EQUAL(5, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ CPPUNIT_ASSERT_EQUAL(OUString(OUStringLiteral1(CH_TXTATR_BREAKWORD) + u"foo" + OUStringLiteral1(CH_TXTATR_BREAKWORD)), pShell->GetCursor()->GetNode().GetTextNode()->GetText());
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 4, 5);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::DEFAULT, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ query.ClearItem(RES_CHRATR_HIDDEN);
+ pShell->GetCursor()->GetNode().GetTextNode()->GetAttr(query, 1, 4);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::SET, query.GetItemState(RES_CHRATR_HIDDEN, false, &pItem));
+ CPPUNIT_ASSERT(static_cast<SvxCharHiddenItem const*>(pItem)->GetValue());
+ query.ClearItem(RES_CHRATR_HIDDEN);
+}
+
void SwUiWriterTest::testUndoCharAttribute()
{
// Create a new empty Writer document
diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx
index e5cb1022e812..2737ddad4e8b 100644
--- a/sw/source/core/txtnode/thints.cxx
+++ b/sw/source/core/txtnode/thints.cxx
@@ -1246,9 +1246,11 @@ bool SwTextNode::InsertHint( SwTextAttr * const pAttr, const SetAttrMode nMode )
// translate from SetAttrMode to InsertMode (for hints with CH_TXTATR)
const SwInsertFlags nInsertFlags =
- (nMode & SetAttrMode::FORCEHINTEXPAND)
- ? (SwInsertFlags::FORCEHINTEXPAND | SwInsertFlags::EMPTYEXPAND)
- : SwInsertFlags::EMPTYEXPAND;
+ (nMode & SetAttrMode::NOHINTEXPAND)
+ ? SwInsertFlags::NOHINTEXPAND
+ : (nMode & SetAttrMode::FORCEHINTEXPAND)
+ ? (SwInsertFlags::FORCEHINTEXPAND | SwInsertFlags::EMPTYEXPAND)
+ : SwInsertFlags::EMPTYEXPAND;
// need this after TryInsertHint, when pAttr may be deleted
const sal_Int32 nStart( pAttr->GetStart() );
diff --git a/sw/source/core/undo/undobj1.cxx b/sw/source/core/undo/undobj1.cxx
index b5f27ce5b33f..2379b521afa6 100644
--- a/sw/source/core/undo/undobj1.cxx
+++ b/sw/source/core/undo/undobj1.cxx
@@ -104,7 +104,7 @@ void SwUndoFlyBase::InsFly(::sw::UndoRedoContext & rContext, bool bShowSelFrame)
SwContentNode* pCNd = aAnchor.GetContentAnchor()->nNode.GetNode().GetContentNode();
OSL_ENSURE( pCNd->IsTextNode(), "no Text Node at position." );
SwFormatFlyCnt aFormat( pFrameFormat );
- pCNd->GetTextNode()->InsertItem( aFormat, nCntPos, nCntPos );
+ pCNd->GetTextNode()->InsertItem(aFormat, nCntPos, nCntPos, SetAttrMode::NOHINTEXPAND);
}
pFrameFormat->MakeFrames();
commit ffe239962f195781c6b086c5a284aad333e3e12e
Author: Michael Stahl <mstahl at redhat.com>
Date: Wed May 10 13:35:26 2017 +0200
sw: avoid assert in SwUndoDelete::RedoImpl
1. insert as-char fly in paragraph
2. hit DEL to delete it
3. Undo
4. Redo
Assertion `aTmp.GetPoint()->nNode != rPam.GetPoint()->nNode && aTmp.GetPoint()->nNode != rPam.GetMark()->nNode' failed
This was added in e06131e96629eee4e94eba1da7242380716e8e88 assuming that
this branch is only reachable with m_bDelFullPara, but it turns out that
you get no start/end text also because DelContentIndex() already
deleted everything.
Change-Id: If4ce55dd4b63d6db11ed3195f78cd595149c0c1b
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 0d40ae1829a1..4d58b7c242aa 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -187,6 +187,7 @@ public:
void testTdf88899();
void testTdf90362();
void testUndoCharAttribute();
+ void testUndoDelAsChar();
void testTdf86639();
void testTdf90883TableBoxGetCoordinates();
void testEmbeddedDataSource();
@@ -319,6 +320,7 @@ public:
CPPUNIT_TEST(testTdf88899);
CPPUNIT_TEST(testTdf90362);
CPPUNIT_TEST(testUndoCharAttribute);
+ CPPUNIT_TEST(testUndoDelAsChar);
CPPUNIT_TEST(testTdf86639);
CPPUNIT_TEST(testTdf90883TableBoxGetCoordinates);
CPPUNIT_TEST(testEmbeddedDataSource);
@@ -3220,6 +3222,39 @@ void SwUiWriterTest::testUndoCharAttribute()
CPPUNIT_ASSERT_EQUAL((*pPoolItem == aWeightItem), false);
}
+void SwUiWriterTest::testUndoDelAsChar()
+{
+ SwDoc * pDoc(createDoc());
+ sw::UndoManager & rUndoManager(pDoc->GetUndoManager());
+ IDocumentContentOperations & rIDCO(pDoc->getIDocumentContentOperations());
+ SwCursorShell * pShell(pDoc->GetEditShell());
+ SfxItemSet frameSet(pDoc->GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1);
+ SfxItemSet grfSet(pDoc->GetAttrPool(), RES_GRFATR_BEGIN, RES_GRFATR_END-1);
+ SwFormatAnchor anchor(RndStdIds::FLY_AS_CHAR);
+ frameSet.Put(anchor);
+ GraphicObject grf;
+ CPPUNIT_ASSERT(rIDCO.InsertGraphicObject(*pShell->GetCursor(), grf, &frameSet, &grfSet, nullptr));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ pShell->SetMark();
+ pShell->Left(1, CRSR_SKIP_CHARS);
+ rIDCO.DeleteAndJoin(*pShell->GetCursor());
+ CPPUNIT_ASSERT_EQUAL(size_t(0), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT(!pShell->GetCursor()->GetNode().GetTextNode()->HasHints());
+ CPPUNIT_ASSERT_EQUAL(0, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->HasHints());
+ CPPUNIT_ASSERT_EQUAL(1, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ rUndoManager.Redo();
+ CPPUNIT_ASSERT_EQUAL(size_t(0), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT(!pShell->GetCursor()->GetNode().GetTextNode()->HasHints());
+ CPPUNIT_ASSERT_EQUAL(0, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
+ CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->HasHints());
+ CPPUNIT_ASSERT_EQUAL(1, pShell->GetCursor()->GetNode().GetTextNode()->Len());
+}
+
void SwUiWriterTest::testTdf86639()
{
SwDoc* pDoc = createDoc("tdf86639.rtf");
diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx
index 566a268af6e6..565405c1bcab 100644
--- a/sw/source/core/undo/undel.cxx
+++ b/sw/source/core/undo/undel.cxx
@@ -1048,6 +1048,12 @@ void SwUndoDelete::RedoImpl(::sw::UndoRedoContext & rContext)
}
pTableNd->DelFrames();
}
+ else if (*rPam.GetMark() == *rPam.GetPoint())
+ { // paragraph with only footnote or as-char fly, delete that
+ // => DelContentIndex has already deleted it! nothing to do here
+ assert(nEndNode == nSttNode);
+ return;
+ }
// avoid asserts from ~SwIndexReg for deleted nodes
SwPaM aTmp(*rPam.End());
commit 60901e880b215d06ab3a7d79d2041bb2c6c64a78
Author: Michael Stahl <mstahl at redhat.com>
Date: Wed May 10 12:56:34 2017 +0200
sw: remove overloading of IDocumentContentOperations::Insert
Change-Id: I29114e7057262f8fd169927abc9d3186a4c74c0c
diff --git a/sw/inc/IDocumentContentOperations.hxx b/sw/inc/IDocumentContentOperations.hxx
index be4c084e78f9..c0becb223b1a 100644
--- a/sw/inc/IDocumentContentOperations.hxx
+++ b/sw/inc/IDocumentContentOperations.hxx
@@ -154,10 +154,15 @@ public:
/** Insert graphic or formula. The XXXX are copied.
*/
- virtual SwFlyFrameFormat* Insert(const SwPaM &rRg, const OUString& rGrfName, const OUString& rFltName, const Graphic* pGraphic,
- const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrameFormat*) = 0;
-
- virtual SwFlyFrameFormat* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj, const SfxItemSet* pFlyAttrSet,
+ virtual SwFlyFrameFormat* InsertGraphic(
+ const SwPaM &rRg, const OUString& rGrfName,
+ const OUString& rFltName, const Graphic* pGraphic,
+ const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet,
+ SwFrameFormat*) = 0;
+
+ virtual SwFlyFrameFormat* InsertGraphicObject(
+ const SwPaM& rRg, const GraphicObject& rGrfObj,
+ const SfxItemSet* pFlyAttrSet,
const SfxItemSet* pGrfAttrSet, SwFrameFormat*) = 0;
/** Transpose graphic (with undo)
@@ -167,14 +172,18 @@ public:
/** Insert a DrawObject. The object must be already registered
in DrawModel.
*/
- virtual SwDrawFrameFormat* InsertDrawObj( const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet& rFlyAttrSet ) = 0;
+ virtual SwDrawFrameFormat* InsertDrawObj(
+ const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet& rFlyAttrSet) = 0;
/** Insert OLE-objects.
*/
- virtual SwFlyFrameFormat* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet) = 0;
+ virtual SwFlyFrameFormat* InsertEmbObject(
+ const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj,
+ const SfxItemSet* pFlyAttrSet) = 0;
- virtual SwFlyFrameFormat* InsertOLE(const SwPaM &rRg, const OUString& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet,
- const SfxItemSet* pGrfAttrSet) = 0;
+ virtual SwFlyFrameFormat* InsertOLE(
+ const SwPaM &rRg, const OUString& rObjName, sal_Int64 nAspect,
+ const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet) = 0;
/** Split a node at rPos (implemented only for TextNode).
*/
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index da2fe6dd85b2..585c8c81afc2 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -2620,7 +2620,8 @@ void DocumentContentOperationsManager::TransliterateText(
m_rDoc.getIDocumentState().SetModified();
}
-SwFlyFrameFormat* DocumentContentOperationsManager::Insert( const SwPaM &rRg,
+SwFlyFrameFormat* DocumentContentOperationsManager::InsertGraphic(
+ const SwPaM &rRg,
const OUString& rGrfName,
const OUString& rFltName,
const Graphic* pGraphic,
@@ -2639,7 +2640,8 @@ SwFlyFrameFormat* DocumentContentOperationsManager::Insert( const SwPaM &rRg,
return pSwFlyFrameFormat;
}
-SwFlyFrameFormat* DocumentContentOperationsManager::Insert( const SwPaM &rRg, const GraphicObject& rGrfObj,
+SwFlyFrameFormat* DocumentContentOperationsManager::InsertGraphicObject(
+ const SwPaM &rRg, const GraphicObject& rGrfObj,
const SfxItemSet* pFlyAttrSet,
const SfxItemSet* pGrfAttrSet,
SwFrameFormat* pFrameFormat )
@@ -2654,7 +2656,8 @@ SwFlyFrameFormat* DocumentContentOperationsManager::Insert( const SwPaM &rRg, co
return pSwFlyFrameFormat;
}
-SwFlyFrameFormat* DocumentContentOperationsManager::Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj,
+SwFlyFrameFormat* DocumentContentOperationsManager::InsertEmbObject(
+ const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj,
const SfxItemSet* pFlyAttrSet)
{
sal_uInt16 nId = RES_POOLFRM_OLE;
diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx
index 8bd52f04c3b5..024c895d618b 100644
--- a/sw/source/core/frmedt/fefly1.cxx
+++ b/sw/source/core/frmedt/fefly1.cxx
@@ -816,11 +816,12 @@ void SwFEShell::Insert( const OUString& rGrfName, const OUString& rFltName,
}
}
}
- pFormat = GetDoc()->getIDocumentContentOperations().Insert(*pCursor, rGrfName,
+ pFormat = GetDoc()->getIDocumentContentOperations().InsertGraphic(
+ *pCursor, rGrfName,
rFltName, pGraphic,
pFlyAttrSet,
nullptr, nullptr );
- OSL_ENSURE( pFormat, "Doc->getIDocumentContentOperations().Insert(notxt) failed." );
+ OSL_ENSURE(pFormat, "IDocumentContentOperations::InsertGraphic failed.");
pCursor = dynamic_cast<SwShellCursor*>(pCursor->GetNext());
} while( pCursor != pStartCursor );
@@ -855,10 +856,9 @@ SwFlyFrameFormat* SwFEShell::InsertObject( const svt::EmbeddedObjectRef& xObj,
StartAllAction();
for(SwPaM& rPaM : GetCursor()->GetRingContainer())
{
- pFormat = GetDoc()->getIDocumentContentOperations().Insert(rPaM, xObj,
- pFlyAttrSet );
- OSL_ENSURE( pFormat, "Doc->getIDocumentContentOperations().Insert(notxt) failed." );
-
+ pFormat = GetDoc()->getIDocumentContentOperations().InsertEmbObject(
+ rPaM, xObj, pFlyAttrSet );
+ OSL_ENSURE(pFormat, "IDocumentContentOperations::InsertEmbObject failed.");
}
EndAllAction();
@@ -1772,7 +1772,8 @@ bool SwFEShell::ReplaceSdrObj( const OUString& rGrfName, const Graphic* pGrf )
// delete "Sdr-Object", insert the graphic instead
DelSelectedObj();
- GetDoc()->getIDocumentContentOperations().Insert( *GetCursor(), rGrfName, "", pGrf, &aFrameSet, nullptr, nullptr );
+ GetDoc()->getIDocumentContentOperations().InsertGraphic(
+ *GetCursor(), rGrfName, "", pGrf, &aFrameSet, nullptr, nullptr);
EndUndo();
EndAllAction();
diff --git a/sw/source/core/inc/DocumentContentOperationsManager.hxx b/sw/source/core/inc/DocumentContentOperationsManager.hxx
index c1ac6dffffe3..23615fb0b408 100644
--- a/sw/source/core/inc/DocumentContentOperationsManager.hxx
+++ b/sw/source/core/inc/DocumentContentOperationsManager.hxx
@@ -63,17 +63,17 @@ public:
void TransliterateText(const SwPaM& rPaM, utl::TransliterationWrapper&) override;
- SwFlyFrameFormat* Insert(const SwPaM &rRg, const OUString& rGrfName, const OUString& rFltName, const Graphic* pGraphic,
+ SwFlyFrameFormat* InsertGraphic(const SwPaM &rRg, const OUString& rGrfName, const OUString& rFltName, const Graphic* pGraphic,
const SfxItemSet* pFlyAttrSet, const SfxItemSet* pGrfAttrSet, SwFrameFormat*) override;
- SwFlyFrameFormat* Insert(const SwPaM& rRg, const GraphicObject& rGrfObj, const SfxItemSet* pFlyAttrSet,
+ SwFlyFrameFormat* InsertGraphicObject(const SwPaM& rRg, const GraphicObject& rGrfObj, const SfxItemSet* pFlyAttrSet,
const SfxItemSet* pGrfAttrSet, SwFrameFormat*) override;
void ReRead(SwPaM&, const OUString& rGrfName, const OUString& rFltName, const Graphic* pGraphic, const GraphicObject* pGrfObj) override;
SwDrawFrameFormat* InsertDrawObj( const SwPaM &rRg, SdrObject& rDrawObj, const SfxItemSet& rFlyAttrSet ) override;
- SwFlyFrameFormat* Insert(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet) override;
+ SwFlyFrameFormat* InsertEmbObject(const SwPaM &rRg, const svt::EmbeddedObjectRef& xObj, const SfxItemSet* pFlyAttrSet) override;
SwFlyFrameFormat* InsertOLE(const SwPaM &rRg, const OUString& rObjName, sal_Int64 nAspect, const SfxItemSet* pFlyAttrSet,
const SfxItemSet* pGrfAttrSet) override;
diff --git a/sw/source/core/undo/unins.cxx b/sw/source/core/undo/unins.cxx
index abed8436eb4c..b0b7a41b6f0f 100644
--- a/sw/source/core/undo/unins.cxx
+++ b/sw/source/core/undo/unins.cxx
@@ -418,7 +418,8 @@ void SwUndoInsert::RepeatImpl(::sw::RepeatContext & rContext)
if( pGrfNd->IsGrfLink() )
pGrfNd->GetFileFilterNms( &sFile, &sFilter );
- rDoc.getIDocumentContentOperations().Insert( rContext.GetRepeatPaM(), sFile, sFilter,
+ rDoc.getIDocumentContentOperations().InsertGraphic(
+ rContext.GetRepeatPaM(), sFile, sFilter,
&pGrfNd->GetGrf(),
nullptr/* Graphics collection*/, nullptr, nullptr );
}
@@ -438,7 +439,8 @@ void SwUndoInsert::RepeatImpl(::sw::RepeatContext & rContext)
if (aCnt.StoreEmbeddedObject(rSwOLE.GetOleRef(), aName, true, OUString(), OUString()))
{
uno::Reference < embed::XEmbeddedObject > aNew = aCnt.GetEmbeddedObject( aName );
- rDoc.getIDocumentContentOperations().Insert( rContext.GetRepeatPaM(),
+ rDoc.getIDocumentContentOperations().InsertEmbObject(
+ rContext.GetRepeatPaM(),
svt::EmbeddedObjectRef( aNew,
static_cast<SwOLENode*>(pCNd)->GetAspect() ),
nullptr );
diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx
index 850a38942d27..f874b2f32469 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -2844,11 +2844,12 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan
(*pFilter) >>= sFltName;
}
- pFormat =
- pGrfObj ? pDoc->getIDocumentContentOperations().Insert( aPam, *pGrfObj, &aFrameSet, &aGrSet,
- pParentFrameFormat )
- : pDoc->getIDocumentContentOperations().Insert( aPam, sGraphicURL, sFltName, &aGraphic,
- &aFrameSet, &aGrSet, pParentFrameFormat );
+ pFormat = (pGrfObj)
+ ? pDoc->getIDocumentContentOperations().InsertGraphicObject(
+ aPam, *pGrfObj, &aFrameSet, &aGrSet, pParentFrameFormat)
+ : pDoc->getIDocumentContentOperations().InsertGraphic(
+ aPam, sGraphicURL, sFltName, &aGraphic,
+ &aFrameSet, &aGrSet, pParentFrameFormat);
delete pGrfObj;
if(pFormat)
{
@@ -2955,7 +2956,8 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan
// TODO/LATER: Is it the only possible aspect here?
sal_Int64 nAspect = embed::Aspects::MSOLE_CONTENT;
::svt::EmbeddedObjectRef xObjRef( xIPObj, nAspect );
- pFormat2 = pDoc->getIDocumentContentOperations().Insert(aPam, xObjRef, &aFrameSet );
+ pFormat2 = pDoc->getIDocumentContentOperations().InsertEmbObject(
+ aPam, xObjRef, &aFrameSet );
assert(pFormat2 && "Doc->Insert(notxt) failed.");
pDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::INSERT, nullptr);
@@ -2997,7 +2999,8 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan
rPers.GetEmbeddedObjectContainer().InsertEmbeddedObject( obj, rName );
SwFlyFrameFormat* pFrameFormat = nullptr;
- pFrameFormat = pDoc->getIDocumentContentOperations().Insert( aPam, xObj, &aFrameSet );
+ pFrameFormat = pDoc->getIDocumentContentOperations().InsertEmbObject(
+ aPam, xObj, &aFrameSet);
pDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::INSERT, nullptr);
pFrameFormat->Add(this);
if(!m_sName.isEmpty())
diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
index 8e6ef04b7c65..153d1e31e346 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -709,8 +709,10 @@ IMAGE_SETEVENT:
aFrameSet.Put( aFrameSize );
// passing empty sGrfNm here, means we don't want the graphic to be linked
- SwFrameFormat *pFlyFormat = m_xDoc->getIDocumentContentOperations().Insert( *m_pPam, sGrfNm, aEmptyOUStr, &aGraphic,
- &aFrameSet, nullptr, nullptr );
+ SwFrameFormat *const pFlyFormat =
+ m_xDoc->getIDocumentContentOperations().InsertGraphic(
+ *m_pPam, sGrfNm, aEmptyOUStr, &aGraphic,
+ &aFrameSet, nullptr, nullptr);
SwGrfNode *pGrfNd = m_xDoc->GetNodes()[ pFlyFormat->GetContent().GetContentIdx()
->GetIndex()+1 ]->GetGrfNode();
diff --git a/sw/source/filter/html/htmlplug.cxx b/sw/source/filter/html/htmlplug.cxx
index adc048cb3b67..154372347432 100644
--- a/sw/source/filter/html/htmlplug.cxx
+++ b/sw/source/filter/html/htmlplug.cxx
@@ -459,7 +459,9 @@ void SwHTMLParser::InsertEmbed()
// und in das Dok einfuegen
SwFrameFormat* pFlyFormat =
- m_xDoc->getIDocumentContentOperations().Insert( *m_pPam, ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), &aFrameSet );
+ m_xDoc->getIDocumentContentOperations().InsertEmbObject(*m_pPam,
+ ::svt::EmbeddedObjectRef(xObj, embed::Aspects::MSOLE_CONTENT),
+ &aFrameSet);
// Namen am FrameFormat setzen
if( !aName.isEmpty() )
@@ -631,7 +633,7 @@ void SwHTMLParser::EndObject()
// und in das Dok einfuegen
SwFrameFormat* pFlyFormat =
- m_xDoc->getIDocumentContentOperations().Insert( *m_pPam,
+ m_xDoc->getIDocumentContentOperations().InsertEmbObject(*m_pPam,
::svt::EmbeddedObjectRef( m_pAppletImpl->GetApplet(), embed::Aspects::MSOLE_CONTENT ),
&m_pAppletImpl->GetItemSet() );
@@ -764,7 +766,7 @@ void SwHTMLParser::EndApplet()
// und in das Dok einfuegen
SwFrameFormat* pFlyFormat =
- m_xDoc->getIDocumentContentOperations().Insert( *m_pPam,
+ m_xDoc->getIDocumentContentOperations().InsertEmbObject(*m_pPam,
::svt::EmbeddedObjectRef( m_pAppletImpl->GetApplet(), embed::Aspects::MSOLE_CONTENT ),
&m_pAppletImpl->GetItemSet());
@@ -937,7 +939,9 @@ void SwHTMLParser::InsertFloatingFrame()
// und in das Dok einfuegen
SwFrameFormat* pFlyFormat =
- m_xDoc->getIDocumentContentOperations().Insert( *m_pPam, ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), &aFrameSet );
+ m_xDoc->getIDocumentContentOperations().InsertEmbObject(*m_pPam,
+ ::svt::EmbeddedObjectRef(xObj, embed::Aspects::MSOLE_CONTENT),
+ &aFrameSet);
// den alternativen Namen setzen
SwNoTextNode *pNoTextNd =
diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
index 9623dd288355..121f605f34dd 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -3031,7 +3031,8 @@ SwFlyFrameFormat* SwWW8ImplReader::ImportReplaceableDrawables( SdrObject* &rpObj
// as a linked graphic -
if (GraphicType::NONE == eType || CanUseRemoteLink(aGrfName))
{
- pRetFrameFormat = m_rDoc.getIDocumentContentOperations().Insert(*m_pPaM, aGrfName, OUString(), nullptr,
+ pRetFrameFormat = m_rDoc.getIDocumentContentOperations().InsertGraphic(
+ *m_pPaM, aGrfName, OUString(), nullptr,
&rFlySet, &aGrSet, nullptr);
bDone = true;
}
@@ -3039,7 +3040,8 @@ SwFlyFrameFormat* SwWW8ImplReader::ImportReplaceableDrawables( SdrObject* &rpObj
if (!bDone)
{
const Graphic& rGraph = pGrf->GetGraphic();
- pRetFrameFormat = m_rDoc.getIDocumentContentOperations().Insert(*m_pPaM, OUString(), OUString(), &rGraph,
+ pRetFrameFormat = m_rDoc.getIDocumentContentOperations().InsertGraphic(
+ *m_pPaM, OUString(), OUString(), &rGraph,
&rFlySet, &aGrSet, nullptr);
}
}
diff --git a/sw/source/filter/ww8/ww8graf2.cxx b/sw/source/filter/ww8/ww8graf2.cxx
index 6f41f57aab17..4b42da49d882 100644
--- a/sw/source/filter/ww8/ww8graf2.cxx
+++ b/sw/source/filter/ww8/ww8graf2.cxx
@@ -368,8 +368,10 @@ SwFlyFrameFormat* SwWW8ImplReader::MakeGrafNotInContent(const WW8PicDesc& rPD,
aFlySet.Put( SwFormatFrameSize( ATT_FIX_SIZE, nWidth, nHeight ) );
- SwFlyFrameFormat* pFlyFormat = m_rDoc.getIDocumentContentOperations().Insert(*m_pPaM, rFileName, OUString(), pGraph,
- &aFlySet, &rGrfSet, nullptr);
+ SwFlyFrameFormat *const pFlyFormat =
+ m_rDoc.getIDocumentContentOperations().InsertGraphic(
+ *m_pPaM, rFileName, OUString(), pGraph,
+ &aFlySet, &rGrfSet, nullptr);
// So the frames are generated when inserted in an existing doc:
if (m_rDoc.getIDocumentLayoutAccess().GetCurrentViewShell() &&
@@ -395,7 +397,8 @@ SwFrameFormat* SwWW8ImplReader::MakeGrafInContent(const WW8_PIC& rPic,
if( !pFlyFormat ) // then just as graphic
{
- pFlyFormat = m_rDoc.getIDocumentContentOperations().Insert( *m_pPaM, rFileName, OUString(), pGraph, &aFlySet,
+ pFlyFormat = m_rDoc.getIDocumentContentOperations().InsertGraphic(
+ *m_pPaM, rFileName, OUString(), pGraph, &aFlySet,
&rGrfSet, nullptr);
}
@@ -670,7 +673,8 @@ SwFrameFormat* SwWW8ImplReader::ImportGraf(SdrTextObj* pTextObj,
if (!pRet)
{
- pRet = m_rDoc.getIDocumentContentOperations().Insert(*m_pPaM, OUString(), OUString(),
+ pRet = m_rDoc.getIDocumentContentOperations().InsertGraphic(
+ *m_pPaM, OUString(), OUString(),
&rGraph, &aAttrSet, &aGrSet, nullptr );
}
}
diff --git a/sw/source/filter/ww8/ww8par4.cxx b/sw/source/filter/ww8/ww8par4.cxx
index 347c398a1b01..ac6d9d4c4525 100644
--- a/sw/source/filter/ww8/ww8par4.cxx
+++ b/sw/source/filter/ww8/ww8par4.cxx
@@ -300,7 +300,8 @@ SwFrameFormat* SwWW8ImplReader::ImportOle(const Graphic* pGrf,
GraphicType::Bitmap == aGraph.GetType()
)
{
- pFormat = m_rDoc.getIDocumentContentOperations().Insert(*m_pPaM, OUString(), OUString(), &aGraph, pFlySet,
+ pFormat = m_rDoc.getIDocumentContentOperations().InsertGraphic(
+ *m_pPaM, OUString(), OUString(), &aGraph, pFlySet,
pGrfSet, nullptr);
}
delete pTempSet;
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
index fd6f05de89b3..02b32af08c49 100644
--- a/sw/source/filter/ww8/ww8par5.cxx
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -2406,7 +2406,8 @@ eF_ResT SwWW8ImplReader::Read_F_IncludePicture( WW8FieldDesc*, OUString& rStr )
RES_FRMATR_END-1 );
aFlySet.Put( SwFormatAnchor( RndStdIds::FLY_AS_CHAR ) );
aFlySet.Put( SwFormatVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::FRAME ));
- m_pFlyFormatOfJustInsertedGraphic = m_rDoc.getIDocumentContentOperations().Insert( *m_pPaM,
+ m_pFlyFormatOfJustInsertedGraphic =
+ m_rDoc.getIDocumentContentOperations().InsertGraphic(*m_pPaM,
aGrfName,
OUString(),
nullptr, // Graphic*
diff --git a/sw/source/filter/xml/xmltexti.cxx b/sw/source/filter/xml/xmltexti.cxx
index 3a67abd2c3f8..4c06084fb6bf 100644
--- a/sw/source/filter/xml/xmltexti.cxx
+++ b/sw/source/filter/xml/xmltexti.cxx
@@ -287,9 +287,10 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertOLEObject(
if( pTextCursor )
{
- pFrameFormat = pDoc->getIDocumentContentOperations().Insert( *pTextCursor->GetPaM(),
- ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ),
- &aItemSet );
+ pFrameFormat = pDoc->getIDocumentContentOperations().InsertEmbObject(
+ *pTextCursor->GetPaM(),
+ ::svt::EmbeddedObjectRef(xObj, embed::Aspects::MSOLE_CONTENT),
+ &aItemSet);
pOLENd = lcl_GetOLENode( pFrameFormat );
}
@@ -590,9 +591,11 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertOOoLink(
uno::UNO_QUERY_THROW );
{
- SwFrameFormat *pFrameFormat = pDoc->getIDocumentContentOperations().Insert( *pTextCursor->GetPaM(),
- ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ),
- &aItemSet );
+ SwFrameFormat *const pFrameFormat =
+ pDoc->getIDocumentContentOperations().InsertEmbObject(
+ *pTextCursor->GetPaM(),
+ ::svt::EmbeddedObjectRef(xObj, embed::Aspects::MSOLE_CONTENT),
+ &aItemSet );
// TODO/LATER: in future may need a way to set replacement image url to the link ( may be even to the object ), needs oasis cws???
@@ -650,9 +653,10 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertApplet(
Size( nWidth, nHeight ),
MapUnit::Map100thMM );
- SwFrameFormat *pFrameFormat = pDoc->getIDocumentContentOperations().Insert( *pTextCursor->GetPaM(),
- ::svt::EmbeddedObjectRef( aAppletImpl.GetApplet(), embed::Aspects::MSOLE_CONTENT ),
- &aAppletImpl.GetItemSet());
+ SwFrameFormat *const pFrameFormat =
+ pDoc->getIDocumentContentOperations().InsertEmbObject( *pTextCursor->GetPaM(),
+ ::svt::EmbeddedObjectRef(aAppletImpl.GetApplet(), embed::Aspects::MSOLE_CONTENT),
+ &aAppletImpl.GetItemSet());
xPropSet.set(SwXTextEmbeddedObject::CreateXTextEmbeddedObject(
*pDoc, pFrameFormat), uno::UNO_QUERY);
if( pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
@@ -723,9 +727,11 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertPlugin(
makeAny( OUString( rMimeType ) ) );
}
- SwFrameFormat *pFrameFormat = pDoc->getIDocumentContentOperations().Insert( *pTextCursor->GetPaM(),
- ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ),
- &aItemSet);
+ SwFrameFormat *const pFrameFormat =
+ pDoc->getIDocumentContentOperations().InsertEmbObject(
+ *pTextCursor->GetPaM(),
+ ::svt::EmbeddedObjectRef(xObj, embed::Aspects::MSOLE_CONTENT),
+ &aItemSet);
xPropSet.set(SwXTextEmbeddedObject::CreateXTextEmbeddedObject(
*pDoc, pFrameFormat), uno::UNO_QUERY);
if( pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
@@ -874,9 +880,11 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertFloatingFra
makeAny( sal_Int32( aMargin.Height() ) ) );
}
- SwFrameFormat *pFrameFormat = pDoc->getIDocumentContentOperations().Insert( *pTextCursor->GetPaM(),
- ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ),
- &aItemSet);
+ SwFrameFormat *const pFrameFormat =
+ pDoc->getIDocumentContentOperations().InsertEmbObject(
+ *pTextCursor->GetPaM(),
+ ::svt::EmbeddedObjectRef(xObj, embed::Aspects::MSOLE_CONTENT),
+ &aItemSet);
xPropSet.set(SwXTextEmbeddedObject::CreateXTextEmbeddedObject(
*pDoc, pFrameFormat), uno::UNO_QUERY);
if( pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
commit 32f40845a5b463cc45292df69f141a0011582272
Author: Michael Stahl <mstahl at redhat.com>
Date: Tue May 9 23:12:23 2017 +0200
sw: remove some unused macros from swtypes.hxx
Change-Id: I50fd0d5c19e351675d19546c40009dba479a87a1
diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx
index ee59e9a0ebdf..76ee8b94243a 100644
--- a/sw/inc/swtypes.hxx
+++ b/sw/inc/swtypes.hxx
@@ -108,9 +108,6 @@ const sal_uInt8 NO_NUMLEVEL = 0x20; // "or" with the levels.
// Some helper functions as macros or inlines.
-// One kilobyte is 1024 bytes:
-#define KB 1024
-
#define SET_CURR_SHELL( shell ) CurrShell aCurr( shell )
// pPathFinder is initialized by the UI.
@@ -182,13 +179,6 @@ namespace o3tl
#define SW_ISPRINTABLE( c ) ( c >= ' ' && 127 != c )
-#ifndef SW_CONSTASCII_DECL
-#define SW_CONSTASCII_DECL( n, s ) n[sizeof(s)]
-#endif
-#ifndef SW_CONSTASCII_DEF
-#define SW_CONSTASCII_DEF( n, s ) n[sizeof(s)] = s
-#endif
-
#define CHAR_HARDBLANK u'\x00A0'
#define CHAR_HARDHYPHEN u'\x2011'
#define CHAR_SOFTHYPHEN u'\x00AD'
More information about the Libreoffice-commits
mailing list