summaryrefslogtreecommitdiff
path: root/sw
AgeCommit message (Collapse)AuthorFilesLines
2018-12-18sw_redlinehide: make layout based Show/Hide mode the defaultMichael Stahl8-78/+25
remove ExperimentalMode checks Change-Id: Ie098eda0840bbd3231696cae43cc572ad61379fc
2018-12-18sw_redlinehide_4b: temporarily add an assert that is wrongMichael Stahl1-0/+1
This assert is wrong, because there may be a legimate need to query a position that is currently hidden. However, oddly enough, we haven't found a legitimate document yet that triggers this, and it has pointed us to several interesting functions that needed adapting to merged frames... so keep it a little while and remove it (and return something other than COMPLETE_STRING from mapping functions) later... Change-Id: Ide2abf0c2ce054b75c917063a5d5aa8d13430426
2018-12-18sw_redlinehide_4b: ODF export: restore previous redline show flagsMichael Stahl1-2/+3
There's a test for that, testRedlineFlags() in sw_globalfilter Change-Id: I9c821732910298d74271d95f0bfd0e902af84dbd
2018-12-18sw_redlinehide_4b: export flag to flat-ODFMichael Stahl1-1/+11
Change-Id: Ief227f3f5b03ec186178f4d68c3a415969d65507
2018-12-18sw_redlinehide_4b: adapt FindFormat()Michael Stahl4-15/+44
Change-Id: I78cfca1cd629bf518f8294450a34ee228a360ef9
2018-12-18sw_redlinehide_4b: adapt FindAttrImpl()Michael Stahl8-27/+73
* rename the only user, some UpdateFields() overload, to UpateOneField() * restrict it to search for non-formatting hints; the FindAttrsImpl() should be used for formatting hints instead Change-Id: I15002610a287fcdcd76777733a277d2ce64904bc
2018-12-18sw_redlinehide_4b: adapt FindAttrs()Michael Stahl3-28/+137
Iterate over merged nodes, and iterate over extents in them, so the complex attribute-finding logic doesn't need to be changed. Change-Id: Id72ca9247165a0c93f0cf2a38b7a0249771ca2eb
2018-12-18sw_redlinehide_4b: FindText() adapt the replace part as wellMichael Stahl8-29/+137
When redlining is enabled, the result will be a delete redline for the existing text, and an insert redline for the new text; that much is obious (and ReplaceRange can deal with a selection larger than one SwTextNode easily, since it mostly adds redlines). For the case when redlining is disabled, there are 2 options, and i don't really know which is preferrable from UX point of view: One approach is to reuse GetRanges() to ignore delete redlines in the replace range; move its declaration to different header. Another approach is to DeleteAndJoin() the existing delete redlines, which is the same as the previous model based Hide mode, which calls DeleteRedline() to remove the hidden redlines. Also change ChgAutoCorrWord() to call DeleteSelImpl() directly. Change-Id: I5974409d09eb39e04cc0b5dfc20d4db510e1cf58
2018-12-18sw_redlinehide_4b: adapt FindText()Michael Stahl6-160/+419
Generally speaking, the find functions should find the strings that are visible in the document view. However, they may also be called from SwXTextDocument functions, where they ought to find the strings that are actually in the document model. So concoct some funny helper types and adapt this so it can handle both cases; it's not pretty but maybe it even works. Change-Id: I1917398ff928e922673353e75e8fb724dc042031
2018-12-18sw: refactor a confusing thicket of overloads, all named Find()Michael Stahl17-173/+197
Also, some of these don't really make much sense as member functions of SwPaM, so make them plain functions instead. Also, some pointer parameters are never null, but there is code to handle that case in MakeRegion(); simplify that. Change-Id: I822e814b0cab14f7f31cfa33478ed15774405a61
2018-12-18sw_redlinehide_4b: FrameMode::Existing is not idempotentMichael Stahl9-17/+27
... so use it only once. The problem is that the second time it will call DelFrames() on every non-first node, which then empties the first frame's newly created MergedPara instance. This can be reproduced by toggling Edit->Tracked Changes->Show in tdf99766-2.odt. Also change some function parameters on e.g. SwTextFootnote::DelFrames() to SwRootFrame to make it obvious that these don't actually need a particular SwTextFrame. Change-Id: I129be5db4a30546905c24c5e8820a5f105a33109
2018-12-18sw_redlinehide_4b: SwRootFrame::SetHideRedlines() disable early returnMichael Stahl1-1/+7
... for now, because this is the only thing that deletes existing sw::MergedPara instances. Change-Id: If092df52e63de28de38129f0aa11ad08156855c4
2018-12-18sw_redlinehide_4b: fix wrong nTFIndex in UpdateMergedParaForInsert()Michael Stahl1-3/+9
The nTFIndex is used to insert into the merged string; the correct index is at the position corresponding to itInsert in the extents array. Once the itInsert is found, the nTFIndex is no longer used inside the loop, so just stop updating it. Change-Id: Idc073cc758bad42b0d8b44d15f0f8e732eeb2a25
2018-12-18sw_redlinehide_4b: surprising discoveriesMichael Stahl8-19/+35
It turns out that there was a small problem in the interpretation of sw_JoinText(), or rather, its caller, SwRangeRedline::DelCopyOfSection(), which, since about OOo 3.2 and i#100466, passes in bForceJoinNext, so the result is that the first node wins always, not just for RES_BREAK/RES_PAGEDESC items. This means that pParaPropsNode and pFirstNode are the same thing really. Another little problem is that the SwAttrIter was initing the font wrongly: the relevant items are the items in the *current* node's item set on top of the item set of the paragraph style, i.e. the *first* node's style. Simple reproducer: ooo79457-1.odt Change-Id: I06ef3c1695b8f3cdbded238864a60d5eb9ce4c44
2018-12-18sw_redlinehide_4b: fix InsertCnt_() iteration of hidden tablesMichael Stahl1-0/+6
The iteration was stopped as soon as the first start-node of a table cell was reached, because the SwTableNode case didn't skip over the table section in the nodes-array. As seen in ooo67621-1.odt. It looks like the same problem can't happen with sections or flys because only tables have nested SwStartNodes and the Fly's nodes can hardly all be in a delete redline. Change-Id: Ib21a758c588d5dc8193ba171353f872de71bd65a
2018-12-18sw_redlinehide_4b: SwCursorShell::GotoRefMark() check visibility tooMichael Stahl3-8/+50
As seen in ooo50225-1.sxw. Change-Id: I9f0bc0838cbf216b9a73e3ce6bc06b4340064077
2018-12-18sw_redlinehide_4b: visibility checks for bookmarks tooMichael Stahl6-8/+70
SwCursorShell::GotoMark(), GoNextBookmark(), GoPrevBookmark() check visibility of mark in layout. SwWrtShell::GotoMark() returns whether it was successful. EnhancedPDFExport skips marks that are not visible when creating links. Change-Id: I36c0706c18a5f861b15eaf451a97daec04104056
2018-12-18sw_redlinehide_4b: visibility checks for EnhancedPDFExport linksMichael Stahl4-13/+47
SwEnhancedPDFExportHelper should not create links to things that are hidden by the layout: * SwCursorShell::GotoFormatField() skips deleted fields (this triggers an assert in GetCharRect() with ooo69593-1.odt) * SwEditShell::GetINetAttrs() skips deleted INet attributes (which, as an additional bonus, hides then in the Navigator too) * SwDoc::GotoOutline() skips outline nodes where we know they have been deleted (as seen in ooo66088-9.odt) * SwFlyFrameFormats are skipped by EnhancedPDFExportHelper itself * footnotes dito Change-Id: Ife77dc7724688631d20cbaf8531b3c826a8ece94
2018-12-18sw_redlinehide_4b: ODF import: drop empty delete redlinesMichael Stahl1-1/+11
moz55970-4.odt has a delete redline containing <text:p text:style-name="Standard">&#13;</text:p> which the silly whitespace normalisation of course imports as an empty SwTextNode. A delete redline containing no text (or at least a fly?) appears quite useless as the user can't do anything with it, so just delete it on import. Change-Id: I657eeb627235adf90d7d7c1e44f505e2c6eacd46
2018-12-18sw_redlinehide_4b: fix CanSkipOverRedline() using wrong start positionMichael Stahl1-15/+15
It must use the start position that GetNextRedln() returned, not the start of the end redline that GetNextRedln() returned, obviously. This triggers an assert in CanSkipOverRedline() in ooo31961-27.odt. Change-Id: I40b9647e0b8be9768e49047d309dd22470e658bd
2018-12-18sw_redlinehide_4b: fix pointer compares in SwRedlineItr::GetNextRedln()Michael Stahl1-2/+2
This is really stupid... Change-Id: I487ded0c0268ee9b7426e08109a9e8d447a0dfac
2018-12-18sw_redlinehide_4b: fix some problems with pathological table redlinesMichael Stahl5-64/+174
As seen in ooo95711-1.odt, the ODF import may create a redline that starts on a SwTableNode - though i haven't been able to figure out how such an odd creature might arise from UI actions. Try to fix the obvious places so we don't crash easily; there might be more trouble elsewhere though with code that assumes that a redline starts on a SwTextNode. Change-Id: I8431c1416ac4503ff0209a946398656f1c28366d
2018-12-18sw_redlinehide_4b: fix crash in CanSkipOverRedline()Michael Stahl1-1/+2
This was another IsDelLastPara() redline in ooo27109-1.sxw. Change-Id: I1f4198a4bcbed7bdd52991af3cb3322ebacc65fe
2018-12-18sw_redlinehide_4b: fix wrong handling of IsDelLastPara() redlinesMichael Stahl2-5/+27
CheckParaRedlineMerge(): Fully deleted SwTextNode followed by a table, as seen in ooo81405-1.odt and ooo31961-16.sxw. Also avoid creating an extent for the node in which it starts, e.g. ooo31961-27.odt. Change-Id: I2a7d935a9cedcb66aeaa9dce418b1fab758f1784
2018-12-18sw_redlinehide_4b: consider the comments in the marginMichael Stahl5-8/+40
SwPostItMgr needs to hide the comments that are in delete redlines. Also notify SwPostItMgr when redlines are created/removed. SwPostItMgr is owned by the ViewShell but there is currently only one layout so SwRootFrame still needs to broadcast to all of them. Also an EndListening call was missing in SwPostItMgr::CheckForRemovedPostIts() which caused asserts. Change-Id: Ic0fccde50f6fdaa449afb535476c00c41ba94287
2018-12-18sw_redlinehide_4b: fix wrong assert in AppendObjs()Michael Stahl1-1/+1
Clearly this is wrong, the first node might be deleted; triggered e.g. by ooo69593-1.odt. Change-Id: I8f491372fcc375e68f2f7611924d8d4c7f673f17
2018-12-18use unique_ptr in SfxMediumListNoel Grandin1-5/+4
fixing leak in SwGlobalTree::DialogClosedHdl Change-Id: I4a8e883bfe62181d4e332b3a0bbb85bbb332f711 Reviewed-on: https://gerrit.libreoffice.org/65333 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-12-18tdf#108021 Chart: Fix text break of column chart X axisBalazs Varga2-0/+20
With this patch the text break is allowed for column chart X axis if the text is rotated with 0, 90 or 270 degree. (The MS Office only allowed the text break of X axis text when the rotation is 0, 90, or 270 degree.) Change-Id: I0914f6208d5a5c0c864dc0227032ef858b044445 Reviewed-on: https://gerrit.libreoffice.org/65165 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
2018-12-18tdf#116496: don't add header when setting empty watermarkMike Kaganski1-0/+6
Regression from commit 22e94ab1860b1bdea8d107d4e8824f63c6b1c8c5 Change-Id: I66a6e0b5069fe459b887a52f1ea26904dfc2d37b Reviewed-on: https://gerrit.libreoffice.org/65303 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
2018-12-18tdf121374 ooxmlexport: export H/F to default sectionJustin Luth7-3/+77
It wouldn't be terrible to duplicate headers/footers unnecessarily, but it is terrible to have them disappear. If the last SectPr has no idea about the section start, it can't know whether it is continuous or started with a page break. In that case, just ensure that the header and footer are explicitly written out. This seems to be a DOCX problem only. I think that doc and rtf both write the section information at the BEGINNING of the section, but DOCX writes it at the END. So, sharing code between these two opposite approaches is difficult. A followup commit can try to make it smarter about knowing the start of the section (because usually pPDNd is zero). Another followup commit can add the missing page breaks. Change-Id: Iff54ed097b4f8692d7d7764089002b00fbde4f51 Reviewed-on: https://gerrit.libreoffice.org/64821 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2018-12-18tdf#121804 DOCX import: handle sub/superscript inside group shapesMiklos Vajna2-0/+18
Regression from commit d5c934d150cb6cea5f96cbbee4fb5e8312bf027e (n#792778 DOCX import: parse group shapes in oox only, 2012-12-14), where where manual wordprocessingML -> drawingML translation did not handle this character property. Change-Id: I87481bc9c26651fd15dd39a58a92f467e8311256 Reviewed-on: https://gerrit.libreoffice.org/65289 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2018-12-18tdf#122164: inform user that Base is needed for MailMergeMike Kaganski2-0/+14
Change-Id: Id62a2e4cd2d8d8b6aa79e43448513a9791a55d91 Reviewed-on: https://gerrit.libreoffice.org/65302 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2018-12-18tdf#121592 add context-Form toolbar to NBandreas kainz2-570/+2292
tabbed and groupedbar_compact add context-form support Change-Id: I4a59d4b71bbbc253ee4188c4c15a7353e623e2f1 Reviewed-on: https://gerrit.libreoffice.org/65295 Tested-by: Jenkins Reviewed-by: andreas_kainz <kainz.a@gmail.com>
2018-12-18Get rid of aEmptyOUStrMike Kaganski56-184/+185
Commit 8051bb7e18ccae0f639e65dfa86bcc18a5fb9108 had removed its "String" counterpart. Change-Id: Id873a259e7f4b2794e94dec83d08ed6b57298beb Reviewed-on: https://gerrit.libreoffice.org/65299 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2018-12-17tdf#122156: closing a section link should not clear its Hidden flagMike Kaganski3-1/+81
If a section is hidden or not does not depend on whether it's linked or not. Clearing the Hidden flag made all linked sections not hidden in DocumentLinksAdministrationManager::EmbedAllLinks() during mail merge. Existed since commit 84a3db80b4fd66c6854b3135b5f69b61fd828e62 initial import Change-Id: If347008e4cf48ab1327eb04db9fdf69750ce8fa5 Reviewed-on: https://gerrit.libreoffice.org/65286 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2018-12-17tdf#99631 DOCX import: set 1:1 scale in embedded XLSXLászló Németh3-1/+21
based on the OLE object size, instead of applying different scales for the bad (non-imported) VisibleArea settings. Change-Id: I3f246b779afd145fe260af83173c1944df21fb1a Reviewed-on: https://gerrit.libreoffice.org/65244 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2018-12-17tdf#121581 update Tools tabb in NBandreas kainz1-2/+2
Change-Id: I788e97ce1f6422ba95a478fb1618773c850764f5 Reviewed-on: https://gerrit.libreoffice.org/65262 Tested-by: Jenkins Reviewed-by: andreas_kainz <kainz.a@gmail.com>
2018-12-17Resolve deprecated implicit capture of *this by reference in C++20Stephan Bergmann4-4/+4
...as flagged with -Werror=deprecated by trunk GCC in -std=c++2a mode. But C++17 forbids "this" in combination with a capture-default of "=", so in such cases list any entities explicitly that shall be captured by value. Change-Id: Ic228cd20682277a0f93e3e75798356d0fbbb80d4 Reviewed-on: https://gerrit.libreoffice.org/65241 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-12-17Allow setting some MediaDescriptor properties during runtimeSamuel Mehrbrodt2-0/+60
Change-Id: Id6bb554c0e165c6d1f9c28c48fdbcd7156f42316 Reviewed-on: https://gerrit.libreoffice.org/65256 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-12-17sw filter/ww8 code cleanupJustin Luth3-5/+3
cleanup of various nonsense that I ran across. Change-Id: Ib0a2f7bbe1096b36df88bf77de0eb90405c9f677 Reviewed-on: https://gerrit.libreoffice.org/65246 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_luth@sil.org>
2018-12-17Simplify static initializerMike Kaganski1-9/+5
Change-Id: I82d5e2ad7373fb9d39aa087426ea80ca4559b556 Reviewed-on: https://gerrit.libreoffice.org/65245 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2018-12-17sw: prefix members of SwXNumberingRulesMiklos Vajna2-74/+74
Change-Id: I000c534d1c9740dcb0dfbbe9fc71f18a503874f3 Reviewed-on: https://gerrit.libreoffice.org/65243 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2018-12-17Simplify getting selected record it a bitMike Kaganski1-6/+3
Change-Id: Ifb3cc0e62b88562fdf4050186b51a56316a15d07 Reviewed-on: https://gerrit.libreoffice.org/65240 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2018-12-17tdf#121110 ww8import Jc80 justify is absolute, not Bidi relativeJustin Luth5-9/+85
Paragraph justification can be specified either absolutely (in old versions or with eWW8:Jc80) or relatively (with eWW8:Jc). The last processed SPRM wins (I assume). The WW8 format seems to ALWAYS specify Jc80, and that is overwritten by an optional Jc SPRM. I haven't seen Jc be processed before a Jc80 SPRM, but if it does, then the justify would need to be treated as absolute. If for some reason neither of these exist, BiDi will adjust by default only if it is the newer WW8 format. Again, that is an assumption because I haven't seen such a document to test. Change-Id: I966077d743f1d148fe2fb9faba87fbdd8f3507f3 Reviewed-on: https://gerrit.libreoffice.org/63591 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2018-12-17Fix typoAndrea Gelmini1-1/+1
Change-Id: I62306962317a4801b2f6a83a96fa3645e652e80f Reviewed-on: https://gerrit.libreoffice.org/65238 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Julien Nabet <serval2412@yahoo.fr>
2018-12-15tdf#121962 Update fields after layout has been calculatedSamuel Mehrbrodt1-2/+3
Change-Id: Ic4a49494652dab416ddb1545da02eb8a7f533828 Reviewed-on: https://gerrit.libreoffice.org/65126 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-12-14tdf#120839: Special handling for anchored-to-char framesPatrick Jaap1-5/+7
The anchor can move to other pages if the frame is moved. To avoid removing the contents of the frame, exclude this case. This resolves a regression introduced by 8d62b79f168180c6992eb483ec864d473050635f Change-Id: Ie7acd3c58ef9055cbe449ec15d337f03a02e0edd Reviewed-on: https://gerrit.libreoffice.org/62987 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2018-12-14coverity#1441522 FontWorkGalleryDialog mpSdrView member is never nullCaolán McNamara2-3/+3
Change-Id: If17d2984831b0881d39101648206accdadde12aa Reviewed-on: https://gerrit.libreoffice.org/65163 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-12-14crashtesting: intermittent threaded crashCaolán McNamara3-27/+28
race in SwDoc::CreateNumberFormatter on thread unsafe mpNumberFormatter. thread 1: SwDoc::CreateNumberFormatter SwDoc::GetNumberFormatter ... sw::DocumentTimerManager::DoIdleJobs Timer::Invoke thread 2: SwDoc::CreateNumberFormatter SwDoc::GetNumberFormatter SwXTextDocument::GetNumberFormatter(); SwXTextDocument::queryInterface ... SvXMLExport::setSourceDocument SvXMLNumFmtExport::SvXMLNumFmtExport Change-Id: Iad9aa9514c9de61eb40256b954d0444d9fc9d81e Reviewed-on: https://gerrit.libreoffice.org/65034 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-12-14sw export: restore ww8 FormatBreak() to pre-2014 logicJustin Luth3-5/+17
In LO 4.3, Feb 2014 commit a31fbb53dba76736b37213b98b64937f05929a67 totally changed the logic of the FormatBreak function, affecting doc and rtf even though the focus was only on docx. This was quickly patched for some specific cases, but the careless changes weren't fully reversed. Doing that now, because reading the code it just seems all wrong. As I understand it, there seems to typically be two passes - a valid pass for bBreakBefore and then a separate PageAfter pass. When DOC changed to prefer a breakBefore sprm, it removed the bBefore flag, did nothing on the bBreakBefore pass, and on the after pass, nC wasn't defined, so it did nothing extra. Dropping the bBefore flag probably broke the docx case. Docx commit a31fbb53dba76736b37213b98b64937f05929a67 just blew that all away, and swapped when SectionBreak was called. Another 2014 patch restored the DOC PageBefore behaviour (nC not defined, so nothing happens), but didn't restore the PageAfter behaviour so SectionBreak was still swapped. So what logically seems to be needed is to restore the bBefore flag (prior to DOC's preference for breakBefore sprm), restore writing PageBreak_After in after pass, and ignore the FollowPageDesc (because it didn't seem to be included purposefully). PageAfter only seems to be UI possible in a table's text flow. So it is VERY uncommon (no instance at all in existing unit tests.) And, not surprisingly, it doesn't export a page break after the table in doc or docx format anyway. At least now it won't put the break BEFORE the table in docx. This will restore these previous behaviours: -doc/rtf: PageAfter no longer written in bBreakBefore stage -docx: -PageAfter no longer written in bBreakBefore stage -PageBefore not affected by FollowPageDesc. PageBefore is generally unaffected by this change, and now the test for page/column break matches again, as would be expected. Change-Id: I265541a04be49e6b60bfbd84c33ab5783b454058 Reviewed-on: https://gerrit.libreoffice.org/64983 Reviewed-by: Justin Luth <justin_luth@sil.org> Tested-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>