...otherwise, wouldn't make sense to have non-const/const overloads anyway.
Needs to introduce one const_cast into doctxm.cxx (which already contains quite
a handful), otherwise the required changes would turn into too much of an
avalanche.
Change-Id: I694c7a1df7089d83ee95d35ed09bb864e9703f7c
The change was broken. Luckily MSVC noticed: sw\inc\doc.hxx(1707) :
warning C4717: 'SwDoc::GetNumberFormatter' : recursive on all control
paths, function will cause runtime stack overflow.
This reverts commit 7ca3303aaa.
The SwFrmFmtAnchorMap class provides reverse mapping
to SwFrmFmt::GetAnchor().GetCntntAnchor(), so that when code somewhere needs
to update SwFrmFmt's anchored at a position, it's not necessary to iterate
over all of them (which can be a large number e.g. with mail merge).
One special catch with the multimap of SwNodeIndex keys is that
the values of those keys change (whenever the node structure of the document
changes, indexes of nodes change as a result). This makes it impossible to use
any hashing container, as the hashes would change without the container
noticing, but multimap should work fine, as it just requires that the keys
remain sorted, and that is the case. Nevertheless, the old code in the two
converted places is intentionally left there in debug mode to verify the reverse
mapping is updated correctly.
I intentionally went with SwNodeIndex rather than SwPosition, as SwIndex
(the other component of SwPosition) was causing some trouble (see e.g. the
SwPosition comparison operator< , where two same positions are different if one
is registered and the other not) and it doesn't appear to be actually necessary.
Change-Id: I7f1768558f60155d4ba83c84aa7f9e34dc65ebf9
Instead of page numbers, which
- was somewhat fragile (and broken, as it was actually off-by-one)
- required repeated re-layout of the increasingly large document, making
mailmerge awfully slow. The re-layout is not removed by this commit, as
it needs further checking whether it can be removed.
See the bugreport for details.
Change-Id: Ib09bd5f5a6a549c3d38ca40b0f32c0d2831fdd4c
When generating a unique fly name, we have to iterate over all the
existing flys to find out what's the first not used one, so doing this
for every new fly inserted by mail merge is O(n^2).
During import, we already skip this and only do it once at the end of
the import, which is O(n).
Fix the performance problem by skipping the unique fly name generating
when we produce a combined mail merge document as well, and just
generate them once the mail merge is complete.
For a test document having 12 text frames and 2000 mail merge records,
the times for css::text::MailMerge::execute() is 9m37.330s -> 8m18.811s.
Change-Id: Idfa8e9fe3acc93f1138f5bb12c2419c1492f8ff1
Mail merge wasn't copying the document properties into the target
document. It also has to copy most document properties into the
working copy, as ConvertFieldsToText is called just there.
Change-Id: I7e07fec712c225f667d960a94f4eb3fd0b83f041
Reviewed-on: https://gerrit.libreoffice.org/10987
Reviewed-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
Tested-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
This drops all the specialized, workaround code from MM, introduced
to use the SwFEShell::Paste function and additionally merges
and renames SwDoc::Paste into SwDoc::Append.
There is still a little common codepath, therefore this adds
comments to always update both functions.
Change-Id: I704b3ef3257dd977dac95e16e25049ff8ade97ed
Reviewed-on: https://gerrit.libreoffice.org/10967
Reviewed-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
Tested-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
Removed its output paramater as GetCurrentViewShell should be
used instead and added a const version.
Change-Id: Iad8b57553b6e93e3472ce8c6905d08e8d49af770
Added non const SwDoc::GetDfltTxtFmtColl and SwDoc::GetTxtFmtColls
and SwDoc::GetCharFmts.
Had to make the manager friend of SwTxtFmtColl and SwConditionTxtFmtColl
Had to make SwDoc::_MakeCharFmt and SwDoc::_MakeFrmFmt public.
Change-Id: I19a36d91f92b3781a6c4313ec12eb8f7d4dfacc3
Into the new class DocumentFieldsManager.
Removed SwDoc::_MakeFldList because it is not defined anywhere.
Also moved a few non interface methods that belong to the manager.
Change-Id: Icefd7ca7adcbb05a18d6fae0529fc54150b862fd
Into the new class DocumentRedlineManager.
Added an non const version of GetRedlineTbl to the interface.
Also Moved SetAutoFmtRedlineComment which is not part of interface.
Change-Id: I600d5821d5d5831557f5fc5375fb1203fe67a295
Into the new class DocumentContentOperationsManager.
Made SwNodes in sw/inc/ndarr.hxx friend class to
DocumentContentOperationsManager so it can call DelNodes at end of
DocumentContentOperationsManager::DeleteSection .
Added DeleteAutoCorrExceptWord to SwDoc, its needed in the Manager.
Added a non const version of SwDoc::GetDfltGrfFmtColl() to SwDoc
because its needed in the Manager.
Made SwDoc a friend class to DocumentContentOperationsManager so it
can call SwDoc::checkRedlining and SwDocL::_MakeFlySection.
Moved SwDoc::CopyImpl_ , SwDoc::CopyWithFlyInFly and
SwDoc::CopyFlyInFlyImpl into the Manager.
Moved "struct ParaRstFmt" and "lcl_RstTxtAttr" from docfmt.cxx
in DocumentContentOperationsManager.hxx .
Change-Id: Icaab57f4a8c158a85e549ecb4aacc752bc95bbc9
In the new class DocumentListsManager.
The method listfunc::CreateUniqueListId was also moved there.
Added a new method deleteListsByDefaultListStyle to the Interface,
which is needed for SwDoc::DelNumRule.
Change-Id: I75ea554a57d9402d2fcfeaedf9fbe50fbae2b020
To the new class DocumentLinksAdministrationManager.
Additional to the Interface methods SwDoc::SelectServerObj was also moved
and sw/source/core/doc/docdde.cxx was deleted as it became empty.
Also fixed OUString usage in IDocumentLinksAdministration.hxx .
Change-Id: I1f2bf0881a7d4add9c657b6441851ae14ad8d161