sc/Library_sc.mk | 1 sc/inc/clipcontext.hxx | 26 ++++++++++++++++++++++ sc/inc/column.hxx | 7 ++++-- sc/inc/document.hxx | 16 +++++++------- sc/inc/table.hxx | 7 ++++-- sc/source/core/data/clipcontext.cxx | 19 ++++++++++++++++ sc/source/core/data/column3.cxx | 6 ++--- sc/source/core/data/document.cxx | 41 ++++++++++++++++++------------------ sc/source/core/data/table2.cxx | 8 +++---- 9 files changed, 93 insertions(+), 38 deletions(-)
New commits: commit c7fec34b4c60564212036ef5cd77636686689646 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Tue May 14 23:39:50 2013 -0400 Introduce copy-from-clip context for copy handling code. It's not used yet, and is currently empty. Change-Id: Ia377994ae042fc8b19d269adc2f94830422770f1 diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk index 6f322ee..f4ed57d 100644 --- a/sc/Library_sc.mk +++ b/sc/Library_sc.mk @@ -90,6 +90,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\ sc/source/core/data/cell \ sc/source/core/data/cell2 \ sc/source/core/data/cellvalue \ + sc/source/core/data/clipcontext \ sc/source/core/data/clipparam \ sc/source/core/data/column \ sc/source/core/data/column2 \ diff --git a/sc/inc/clipcontext.hxx b/sc/inc/clipcontext.hxx new file mode 100644 index 0000000..00049f1 --- /dev/null +++ b/sc/inc/clipcontext.hxx @@ -0,0 +1,26 @@ +/* -*- 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/. + */ + +#ifndef SC_CLIPCONTEXT_HXX +#define SC_CLIPCONTEXT_HXX + +namespace sc { + +class CopyFromClipContext +{ +public: + CopyFromClipContext(); + ~CopyFromClipContext(); +}; + +} + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index b7539c6..9d810e1 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -50,6 +50,7 @@ namespace editeng { class SvxBorderLine; } namespace sc { struct FormulaGroupContext; class EndListeningContext; + class CopyFromClipContext; } class Fraction; @@ -234,8 +235,10 @@ public: void CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKeepScenarioFlags) const; void CopyStaticToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol); void CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDestCol ); - void CopyFromClip(SCROW nRow1, SCROW nRow2, long nDy, - sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScColumn& rColumn); + void CopyFromClip( + sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, long nDy, + sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScColumn& rColumn ); + void StartListeningInArea( SCROW nRow1, SCROW nRow2 ); void BroadcastInArea( SCROW nRow1, SCROW nRow2 ); diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 0c59a67..7b7ea40 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -50,6 +50,7 @@ namespace editeng { class SvxBorderLine; } namespace sc { struct FormulaGroupContext; class EndListeningContext; + class CopyFromClipContext; } class SvxFontItem; @@ -1140,13 +1141,14 @@ public: void CopyTabToClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, SCTAB nTab, ScDocument* pClipDoc = NULL); - void CopyBlockFromClip( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, - const ScMarkData& rMark, SCsCOL nDx, SCsROW nDy, - const ScCopyBlockFromClipParams* pCBFCP ); - void CopyNonFilteredFromClip( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, - const ScMarkData& rMark, SCsCOL nDx, SCsROW nDy, - const ScCopyBlockFromClipParams* pCBFCP, - SCROW & rClipStartRow ); + void CopyBlockFromClip( + sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, + const ScMarkData& rMark, SCsCOL nDx, SCsROW nDy, const ScCopyBlockFromClipParams* pCBFCP ); + void CopyNonFilteredFromClip( + sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, + const ScMarkData& rMark, SCsCOL nDx, SCsROW nDy, const ScCopyBlockFromClipParams* pCBFCP, + SCROW & rClipStartRow ); + void StartListeningFromClip( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, const ScMarkData& rMark, sal_uInt16 nInsFlag ); diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx index 543bdc9..ac2b2bf 100644 --- a/sc/inc/table.hxx +++ b/sc/inc/table.hxx @@ -50,6 +50,7 @@ namespace com { namespace sun { namespace star { namespace sc { struct FormulaGroupContext; class EndListeningContext; + class CopyFromClipContext; } class SfxItemSet; @@ -383,8 +384,10 @@ public: bool bKeepScenarioFlags, bool bCloneNoteCaptions); void CopyStaticToDocument(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, ScTable* pDestTab); void CopyCellToDocument( SCCOL nSrcCol, SCROW nSrcRow, SCCOL nDestCol, SCROW nDestRow, ScTable& rDestTab ); - void CopyFromClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, SCsCOL nDx, SCsROW nDy, - sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScTable* pTable); + void CopyFromClip( + sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, + SCsCOL nDx, SCsROW nDy, sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScTable* pTable ); + void StartListeningInArea( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 ); void BroadcastInArea( SCCOL nCol1, SCROW nRow1, diff --git a/sc/source/core/data/clipcontext.cxx b/sc/source/core/data/clipcontext.cxx new file mode 100644 index 0000000..adfbfbb --- /dev/null +++ b/sc/source/core/data/clipcontext.cxx @@ -0,0 +1,19 @@ +/* -*- 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/. + */ + +#include "clipcontext.hxx" + +namespace sc { + +CopyFromClipContext::CopyFromClipContext() {} +CopyFromClipContext::~CopyFromClipContext() {} + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 1d5d146..2939be0 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -564,9 +564,9 @@ ScFormulaCell* ScColumn::CreateRefCell( ScDocument* pDestDoc, const ScAddress& r // rColumn = source // nRow1, nRow2 = target position -void ScColumn::CopyFromClip(SCROW nRow1, SCROW nRow2, long nDy, - sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, - ScColumn& rColumn) +void ScColumn::CopyFromClip( + sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, long nDy, + sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScColumn& rColumn ) { if ((nInsFlag & IDF_ATTRIB) != 0) { diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index c51804a..7245efb 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -90,6 +90,7 @@ #include "stringutil.hxx" #include "formulaiter.hxx" #include "formulacell.hxx" +#include "clipcontext.hxx" #include <map> #include <limits> @@ -2295,11 +2296,9 @@ void ScDocument::BroadcastFromClip( SCCOL nCol1, SCROW nRow1, } } -void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1, - SCCOL nCol2, SCROW nRow2, - const ScMarkData& rMark, - SCsCOL nDx, SCsROW nDy, - const ScCopyBlockFromClipParams* pCBFCP ) +void ScDocument::CopyBlockFromClip( + sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, + const ScMarkData& rMark, SCsCOL nDx, SCsROW nDy, const ScCopyBlockFromClipParams* pCBFCP ) { TableContainer& rClipTabs = pCBFCP->pClipDoc->maTabs; SCTAB nTabEnd = pCBFCP->nTabEnd; @@ -2310,8 +2309,8 @@ void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1, { while (!rClipTabs[nClipTab]) nClipTab = (nClipTab+1) % (static_cast<SCTAB>(rClipTabs.size())); - maTabs[i]->CopyFromClip( nCol1, nRow1, nCol2, nRow2, nDx, nDy, - pCBFCP->nInsFlag, pCBFCP->bAsLink, pCBFCP->bSkipAttrForEmpty, rClipTabs[nClipTab] ); + maTabs[i]->CopyFromClip(rCxt, nCol1, nRow1, nCol2, nRow2, nDx, nDy, + pCBFCP->nInsFlag, pCBFCP->bAsLink, pCBFCP->bSkipAttrForEmpty, rClipTabs[nClipTab]); if ( pCBFCP->pClipDoc->pDrawLayer && ( pCBFCP->nInsFlag & IDF_OBJECTS ) ) { @@ -2378,12 +2377,10 @@ void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1, } -void ScDocument::CopyNonFilteredFromClip( SCCOL nCol1, SCROW nRow1, - SCCOL nCol2, SCROW nRow2, - const ScMarkData& rMark, - SCsCOL nDx, SCsROW /* nDy */, - const ScCopyBlockFromClipParams* pCBFCP, - SCROW & rClipStartRow ) +void ScDocument::CopyNonFilteredFromClip( + sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, + const ScMarkData& rMark, SCsCOL nDx, SCsROW /*nDy*/, const ScCopyBlockFromClipParams* pCBFCP, + SCROW & rClipStartRow ) { // call CopyBlockFromClip for ranges of consecutive non-filtered rows // nCol1/nRow1 etc. is in target doc @@ -2418,7 +2415,8 @@ void ScDocument::CopyNonFilteredFromClip( SCCOL nCol1, SCROW nRow1, nFollow = nRow2 - nDestRow; SCsROW nNewDy = ((SCsROW)nDestRow) - nSourceRow; - CopyBlockFromClip( nCol1, nDestRow, nCol2, nDestRow + nFollow, rMark, nDx, nNewDy, pCBFCP ); + CopyBlockFromClip( + rCxt, nCol1, nDestRow, nCol2, nDestRow + nFollow, rMark, nDx, nNewDy, pCBFCP); nSourceRow += nFollow + 1; nDestRow += nFollow + 1; @@ -2531,6 +2529,8 @@ void ScDocument::CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMar bInsertingFromOtherDoc = true; // kein Broadcast/Listener aufbauen bei Insert + sc::CopyFromClipContext aCxt; + SCCOL nClipStartCol = aClipRange.aStart.Col(); SCROW nClipStartRow = aClipRange.aStart.Row(); SCROW nClipEndRow = aClipRange.aEnd.Row(); @@ -2568,14 +2568,14 @@ void ScDocument::CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMar SCsROW nDy = ((SCsROW)nR1) - nClipStartRow; if ( bIncludeFiltered ) { - CopyBlockFromClip( nC1, nR1, nC2, nR2, rMark, nDx, - nDy, &aCBFCP ); + CopyBlockFromClip( + aCxt, nC1, nR1, nC2, nR2, rMark, nDx, nDy, &aCBFCP); nClipStartRow += nR2 - nR1 + 1; } else { - CopyNonFilteredFromClip( nC1, nR1, nC2, nR2, rMark, - nDx, nDy, &aCBFCP, nClipStartRow ); + CopyNonFilteredFromClip( + aCxt, nC1, nR1, nC2, nR2, rMark, nDx, nDy, &aCBFCP, nClipStartRow); } nC1 = nC2 + 1; nC2 = std::min((SCCOL)(nC1 + nXw), nCol2); @@ -2670,6 +2670,7 @@ void ScDocument::CopyMultiRangeFromClip( sal_uInt16 nDelFlag = IDF_CONTENTS; const ScBitMaskCompressedArray<SCROW, sal_uInt8>& rFlags = GetRowFlagsArray(aCBFCP.nTabStart); + sc::CopyFromClipContext aCxt; for ( size_t i = 0, n = rClipParam.maRanges.size(); i < n; ++i ) { ScRange* p = rClipParam.maRanges[ i ]; @@ -2686,7 +2687,7 @@ void ScDocument::CopyMultiRangeFromClip( if (!bSkipAttrForEmpty) DeleteArea(nCol1, nBegRow, nCol2, nEndRow, rMark, nDelFlag); - CopyBlockFromClip(nCol1, nBegRow, nCol2, nEndRow, rMark, nDx, nDy, &aCBFCP); + CopyBlockFromClip(aCxt, nCol1, nBegRow, nCol2, nEndRow, rMark, nDx, nDy, &aCBFCP); nRowCount -= nEndRow - nBegRow + 1; while (nRowCount > 0) @@ -2705,7 +2706,7 @@ void ScDocument::CopyMultiRangeFromClip( if (!bSkipAttrForEmpty) DeleteArea(nCol1, nBegRow, nCol2, nEndRow, rMark, nDelFlag); - CopyBlockFromClip(nCol1, nBegRow, nCol2, nEndRow, rMark, nDx, nDy, &aCBFCP); + CopyBlockFromClip(aCxt, nCol1, nBegRow, nCol2, nEndRow, rMark, nDx, nDy, &aCBFCP); nRowCount -= nEndRow - nBegRow + 1; } diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 5af802f..7e9b4c0 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -745,9 +745,9 @@ void ScTable::CopyConditionalFormat( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCRO } } -void ScTable::CopyFromClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, - SCsCOL nDx, SCsROW nDy, sal_uInt16 nInsFlag, - bool bAsLink, bool bSkipAttrForEmpty, ScTable* pTable) +void ScTable::CopyFromClip( + sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, + SCsCOL nDx, SCsROW nDy, sal_uInt16 nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScTable* pTable ) { if (nCol2 > MAXCOL) @@ -758,7 +758,7 @@ void ScTable::CopyFromClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, if (ValidColRow(nCol1, nRow1) && ValidColRow(nCol2, nRow2)) { for ( SCCOL i = nCol1; i <= nCol2; i++) - aCol[i].CopyFromClip(nRow1, nRow2, nDy, nInsFlag, bAsLink, bSkipAttrForEmpty, pTable->aCol[i - nDx]); + aCol[i].CopyFromClip(rCxt, nRow1, nRow2, nDy, nInsFlag, bAsLink, bSkipAttrForEmpty, pTable->aCol[i - nDx]); if(nInsFlag != IDF_OBJECTS) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits