i18npool/source/localedata/data/vi_VN.xml | 10 +-- jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx | 12 ++++ oox/source/ppt/pptshape.cxx | 4 + sc/source/ui/unoobj/chart2uno.cxx | 5 + sd/qa/unit/data/pptx/tdf131554.pptx |binary sd/qa/unit/export-tests-ooxml2.cxx | 11 ++++ sd/source/ui/animations/CustomAnimationPane.cxx | 2 sfx2/source/view/viewprn.cxx | 5 + svx/source/dialog/srchdlg.cxx | 2 sw/source/core/doc/DocumentContentOperationsManager.cxx | 42 +++++++++++++--- sw/source/core/docnode/node.cxx | 2 sw/source/core/inc/txtfrm.hxx | 2 sw/source/core/layout/frmtool.cxx | 32 ++++++++++++ sw/source/core/layout/paintfrm.cxx | 8 +-- sw/source/core/text/redlnitr.cxx | 3 - sw/source/core/text/txtfrm.cxx | 2 sw/source/core/undo/undel.cxx | 25 --------- 17 files changed, 122 insertions(+), 45 deletions(-)
New commits: commit 3e1f891a9f733f0b0a6d4f16e1455dd015661f7e Merge: 931fcb444a46 eb40f8ba7d55 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Apr 7 10:29:28 2020 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Apr 7 10:29:28 2020 +0200 Merge branch 'libreoffice-6-4' into distro/lhm/libreoffice-6-4+backports Change-Id: Ie9592c8a69a5fd404a95e9ea113784767b797ce2 commit eb40f8ba7d55489bd8bc2f8940dc5829402cded8 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Apr 3 11:54:42 2020 +0200 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Apr 7 10:18:42 2020 +0200 tdf#131849 Handle changed doc print options when printer changed Previously, the SfxPrinterChangeFlags::OPTIONS flag was only set for the case that the printer itself was considered unchanged ('else' case below). However, this also needs to be done when the printer is considered to have changed, so the flag is properly passed in the call to 'SetPrinter' below, to make sure that changes in document-specific options are properly propagated. Change-Id: Id91ebbbf40888e52149b40ac25f188af4be425f3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91626 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> (cherry picked from commit 21fc54777d5dedc33d6bfa23b9f1072a6667eebe) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91519 Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx index 2347f69584c4..8ee3fe18de04 100644 --- a/sfx2/source/view/viewprn.cxx +++ b/sfx2/source/view/viewprn.cxx @@ -542,6 +542,11 @@ void SfxViewShell::SetPrinter_Impl( VclPtr<SfxPrinter>& pNewPrinter ) if ( (aTempPrtName != aDocPrtName) || (pDocPrinter->IsDefPrinter() != pNewPrinter->IsDefPrinter()) ) { nChangedFlags |= SfxPrinterChangeFlags::PRINTER|SfxPrinterChangeFlags::JOBSETUP; + if ( ! (pNewPrinter->GetOptions() == pDocPrinter->GetOptions()) ) + { + nChangedFlags |= SfxPrinterChangeFlags::OPTIONS; + } + pDocPrinter = pNewPrinter; } else commit f8d0f77de20d6adf6f532d13003a96856a98f69b Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Thu Apr 2 18:59:40 2020 +0200 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Mon Apr 6 14:37:17 2020 +0200 (related: tdf#130685) sw_redlinehide: fix update of pLastNode/pParaPropsNode If you Select All, Cut then move the cursor around a bit then paste, then this happens: sw/source/core/text/txtfrm.cxx:3461: void SwTextFrame::CalcAdditionalFirstLineOffset(): Assertion `pTextNode->IsNumbered(getRootFrame()) == pTextNode->IsNumbered(nullptr)' failed. The reason is this borked MergedPara, which really only has 1 node it's listening on, but pLastNode and pParaPropsNode point to a node that is actually part of a different MergedPara now. $6 = { listener = { m_rToTell = @0x6c02700, m_vDepends = std::__debug::vector of length 1, capacity 256 = {{ <SwClient> = { m_pRegisteredIn = 0x6af5f20 }, }} }, extents = std::__debug::vector of length 0, capacity 0, mergedText = "", pParaPropsNode = 0x6d1c390, pFirstNode = 0x6af5f20, pLastNode = 0x6d1c390 } The reason is that SwContentNode::DelFrames() doesn't update these members properly; at the time when it's called for the previous pLastNode, the offending node has Merge::NonFirst set already in the call of CheckParaRedlineMerge() so it sets the wrong new pLastNode. Fix this by iterating DelFrames() loop backward. (regression from sw_redlinehide) Change-Id: I508fd25af385a25ba9ed78d71aa3d1f02a7ac7a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91597 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit 520b0e1679d7a97aa3d91cfc95ca647339da7e84) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91524 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx index 37083c1d7fbc..955e113f2768 100644 --- a/sw/source/core/docnode/node.cxx +++ b/sw/source/core/docnode/node.cxx @@ -1385,6 +1385,7 @@ void SwContentNode::DelFrames(SwRootFrame const*const pLayout) break; } } + assert(pMerged->listener.IsListeningTo(pMerged->pParaPropsNode)); } assert(GetIndex() <= pMerged->pLastNode->GetIndex()); if (this == pMerged->pLastNode) @@ -1406,6 +1407,7 @@ void SwContentNode::DelFrames(SwRootFrame const*const pLayout) } } assert(pMerged->pFirstNode->GetIndex() <= pMerged->pLastNode->GetIndex()); + assert(pMerged->listener.IsListeningTo(pMerged->pLastNode)); } // avoid re-parenting mess (ModifyChangedHint) pMerged->listener.EndListening(this); diff --git a/sw/source/core/text/redlnitr.cxx b/sw/source/core/text/redlnitr.cxx index 8ea8b5916202..9ddfc4873dd9 100644 --- a/sw/source/core/text/redlnitr.cxx +++ b/sw/source/core/text/redlnitr.cxx @@ -277,7 +277,8 @@ CheckParaRedlineMerge(SwTextFrame & rFrame, SwTextNode & rTextNode, } // unfortunately DelFrames() must be done before StartListening too, // otherwise footnotes cannot be deleted by SwTextFootnote::DelFrames! - for (auto iter = ++nodes.begin(); iter != nodes.end(); ++iter) + auto const end(--nodes.rend()); + for (auto iter = nodes.rbegin(); iter != end; ++iter) { (**iter).DelFrames(rFrame.getRootFrame()); } commit fd95dfdbe28d033596d65c517e12ee91e49c8a7c Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Sun Apr 5 20:33:31 2020 +0100 Commit: Michael Stahl <michael.st...@cib.de> CommitDate: Mon Apr 6 11:28:04 2020 +0200 attempt to deref end() iterator seen when dragging last animation in animation pane up one position Change-Id: I2c5163a58bb67fc7982c41546559207977e8b7c5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91714 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/sd/source/ui/animations/CustomAnimationPane.cxx b/sd/source/ui/animations/CustomAnimationPane.cxx index c63e4d0e8712..8a839475f3ec 100644 --- a/sd/source/ui/animations/CustomAnimationPane.cxx +++ b/sd/source/ui/animations/CustomAnimationPane.cxx @@ -2457,7 +2457,7 @@ void CustomAnimationPane::onDragNDropComplete(std::vector< CustomAnimationEffect mpMainSequence->moveToBeforeEffect( pEffect, pEffectInsertBefore ); // Done moving effect and its hidden sub-effects when *next* effect is visible. - if ( mpCustomAnimationList->isVisible( *aIter ) ) + if (aIter != aEnd && mpCustomAnimationList->isVisible(*aIter)) break; } commit e53bf1716a4ed3be7abbf07a22a3ca55bc88ff34 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Sat Apr 4 19:27:41 2020 +0100 Commit: Michael Stahl <michael.st...@cib.de> CommitDate: Mon Apr 6 11:23:42 2020 +0200 rhbz#1820868 deref of null xLayoutManager Change-Id: Ib396ef9f5b019b08a181eeb5a8eb983bdb401db4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91710 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/svx/source/dialog/srchdlg.cxx b/svx/source/dialog/srchdlg.cxx index 01274ced7f7b..5f2b426e759d 100644 --- a/svx/source/dialog/srchdlg.cxx +++ b/svx/source/dialog/srchdlg.cxx @@ -2437,6 +2437,8 @@ OUString SvxSearchDialogWrapper::GetSearchLabel() pViewFrame->GetFrame().GetFrameInterface(), css::uno::UNO_QUERY_THROW); css::uno::Reference< css::frame::XLayoutManager > xLayoutManager; xPropSet->getPropertyValue("LayoutManager") >>= xLayoutManager; + if (!xLayoutManager.is()) + return OUString(); css::uno::Reference< css::ui::XUIElement > xUIElement = xLayoutManager->getElement("private:resource/toolbar/findbar"); if (!xUIElement.is()) commit 431dd62b7d1a4f8ca1a1833aa33c1f5f08a900a0 Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Thu Apr 2 17:21:32 2020 +0200 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Sun Apr 5 00:26:12 2020 +0200 (related: tdf#130685) sw: adapt definition of sw_redlinehide index 0 ... to the change to use the last node - not the first node - for paragraph properties. The problem is that if you move the cursor around at some step of reproducing the bug, this happens: sw/source/core/crsr/crsrsh.cxx:544: bool SwCursorShell::LRMargin(bool, bool): Assertion `sw::GetParaPropsNode(*GetLayout(), GetCursor_()->GetPoint()->nNode) == pTextNd' failed. For a fully deleted range, it looks more plausible to map index 0 to the end of the last node instead of the start of the first node now. This means that text will be inserted at the end of the last node too. (regression from fa5eb82b398e29ae033f7b7c8c8195dfc10cf5b0) Change-Id: Ica891aea658b85211397320a44c9c10b48ca2659 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91598 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit 58353884dc86bdb3c1464f8bbf8c3e131584b78a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91525 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx index f47402d1b211..6d86d2253631 100644 --- a/sw/source/core/text/txtfrm.cxx +++ b/sw/source/core/text/txtfrm.cxx @@ -1178,7 +1178,7 @@ MapViewToModel(MergedPara const& rMerged, TextFrameIndex const i_nIndex) assert(nIndex == 0 && "view index out of bounds"); return pExtent ? std::make_pair(pExtent->pNode, pExtent->nEnd) //1-past-the-end index - : std::make_pair(rMerged.pFirstNode, sal_Int32(0)); + : std::make_pair(const_cast<SwTextNode*>(rMerged.pLastNode), rMerged.pLastNode->Len()); } TextFrameIndex MapModelToView(MergedPara const& rMerged, SwTextNode const*const pNode, sal_Int32 const nIndex) commit 27b775647e8fd557d5581b6416f3f35f5ae02b4d Author: Serge Krot <serge.k...@cib.de> AuthorDate: Wed Apr 1 21:08:29 2020 +0200 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Sun Apr 5 00:23:52 2020 +0200 tdf#131004 fix unstable paint of writer consecutive section frames Change-Id: I565129dcd077ddbfccedb37dfbf1b9e1acf4eb95 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91532 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> (cherry picked from commit 8666dfecbaac69b9dc9a9c23a05654d847608907) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91521 diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index 1ca2e28d858e..60b25866d073 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -836,8 +836,8 @@ void SwSubsRects::RemoveSuperfluousSubsidiaryLines( const SwLineRects &rRects, S void SwLineRects::LockLines( bool bLock ) { - for (iterator it = aLineRects.begin(); it != aLineRects.end(); ++it) - (*it).Lock( bLock ); + for (SwLineRect& rLRect : aLineRects) + rLRect.Lock( bLock ); } static void lcl_DrawDashedRect( OutputDevice * pOut, SwLineRect const & rLRect ) @@ -1016,7 +1016,7 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut, ((nLi < rLk.Left() && nLi+21 > rLk.Left()) || (nLk < rLi.Left() && nLk+21 > rLi.Left()))) { - aLineRects.erase(aLineRects.begin() + k); + aLineRects.erase(aLineRects.begin() + i); // don't continue with inner loop any more: // the array may shrink! --i; @@ -1031,7 +1031,7 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut, ((nLi < rLk.Top() && nLi+21 > rLk.Top()) || (nLk < rLi.Top() && nLk+21 > rLi.Top()))) { - aLineRects.erase(aLineRects.begin() + k); + aLineRects.erase(aLineRects.begin() + i); // don't continue with inner loop any more: // the array may shrink! --i; commit f7aa951014c283bc629eaea14da2ca0d68f99431 Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Thu Apr 2 17:18:37 2020 +0200 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Sun Apr 5 00:23:34 2020 +0200 tdf#130685 sw_redlinehide: fix copying to position following redline In DocumentContentOperationsManager::CopyWithFlyInFly(), first CopyNodes() also creates all layout frames, then SaveRedlEndPosForRestore fixes the end position of all redlines that were moved by CopyNodes() (they were moved not by changing their position but by inserting new nodes before their end position). Of course this means that the layout frames are created with redlines that have only a temporary end position, and then things go wrong when the end positions are adjusted, so add something similar to SwUndoDelete::UndoImpl() to recreate the frames in CopyWithFlyInFly(). This hit the assert: sw/source/core/text/redlnitr.cxx:94: std::unique_ptr<sw::MergedPara> sw::CheckParaRedlineMerge(SwTextFrame&, SwTextNode&, sw::FrameMode): Assertion `pNode != &rTextNode || &pStart->nNode.GetNode() == &rTextNode' failed. (regression from ... sw_redlinehide) Change-Id: I82e0f5b320cab201e762f58800f83e08f4f01048 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91596 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit 166b5010b402a41b192b1659093a25acf9065fd9) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91523 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index e677c60ec9b2..727311ec7d09 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -44,6 +44,7 @@ #include <redline.hxx> #include <txtfrm.hxx> #include <rootfrm.hxx> +#include <frmtool.hxx> #include <unocrsr.hxx> #include <mvsave.hxx> #include <ndtxt.hxx> @@ -3403,22 +3404,43 @@ void DocumentContentOperationsManager::CopyWithFlyInFly( assert(!pCopiedPaM || pCopiedPaM->second.nNode <= rInsPos); SwDoc* pDest = rInsPos.GetNode().GetDoc(); - SwNodeIndex aSavePos( rInsPos, -1 ); - bool bEndIsEqualEndPos = rInsPos == rRg.aEnd; + SwNodeIndex aSavePos( rInsPos ); if (rRg.aStart != rRg.aEnd) { + bool bEndIsEqualEndPos = rInsPos == rRg.aEnd; + --aSavePos; SaveRedlEndPosForRestore aRedlRest( rInsPos, 0 ); // insert behind the already copied start node - m_rDoc.GetNodes().CopyNodes( rRg, rInsPos, bMakeNewFrames, true ); + m_rDoc.GetNodes().CopyNodes( rRg, rInsPos, false, true ); aRedlRest.Restore(); + if (bMakeNewFrames) // tdf#130685 only after aRedlRest + { // recreate from previous node (could be merged now) + if (SwTextNode *const pNode = aSavePos.GetNode().GetTextNode()) + { + sw::RecreateStartTextFrames(*pNode); + } + } + bool const isAtStartOfSection(aSavePos.GetNode().IsStartNode()); + ++aSavePos; + if (bMakeNewFrames) + { + // it's possible that CheckParaRedlineMerge() deleted frames + // on rInsPos so have to include it, but it must not be included + // if it was the first node in the document so that MakeFrames() + // will find the existing (wasn't deleted) frame on it + SwNodeIndex const end(rInsPos, + (rInsPos.GetNode().IsEndNode() || isAtStartOfSection) + ? 0 : +1); + ::MakeFrames(pDest, aSavePos, end); + } + if (bEndIsEqualEndPos) + { + const_cast<SwNodeIndex&>(rRg.aEnd) = aSavePos; + } } - ++aSavePos; - if( bEndIsEqualEndPos ) - const_cast<SwNodeIndex&>(rRg.aEnd) = aSavePos; - #if OSL_DEBUG_LEVEL > 0 { //JP 17.06.99: Bug 66973 - check count only if the selection is in diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx index 0a1d75d12153..6bf44794cbaf 100644 --- a/sw/source/core/inc/txtfrm.hxx +++ b/sw/source/core/inc/txtfrm.hxx @@ -142,6 +142,8 @@ bool IsMarkHidden(SwRootFrame const& rLayout, ::sw::mark::IMark const& rMark); bool IsMarkHintHidden(SwRootFrame const& rLayout, SwTextNode const& rNode, SwTextAttrEnd const& rHint); +void RecreateStartTextFrames(SwTextNode & rNode); + } // namespace sw /// Represents the visualization of a paragraph. Typical upper is an diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx index eafc4fd48a49..5c6e6cc4dd44 100644 --- a/sw/source/core/layout/frmtool.cxx +++ b/sw/source/core/layout/frmtool.cxx @@ -1356,6 +1356,38 @@ void AppendAllObjs(const SwFrameFormats* pTable, const SwFrame* pSib) } } +namespace sw { + +void RecreateStartTextFrames(SwTextNode & rNode) +{ + std::vector<SwTextFrame*> frames; + SwIterator<SwTextFrame, SwTextNode, sw::IteratorMode::UnwrapMulti> aIter(rNode); + for (SwTextFrame* pFrame = aIter.First(); pFrame; pFrame = aIter.Next()) + { + if (pFrame->getRootFrame()->IsHideRedlines()) + { + frames.push_back(pFrame); + } + } + auto eMode(sw::FrameMode::Existing); + for (SwTextFrame * pFrame : frames) + { + // SplitNode could have moved the original frame to the start node + // & created a new one on end, or could have created new frame on + // start node... grab start node's frame and recreate MergedPara. + SwTextNode & rFirstNode(pFrame->GetMergedPara() + ? *pFrame->GetMergedPara()->pFirstNode + : rNode); + assert(rFirstNode.GetIndex() <= rNode.GetIndex()); + pFrame->SetMergedPara(sw::CheckParaRedlineMerge( + *pFrame, rFirstNode, eMode)); + eMode = sw::FrameMode::New; // Existing is not idempotent! + // note: this may or may not delete frames on the end node + } +} + +} // namespace sw + /** local method to set 'working' position for newly inserted frames OD 12.08.2003 #i17969# diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx index ab32dff0901c..47793ff5ba3e 100644 --- a/sw/source/core/undo/undel.cxx +++ b/sw/source/core/undo/undel.cxx @@ -1085,30 +1085,7 @@ void SwUndoDelete::UndoImpl(::sw::UndoRedoContext & rContext) // frames SwTextNode *const pStartNode(aIdx.GetNodes()[m_nSttNode]->GetTextNode()); assert(pStartNode); - std::vector<SwTextFrame*> frames; - SwIterator<SwTextFrame, SwTextNode, sw::IteratorMode::UnwrapMulti> aIter(*pStartNode); - for (SwTextFrame* pFrame = aIter.First(); pFrame; pFrame = aIter.Next()) - { - if (pFrame->getRootFrame()->IsHideRedlines()) - { - frames.push_back(pFrame); - } - } - auto eMode(sw::FrameMode::Existing); - for (SwTextFrame * pFrame : frames) - { - // SplitNode could have moved the original frame to the start node - // & created a new one on end, or could have created new frame on - // start node... grab start node's frame and recreate MergedPara. - SwTextNode & rFirstNode(pFrame->GetMergedPara() - ? *pFrame->GetMergedPara()->pFirstNode - : *pStartNode); - assert(rFirstNode.GetIndex() <= pStartNode->GetIndex()); - pFrame->SetMergedPara(sw::CheckParaRedlineMerge( - *pFrame, rFirstNode, eMode)); - eMode = sw::FrameMode::New; // Existing is not idempotent! - // note: this may or may not delete frames on the end node - } + sw::RecreateStartTextFrames(*pStartNode); } // create frames after SetSaveData has recreated redlines commit c7c157c905b8b70aa3e426a6e4d2ba40963caf1a Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Tue Mar 31 17:37:51 2020 +0200 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Sun Apr 5 00:23:15 2020 +0200 (related: tdf#130685) sw: fix ~SwIndexReg asserts from ... ... lcl_DeleteRedlines(), if there are redlines immediately consecutive that get deleted; merge the SwPaM ring in that case which should help. Change-Id: I07b67413ad6ee52bc81b89facc40202d0ca75e2a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91595 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit 27aa4b16bf704d0246595750daf57b57ff2577b3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91522 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index aeafeea3dc2e..e677c60ec9b2 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -382,6 +382,12 @@ namespace lcl_SetCpyPos( *pREnd, *pStt, *pCpyStt, *pDelPam->GetPoint(), nDelCount ); } + + if (pDelPam->GetNext() && *pDelPam->GetNext()->End() == *pDelPam->Start()) + { + *pDelPam->GetNext()->End() = *pDelPam->End(); + pDelPam.reset(pDelPam->GetNext()); + } } } } commit 0d631aad92e874a95d9cd31ab50c63085fcabced Author: Luboš Luňák <l.lu...@collabora.com> AuthorDate: Thu Apr 2 11:14:59 2020 +0200 Commit: Eike Rathke <er...@redhat.com> CommitDate: Fri Apr 3 17:10:20 2020 +0200 use mdds position hint (tdf#131716) Otherwise this is the usual case of possible quadratic mdds slowness. Change-Id: I5b33df65e127702c011517d79b9cd41a7e820ca0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91553 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lu...@collabora.com> (cherry picked from commit 55220e7bc6576a7575c675ba425e757a3aefa243) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91517 Reviewed-by: Eike Rathke <er...@redhat.com> diff --git a/sc/source/ui/unoobj/chart2uno.cxx b/sc/source/ui/unoobj/chart2uno.cxx index 0f404ba5d780..8916ee2cf09d 100644 --- a/sc/source/ui/unoobj/chart2uno.cxx +++ b/sc/source/ui/unoobj/chart2uno.cxx @@ -42,6 +42,7 @@ #include <tokenarray.hxx> #include <scmatrix.hxx> #include <brdcst.hxx> +#include <mtvelements.hxx> #include <formula/opcode.hxx> #include <svl/sharedstring.hxx> @@ -2453,6 +2454,8 @@ void ScChart2DataSequence::BuildDataCache() { for (SCCOL nCol = aRange.aStart.Col(); nCol <= aRange.aEnd.Col(); ++nCol) { + sc::ColumnBlockPosition hint; + m_pDocument->InitColumnBlockPosition( hint, nTab, nCol ); for (SCROW nRow = aRange.aStart.Row(); nRow <= aRange.aEnd.Row(); ++nRow) { bool bColHidden = m_pDocument->ColHidden(nCol, nTab, nullptr, &nLastCol); @@ -2472,7 +2475,7 @@ void ScChart2DataSequence::BuildDataCache() ScAddress aAdr(nCol, nRow, nTab); aItem.maString = m_pDocument->GetString(aAdr); - ScRefCellValue aCell(*m_pDocument, aAdr); + ScRefCellValue aCell(*m_pDocument, aAdr, hint); switch (aCell.meType) { case CELLTYPE_VALUE: commit 7a302dee87224d02853a5955cc6f715a40186803 Author: Eike Rathke <er...@redhat.com> AuthorDate: Thu Apr 2 18:14:14 2020 +0200 Commit: Adolfo Jayme Barrientos <fit...@ubuntu.com> CommitDate: Fri Apr 3 10:35:13 2020 +0200 Resolves: tdf#131829 [vi-VN] set currency VND decimals to 0 Change-Id: I865d6b3dcb7f3bff037a4015aa98db2fa2578672 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91593 Reviewed-by: Eike Rathke <er...@redhat.com> Tested-by: Jenkins (cherry picked from commit 28ccea8b7feed20d33e2ca7d6197d947dbbad848) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91516 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/i18npool/source/localedata/data/vi_VN.xml b/i18npool/source/localedata/data/vi_VN.xml index 86f149dba1ca..945cf65cc707 100644 --- a/i18npool/source/localedata/data/vi_VN.xml +++ b/i18npool/source/localedata/data/vi_VN.xml @@ -90,19 +90,19 @@ <FormatCode>#.##0 [CURRENCY];-#.##0 [CURRENCY]</FormatCode> </FormatElement> <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13"> - <FormatCode>#.##0,00 [CURRENCY];-#.##0,00 [CURRENCY]</FormatCode> + <FormatCode>#.##0 [CURRENCY];-#.##0 [CURRENCY]</FormatCode> </FormatElement> <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14"> <FormatCode>#.##0 [CURRENCY];[RED]-#.##0 [CURRENCY]</FormatCode> </FormatElement> <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15"> - <FormatCode>#.##0,00 [CURRENCY];[RED]-#.##0,00 [CURRENCY]</FormatCode> + <FormatCode>#.##0 [CURRENCY];[RED]-#.##0 [CURRENCY]</FormatCode> </FormatElement> <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16"> - <FormatCode>#.##0,00 CCC</FormatCode> + <FormatCode>#.##0 CCC</FormatCode> </FormatElement> <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17"> - <FormatCode>#.##0,-- [CURRENCY];[RED]-#.##0,-- [CURRENCY]</FormatCode> + <FormatCode>#.##0 [CURRENCY];[RED]-#.##0 [CURRENCY]</FormatCode> </FormatElement> <FormatElement msgid="DateFormatskey1" default="true" type="short" usage="DATE" formatindex="18"> <FormatCode>D/M/YY</FormatCode> @@ -339,7 +339,7 @@ <CurrencySymbol>₫</CurrencySymbol> <BankSymbol>VND</BankSymbol> <CurrencyName>Việt Nam Đồng</CurrencyName> - <DecimalPlaces>2</DecimalPlaces> + <DecimalPlaces>0</DecimalPlaces> </Currency> </LC_CURRENCY> <LC_TRANSLITERATION> commit 44a40091ae960a10ef88f16f04138989366017fd Author: ilhan <ilhanye...@gmx.de> AuthorDate: Wed Mar 25 11:18:09 2020 +0100 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Thu Apr 2 21:41:44 2020 +0200 tdf#131399 Update java settings after slight java version change Under linux, the version is now also checked for changes at startup of libreoffice. Change-Id: I572f718cf5afc83a70d98a6897f1d3d6877644f7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91037 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit 6b6af620ff53209487a146aa3977db328c3a6300) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91405 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx index 128de9b352b0..4760ab629313 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx @@ -867,6 +867,18 @@ javaPluginError jfw_plugin_existJRE(const JavaInfo *pInfo, bool *exist) *exist = true; JFW_TRACE2("Java runtime library exist: " << sRuntimeLib); + // Check version + rtl::Reference<VendorBase> aVendorInfo = getJREInfoByPath(sLocation); + if (!aVendorInfo.is()) + { + *exist = false; + JFW_TRACE2("JRE or supported vendor not accessible at location: " << sLocation); + } + else if(pInfo->sVersion!=aVendorInfo->getVersion()) + { + *exist = false; + JFW_TRACE2("Mismatch between version number in libreoffice settings and installed JRE: " << pInfo->sVersion <<" != " << aVendorInfo->getVersion()); + } } else if (::osl::File::E_NOENT == rc_itemRt) { commit 55d423e8f371e914c51f9aa18aacede46355b133 Author: nd101 <f...@nd.com.cn> AuthorDate: Wed Mar 25 13:17:48 2020 +0800 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Thu Apr 2 21:40:50 2020 +0200 tdf#131554 placeholder iteration fails to stop when a match is found Wrong placeholder is returned due to iteration not stopping when a match is found. It causes a text element position to be incorrectly set. Change-Id: I58be6825cec7a61f48b46418bdf28964c1afe4ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91023 Reviewed-by: Xisco Faulí <xiscofa...@libreoffice.org> Reviewed-by: Michael Stahl <michael.st...@cib.de> Tested-by: Jenkins Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91472 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx index 0088c1e51673..39b0c2eb4abc 100644 --- a/oox/source/ppt/pptshape.cxx +++ b/oox/source/ppt/pptshape.cxx @@ -424,6 +424,8 @@ namespace // 3. ph with nSecondSubType and the same oSubTypeIndex // 4. ph with nSecondSubType // 5. ph with the same oSubTypeIndex +// It appears 3 and 1 has the same highest prority. + oox::drawingml::ShapePtr PPTShape::findPlaceholder( sal_Int32 nFirstSubType, sal_Int32 nSecondSubType, const OptValue< sal_Int32 >& oSubTypeIndex, std::vector< oox::drawingml::ShapePtr >& rShapes, bool bMasterOnly ) { @@ -473,7 +475,7 @@ oox::drawingml::ShapePtr PPTShape::findPlaceholder( sal_Int32 nFirstSubType, sal aChoiceShapePtr3 = aChoiceShapePtr4; } } - if (aShapePtr.get()) + if (aShapePtr.get() || aChoiceShapePtr2.get()) break; ++aRevIter; } diff --git a/sd/qa/unit/data/pptx/tdf131554.pptx b/sd/qa/unit/data/pptx/tdf131554.pptx new file mode 100644 index 000000000000..a65f423add39 Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf131554.pptx differ diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx index 78452a763f01..d0ef2dac0eb7 100644 --- a/sd/qa/unit/export-tests-ooxml2.cxx +++ b/sd/qa/unit/export-tests-ooxml2.cxx @@ -182,6 +182,7 @@ public: void testTdf127372(); void testTdf127379(); void testTdf98603(); + void testTdf131554(); CPPUNIT_TEST_SUITE(SdOOXMLExportTest2); @@ -282,6 +283,7 @@ public: CPPUNIT_TEST(testTdf127372); CPPUNIT_TEST(testTdf127379); CPPUNIT_TEST(testTdf98603); + CPPUNIT_TEST(testTdf131554); CPPUNIT_TEST_SUITE_END(); @@ -2633,6 +2635,15 @@ void SdOOXMLExportTest2::testTdf98603() CPPUNIT_ASSERT_EQUAL(OUString("IL"), aLocale.Country); } +void SdOOXMLExportTest2::testTdf131554() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf131554.pptx"), PPTX); + xDocShRef = saveAndReload( xDocShRef.get(), PPTX ); + uno::Reference<drawing::XShape> xShape(getShapeFromPage(1, 0, xDocShRef), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5622), xShape->getPosition().X); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(13251), xShape->getPosition().Y); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2); CPPUNIT_PLUGIN_IMPLEMENT(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits