/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
// then until the end of the Node array
pCursor->GetPoint()->Assign(pMyDoc->GetNodes().GetEndOfContent().GetIndex()-1);
pContentNd = pCursor->GetPointContentNode(); if( pContentNd )
pCursor->GetPoint()->SetContent( pContentNd->Len() );
// then until the end of the nodes array
aCpyPam.GetPoint()->Assign(pMyDoc->GetNodes().GetEndOfContent().GetIndex()-1);
pContentNd = aCpyPam.GetPointContentNode(); if(pContentNd)
aCpyPam.GetPoint()->SetContent( pContentNd->Len() );
if( IsTableMode() )
{ // Copy parts of a table: create a table with the width of the original one and copy the // selected boxes. The sizes are corrected on a percentage basis.
// search boxes using the layout
SwTableNode* pTableNd;
SwSelBoxes aBoxes;
GetTableSel( *this, aBoxes ); if( !aBoxes.empty() && nullptr != (pTableNd = const_cast<SwTableNode*>(aBoxes[0]
->GetSttNd()->FindTableNode()) ))
{ // check if the table name can be copied bool bCpyTableNm = aBoxes.size() == pTableNd->GetTable().GetTabSortBoxes().size(); if( bCpyTableNm )
{ const UIName rTableName = pTableNd->GetTable().GetFrameFormat()->GetName(); const sw::TableFrameFormats& rTableFormats = *rInsDoc.GetTableFrameFormats(); for( auto n = rTableFormats.size(); n; ) if( rTableFormats[ --n ]->GetName() == rTableName )
{
bCpyTableNm = false; break;
}
}
bRet = rInsDoc.InsCopyOfTable( aPos, aBoxes, nullptr, bCpyTableNm, false, pTableNd->GetTable().GetTableStyleName() );
} else
bRet = false;
} else
{ bool bColSel = GetCursor_()->IsColumnSelection(); if( bColSel && rInsDoc.IsClipBoard() )
rInsDoc.SetColumnSelection( true ); const ExtendedSelection oSelectAll(StartsWith_() != SwCursorShell::StartsWith::None
? ExtendedSelectedAll()
: ExtendedSelection{});
{ for(SwPaM& rPaM : GetCursor()->GetRingContainer())
{ if( !rPaM.HasMark() )
{
SwContentNode *const pNd = rPaM.GetPointContentNode(); if (nullptr != pNd &&
( bColSel || !pNd->GetTextNode() ) )
{
rPaM.SetMark();
rPaM.Move( fnMoveForward, GoInContent );
bRet = GetDoc()->getIDocumentContentOperations().CopyRange(rPaM, aPos, SwCopyFlags::CheckPosInFly)
|| bRet;
rPaM.Exchange();
rPaM.DeleteMark();
}
} else
{ // Make a copy, so that in case we need to adjust the selection // for the purpose of copying, our shell cursor is not touched. // (Otherwise we would have to restore it.)
SwPaM aPaM(*rPaM.GetMark(), *rPaM.GetPoint()); if (oSelectAll)
{ // Selection starts at the first para of the first cell, // but we want to copy the table and the start node before // the first cell as well.
aPaM.Start()->Assign(*oSelectAll->first); if (SwSectionNode const* pSection = oSelectAll->first->GetSectionNode())
{ if (aPaM.End()->GetNodeIndex() < pSection->EndOfSectionIndex())
{ // include section end so that section is copied
aPaM.End()->Assign(*oSelectAll->first->GetNodes()[pSection->EndOfSectionIndex() + 1]);
}
}
}
bRet = GetDoc()->getIDocumentContentOperations().CopyRange( aPaM, aPos, SwCopyFlags::CheckPosInFly)
|| bRet;
}
}
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.