The old internal RTF filter used to call SwTxtNode::SetAttr() without
setting SetAttrMode::NOFORMATATTR, so character attributes which cover
the whole node got converted to paragraph attributes. The new UNO
filter goes through SwXText::insertTextPortion(), which sets
SetAttrMode::NOFORMATATTR, so this doesn't happen. The result of this is
that when the UI sets a new paragraph style on the text node, then such
character attributes are no longer removed.
Given that in RTF you can't really have character properties on a
paragraph, going back to the document model produced by the old internal
filter doesn't sound like the good direction -- not to mention that
changing SwXText::insertTextPortion() this way would be an implicit API
change.
Fix the problem by tweaking SwEditShell::SetTxtFmtColl() instead, so
that it removes these full-text-node character attributes, too. The
logic in SwTxtNode::RstTxtAttr() can be extended later if necessary to
delete more attributes, but to be on the safe side, just handle the bare
minimum necessary to fix the problem for now.
Change-Id: I5faa3226fc0f9c18e005da185fe0830d8c393256
SwRangeRedline::Show() will move nodes around in the nodes-array, which
means that using SwNodeIndex as a key in a map that has a lifetime
not limited by the stack is a bad idea, as the map will become unsorted.
Remove SwFrmFmtAnchorMap from SwDoc and replace it with new
SwNode::m_pAnchoredFlys to do the same mapping.
(regression from 738fb2ad77)
Change-Id: I396d92b9d0b2045e98bad6d0b374303cd4e62b59
Some of the usages of GetPos were just misusing it to find out
whether a vector contains given element -- use Contains() in those
cases
This patch is partially based on work of Christoph Lutz
Conflicts:
sw/source/filter/ww8/wrtw8esh.cxx
sw/source/filter/ww8/wrtw8num.cxx
Change-Id: I40bedba905e7577ba23f69acee178e0ea7cc1521
These replacements allow LO to load, save and mail merge documents having
more than 65536 sections in total.
Change-Id: I0e70889b1edc6e472a39f1f2638ac3c70a0d7058
Signed-off-by: Katarina Behrens <Katarina.Behrens@cib.de>
Turn the Link class into a template abstracting over the link's argument and
return types, but provide default template arguments that keep the generic,
unsafe "void* in, sal_IntPtr out" behvior. That way, individual uses of the
Link class can be updated over time.
All the related macros are duplicated with ..._TYPED counterparts, that
additionally take the RetType (except for LINK_TYPED, which manages to infer the
relevant types from the supplied Member).
(It would have been attractive to change the "untyped" LinkStubs from taking a
void* to a properly typed ArgType parameter, too, but that would cause
-fsanitize=function to flag uses of "untyped" Link::Call.)
Change-Id: I3b0140378bad99abbf240140ebb4a46a05d2d2f8
Bin pointless '// predeclarations' or '// forward declarations' comments. If
a programmer doesn't know what a forward declaration is, well, why read C++
source code?
Also bin some pointless '// end of namespace foo' comments after namespace
blocks just a handful of lines long, and some superfluous vertical whitespace.
Change-Id: I2a31c5d73d9b4de8825fb8eb9e7559dbd7303ef9
create one list and share it among all the subsections
possibly a regression from/triggered by
author Oliver-Rainer Wittmann <orw@apache.org> 2014-03-18 14:33:39 (GMT)
Resolves: #i124371# When changing the numbering or bullet styling... of a set
of paragraph which have more than one different List Style applied create a new
List Style and put the paragraphs into a new list.
(cherry picked from commit 0087ca89e3905009ed947c651f3dc70f3d61ea93)
Change-Id: I9416b97d6afe323ac99150fdcc23f71ecea98a58
There are quite some places, which manually walk the vector of
SwPageDesc to find the named item. Replace all of them and
also drop the duplicated and unused GetPageDesc function.
Additionally adds a ContainsPageDesc function, which checks
the vector for the SwPageDesc pointer.
Change-Id: I7ade35b78d8208dc00ee56a8f83c3ebadaebb8af
Reviewed-on: https://gerrit.libreoffice.org/14508
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
i.e lots now able to be detected after...
commit b44cbb26ef
Author: Noel Grandin <noel@peralex.com>
Date: Tue Jan 20 12:38:10 2015 +0200
new loplugin: change virtual methods to non-virtual
Where we can prove that the virtual method is never overriden.
In the case of pure-virtual methods, we remove the method entirely.
Sometimes this leads to entire methods and fields being
eliminated.
Change-Id: I605e2fa56f7186c3d3a764f3cd30f5cf7f881f9d
Where we can prove that the virtual method is never overriden.
In the case of pure-virtual methods, we remove the method entirely.
Sometimes this leads to entire methods and fields being
eliminated.
Change-Id: I138ef81c95f115dbd8c023a83cfc7e9d5d6d14ae
...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