[Libreoffice-commits] core.git: 6 commits - sc/CppunitTest_sc_rangelst_test.mk sc/inc sc/qa sc/source vcl/source
Markus Mohrhard
markus.mohrhard at googlemail.com
Thu Sep 5 05:40:35 PDT 2013
sc/CppunitTest_sc_rangelst_test.mk | 16 +++-
sc/inc/conditio.hxx | 8 ++
sc/inc/rangelst.hxx | 3
sc/qa/unit/data/xml/universal-content.xml | 119 ++++++++++++++++++++++++++++++
sc/qa/unit/filters-test.cxx | 13 +++
sc/qa/unit/helper/qahelper.cxx | 22 +++++
sc/qa/unit/helper/qahelper.hxx | 11 ++
sc/qa/unit/rangelst_test.cxx | 40 +++++-----
sc/qa/unit/ucalc.cxx | 44 +++++++++++
sc/qa/unit/ucalc.hxx | 2
sc/source/core/data/conditio.cxx | 22 +++++
sc/source/core/data/table2.cxx | 9 +-
sc/source/core/tool/rangelst.cxx | 62 +++++++++++++++
vcl/source/window/menu.cxx | 4 -
14 files changed, 348 insertions(+), 27 deletions(-)
New commits:
commit ce565ff09743c52a08dffc28b9639d657d56bee2
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Thu Sep 5 14:29:29 2013 +0200
add disabled test for Excel 2003 XML import
Change-Id: I5c6ff3a79357ce37b220bd7cad64a3783bc7dc55
diff --git a/sc/qa/unit/data/xml/universal-content.xml b/sc/qa/unit/data/xml/universal-content.xml
new file mode 100644
index 0000000..828af60
--- /dev/null
+++ b/sc/qa/unit/data/xml/universal-content.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0"?>
+<?mso-application progid="Excel.Sheet"?>
+<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
+ <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
+ <Author>moggi</Author>
+ <LastAuthor>moggi</LastAuthor>
+ <Created>2013-09-05T11:50:47Z</Created>
+ <Version>14.00</Version>
+ </DocumentProperties>
+ <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
+ <AllowPNG/>
+ </OfficeDocumentSettings>
+ <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
+ <WindowHeight>8190</WindowHeight>
+ <WindowWidth>16380</WindowWidth>
+ <WindowTopX>0</WindowTopX>
+ <WindowTopY>0</WindowTopY>
+ <TabRatio>141</TabRatio>
+ <ProtectStructure>False</ProtectStructure>
+ <ProtectWindows>False</ProtectWindows>
+ </ExcelWorkbook>
+ <Styles>
+ <Style ss:ID="Default" ss:Name="Normal">
+ <Alignment ss:Vertical="Bottom"/>
+ <Borders/>
+ <Font ss:FontName="Arial" x:Family="Swiss"/>
+ <Interior/>
+ <NumberFormat/>
+ <Protection/>
+ </Style>
+ </Styles>
+ <Worksheet ss:Name="Sheet1">
+ <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="4" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="60.75">
+ <Row>
+ <Cell>
+ <Data ss:Type="Number">1</Data>
+ </Cell>
+ <Cell>
+ <Data ss:Type="String">String1</Data>
+ </Cell>
+ <Cell ss:Formula="=2*3">
+ <Data ss:Type="Number">6</Data>
+ </Cell>
+ </Row>
+ <Row>
+ <Cell>
+ <Data ss:Type="Number">2</Data>
+ </Cell>
+ <Cell>
+ <Data ss:Type="String">String2</Data>
+ </Cell>
+ <Cell ss:Formula="=2+3">
+ <Data ss:Type="Number">5</Data>
+ </Cell>
+ <Cell ss:Index="5" ss:MergeAcross="1" ss:MergeDown="1"/>
+ </Row>
+ <Row>
+ <Cell ss:Index="3" ss:Formula="=2-3">
+ <Data ss:Type="Number">-1</Data>
+ </Cell>
+ <Cell ss:Index="8">
+ <Comment ss:Author="">
+ <ss:Data xmlns="http://www.w3.org/TR/REC-html40">
+ <Font html:Face="Tahoma" x:CharSet="1" html:Size="9" html:Color="#000000">Test</Font>
+ </ss:Data>
+ </Comment>
+ </Cell>
+ </Row>
+ <Row>
+ <Cell ss:Index="3" ss:Formula="=R[-3]C+R[-2]C">
+ <Data ss:Type="Number">11</Data>
+ </Cell>
+ </Row>
+ </Table>
+ <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
+ <PageSetup>
+ <Layout x:StartPageNumber="1"/>
+ <Header x:Margin="0.78749999999999998" x:Data="&C&A"/>
+ <Footer x:Margin="0.78749999999999998" x:Data="&CPage &P"/>
+ <PageMargins x:Bottom="1.0249999999999999" x:Left="0.78749999999999998" x:Right="0.78749999999999998" x:Top="1.0249999999999999"/>
+ </PageSetup>
+ <Print>
+ <ValidPrinterInfo/>
+ <HorizontalResolution>300</HorizontalResolution>
+ <VerticalResolution>300</VerticalResolution>
+ </Print>
+ <Selected/>
+ <Panes>
+ <Pane>
+ <Number>3</Number>
+ <ActiveRow>6</ActiveRow>
+ <ActiveCol>3</ActiveCol>
+ </Pane>
+ </Panes>
+ <ProtectObjects>False</ProtectObjects>
+ <ProtectScenarios>False</ProtectScenarios>
+ <EnableSelection>NoSelection</EnableSelection>
+ </WorksheetOptions>
+ </Worksheet>
+ <Worksheet ss:Name="Sheet2">
+ <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="60.75">
+ </Table>
+ <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
+ <PageSetup>
+ <Header x:Margin="0.78749999999999998" x:Data="&C&A"/>
+ <Footer x:Margin="0.78749999999999998" x:Data="&CPage &P"/>
+ <PageMargins x:Bottom="1.0249999999999999" x:Left="0.78749999999999998" x:Right="0.78749999999999998" x:Top="1.0249999999999999"/>
+ </PageSetup>
+ <Print>
+ <ValidPrinterInfo/>
+ <HorizontalResolution>300</HorizontalResolution>
+ <VerticalResolution>300</VerticalResolution>
+ </Print>
+ <ProtectObjects>False</ProtectObjects>
+ <ProtectScenarios>False</ProtectScenarios>
+ <EnableSelection>NoSelection</EnableSelection>
+ </WorksheetOptions>
+ </Worksheet>
+</Workbook>
diff --git a/sc/qa/unit/filters-test.cxx b/sc/qa/unit/filters-test.cxx
index deb1571..f6b9b0b 100644
--- a/sc/qa/unit/filters-test.cxx
+++ b/sc/qa/unit/filters-test.cxx
@@ -66,6 +66,7 @@ public:
void testContentXLSX();
void testContentLotus123();
void testContentDIF();
+ void testContentXLS_XML();
void testSharedFormulaXLS();
void testSharedFormulaXLSX();
#if TEST_BUG_FILES
@@ -86,6 +87,7 @@ public:
CPPUNIT_TEST(testContentXLSX);
CPPUNIT_TEST(testContentLotus123);
CPPUNIT_TEST(testContentDIF);
+ //CPPUNIT_TEST(testContentXLS_XML);
CPPUNIT_TEST(testSharedFormulaXLS);
CPPUNIT_TEST(testSharedFormulaXLSX);
CPPUNIT_TEST(testLegacyCellAnchoredRotatedShape);
@@ -333,6 +335,17 @@ void ScFiltersTest::testContentDIF()
xDocSh->DoClose();
}
+void ScFiltersTest::testContentXLS_XML()
+{
+ ScDocShellRef xDocSh = loadDoc("universal-content.", XLS_XML);
+ CPPUNIT_ASSERT(xDocSh);
+
+ ScDocument* pDoc = xDocSh->GetDocument();
+ CPPUNIT_ASSERT(pDoc);
+ testContentImpl(pDoc, XLS_XML);
+ xDocSh->DoClose();
+}
+
void ScFiltersTest::testSharedFormulaXLS()
{
ScDocShellRef xDocSh = loadDoc("shared-formula.", XLS);
diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index 2a57213..7c409ef 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -58,6 +58,7 @@ FileFormat aFileFormats[] = {
{ "html" , "calc_HTML_WebQuery", "generic_HTML", HTML_FORMAT_TYPE },
{ "123" , "Lotus", "calc_Lotus", LOTUS123_FORMAT_TYPE },
{ "dif", "DIF", "calc_DIF", DIF_FORMAT_TYPE },
+ { "xml", "MS Excel 2003 XML", "calc_MS_Excel_2003_XML", XLS_XML_FORMAT_TYPE }
};
bool testEqualsWithTolerance( long nVal1, long nVal2, long nTol )
diff --git a/sc/qa/unit/helper/qahelper.hxx b/sc/qa/unit/helper/qahelper.hxx
index eea4576..3597dd1 100644
--- a/sc/qa/unit/helper/qahelper.hxx
+++ b/sc/qa/unit/helper/qahelper.hxx
@@ -36,6 +36,7 @@
#define CSV_FORMAT_TYPE (SFX_FILTER_IMPORT | SFX_FILTER_EXPORT | SFX_FILTER_ALIEN | SFX_FILTER_USESOPTIONS)
#define HTML_FORMAT_TYPE (SFX_FILTER_IMPORT | SFX_FILTER_EXPORT | SFX_FILTER_ALIEN | SFX_FILTER_USESOPTIONS)
#define DIF_FORMAT_TYPE 195
+#define XLS_XML_FORMAT_TYPE (SFX_FILTER_IMPORT | SFX_FILTER_EXPORT | SFX_FILTER_ALIEN)
#define ODS 0
#define XLS 1
@@ -44,6 +45,7 @@
#define HTML 4
#define LOTUS123 5
#define DIF 6
+#define XLS_XML 7
enum StringType { PureString, FormulaValue, StringValue };
commit fd2f96c2ff83bee968fec8aa7c402ae02e78e2e4
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Thu Sep 5 13:24:40 2013 +0200
add test case for fdo#67783
Change-Id: I3a8f99e00e12a6120a284afabbf51e6fbb36195b
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index ab227ea..ad98b7d 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -4138,6 +4138,50 @@ void Test::testCondFormatINSDEL()
m_pDoc->DeleteTab(0);
}
+void Test::testCondFormatInsertCol()
+{
+ m_pDoc->InsertTab(0, "Test");
+ ScConditionalFormatList* pList = m_pDoc->GetCondFormList(0);
+
+ ScConditionalFormat* pFormat = new ScConditionalFormat(1, m_pDoc);
+ ScRangeList aRangeList(ScRange(0,0,0,3,3,0));
+ pFormat->AddRange(aRangeList);
+
+ ScCondFormatEntry* pEntry = new ScCondFormatEntry(SC_COND_DIRECT,"=B2","",m_pDoc,ScAddress(0,0,0),ScGlobal::GetRscString(STR_STYLENAME_RESULT));
+ pFormat->AddEntry(pEntry);
+
+ m_pDoc->AddCondFormatData(pFormat->GetRange(), 0, 1);
+ pList->InsertNew(pFormat);
+
+ m_pDoc->InsertCol(0,0,MAXROW,0,4,2);
+ const ScRangeList& rRange = pFormat->GetRange();
+ CPPUNIT_ASSERT_EQUAL(ScRangeList(ScRange(0,0,0,5,3,0)), rRange);
+
+ m_pDoc->DeleteTab(0);
+}
+
+void Test::testCondFormatInsertRow()
+{
+ m_pDoc->InsertTab(0, "Test");
+ ScConditionalFormatList* pList = m_pDoc->GetCondFormList(0);
+
+ ScConditionalFormat* pFormat = new ScConditionalFormat(1, m_pDoc);
+ ScRangeList aRangeList(ScRange(0,0,0,3,3,0));
+ pFormat->AddRange(aRangeList);
+
+ ScCondFormatEntry* pEntry = new ScCondFormatEntry(SC_COND_DIRECT,"=B2","",m_pDoc,ScAddress(0,0,0),ScGlobal::GetRscString(STR_STYLENAME_RESULT));
+ pFormat->AddEntry(pEntry);
+
+ m_pDoc->AddCondFormatData(pFormat->GetRange(), 0, 1);
+ pList->InsertNew(pFormat);
+
+ m_pDoc->InsertRow(0,0,MAXCOL,0,4,2);
+ const ScRangeList& rRange = pFormat->GetRange();
+ CPPUNIT_ASSERT_EQUAL(ScRangeList(ScRange(0,0,0,5,5,0)), rRange);
+
+ m_pDoc->DeleteTab(0);
+}
+
void Test::printRange(ScDocument* pDoc, const ScRange& rRange, const char* pCaption)
{
SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index fba750f..9ad69b6 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -271,6 +271,8 @@ public:
void testEditTextIterator();
void testCondFormatINSDEL();
+ void testCondFormatInsertRow();
+ void testCondFormatInsertCol();
CPPUNIT_TEST_SUITE(Test);
#if CALC_TEST_PERF
commit 6cc31515db179c61ec2269fa9fe939ad6ae7a9bc
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Thu Sep 5 13:41:28 2013 +0200
extract the calc data structure printers for cppunit equal macros
Change-Id: I9bb1311f5c4688f66c3eb3f85da599686c95e87a
diff --git a/sc/CppunitTest_sc_rangelst_test.mk b/sc/CppunitTest_sc_rangelst_test.mk
index a2002c3..5618c04 100644
--- a/sc/CppunitTest_sc_rangelst_test.mk
+++ b/sc/CppunitTest_sc_rangelst_test.mk
@@ -9,12 +9,26 @@
$(eval $(call gb_CppunitTest_CppunitTest,sc_rangelst_test))
-$(eval $(call gb_CppunitTest_use_external,sc_rangelst_test,boost_headers))
+$(eval $(call gb_CppunitTest_use_externals,sc_rangelst_test, \
+ boost_headers \
+ icu_headers \
+ icudata \
+ icui18n \
+ icuuc \
+ libxml2 \
+ mdds_headers \
+ orcus \
+ orcus-parser \
+))
$(eval $(call gb_CppunitTest_add_exception_objects,sc_rangelst_test, \
sc/qa/unit/rangelst_test \
))
+$(eval $(call gb_CppunitTest_use_library_objects,sc_rangelst_test, \
+ scqahelper \
+))
+
$(eval $(call gb_CppunitTest_use_libraries,sc_rangelst_test, \
avmedia \
basegfx \
diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index 6ba96ce..2a57213 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -29,6 +29,27 @@
using namespace com::sun::star;
using namespace ::com::sun::star::uno;
+// calc data structure pretty printer
+std::ostream& operator<<(std::ostream& rStrm, const ScAddress& rAddr)
+{
+ rStrm << "Col: " << rAddr.Col() << " Row: " << rAddr.Row() << " Tab: " << rAddr.Tab() << "\n";
+ return rStrm;
+}
+
+std::ostream& operator<<(std::ostream& rStrm, const ScRange& rRange)
+{
+ rStrm << "ScRange: " << rRange.aStart << rRange.aEnd << "\n";
+ return rStrm;
+}
+
+std::ostream& operator<<(std::ostream& rStrm, const ScRangeList& rList)
+{
+ rStrm << "ScRangeList: \n";
+ for(size_t i = 0; i < rList.size(); ++i)
+ rStrm << *rList[i];
+ return rStrm;
+}
+
FileFormat aFileFormats[] = {
{ "ods" , "calc8", "", ODS_FORMAT_TYPE },
{ "xls" , "MS Excel 97", "calc_MS_EXCEL_97", XLS_FORMAT_TYPE },
diff --git a/sc/qa/unit/helper/qahelper.hxx b/sc/qa/unit/helper/qahelper.hxx
index a4966a1..eea4576 100644
--- a/sc/qa/unit/helper/qahelper.hxx
+++ b/sc/qa/unit/helper/qahelper.hxx
@@ -78,6 +78,15 @@ struct FileFormat {
const char* pName; const char* pFilterName; const char* pTypeName; unsigned int nFormatType;
};
+// Printers for the calc data structures. Needed for the EQUAL assertion
+// macros from CPPUNIT.
+
+std::ostream& operator<<(std::ostream& rStrm, const ScAddress& rAddr);
+
+std::ostream& operator<<(std::ostream& rStrm, const ScRange& rRange);
+
+std::ostream& operator<<(std::ostream& rStrm, const ScRangeList& rList);
+
// Why is this here and not in osl, and using the already existing file
// handling APIs? Do we really want to add arbitrary new file handling
// wrappers here and there (and then having to handle the Android (and
diff --git a/sc/qa/unit/rangelst_test.cxx b/sc/qa/unit/rangelst_test.cxx
index 4281392..afec0d1 100644
--- a/sc/qa/unit/rangelst_test.cxx
+++ b/sc/qa/unit/rangelst_test.cxx
@@ -9,6 +9,7 @@
#include <sal/config.h>
#include <test/bootstrapfixture.hxx>
+#include "helper/qahelper.hxx"
#include "document.hxx"
#include "docsh.hxx"
@@ -78,26 +79,6 @@ private:
ScDocShellRef m_xDocShRef;
};
-static std::ostream& operator<<(std::ostream& rStrm, const ScAddress& rAddr)
-{
- rStrm << "Col: " << rAddr.Col() << " Row: " << rAddr.Row() << " Tab: " << rAddr.Tab() << "\n";
- return rStrm;
-}
-
-static std::ostream& operator<<(std::ostream& rStrm, const ScRange& rRange)
-{
- rStrm << "ScRange: " << rRange.aStart << rRange.aEnd << "\n";
- return rStrm;
-}
-
-static std::ostream& operator<<(std::ostream& rStrm, const ScRangeList& rList)
-{
- rStrm << "ScRangeList: \n";
- for(size_t i = 0; i < rList.size(); ++i)
- rStrm << *rList[i];
- return rStrm;
-}
-
void Test::setUp()
{
BootstrapFixture::setUp();
commit 7169026abcdc42182e7649e5bbf5b247a9575a2f
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Thu Sep 5 13:05:23 2013 +0200
add test cases for new ScRangeList methods
Change-Id: Ia17d1eb26ac6ebc54d085ade8edabcaff442de5c
diff --git a/sc/qa/unit/rangelst_test.cxx b/sc/qa/unit/rangelst_test.cxx
index f543175..4281392 100644
--- a/sc/qa/unit/rangelst_test.cxx
+++ b/sc/qa/unit/rangelst_test.cxx
@@ -43,6 +43,9 @@ public:
void testUpdateReference_DeleteRow();
void testUpdateReference_DeleteCol();
+ void testInsertRow();
+ void testInsertCol();
+
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testDeleteArea_4Ranges);
CPPUNIT_TEST(testDeleteArea_3Ranges);
@@ -65,6 +68,8 @@ public:
CPPUNIT_TEST(testUpdateReference_DeleteRow);
CPPUNIT_TEST(testUpdateReference_DeleteCol);
CPPUNIT_TEST(testGetIntersectedRange);
+ CPPUNIT_TEST(testInsertRow);
+ CPPUNIT_TEST(testInsertCol);
CPPUNIT_TEST_SUITE_END();
@@ -477,6 +482,20 @@ void Test::testGetIntersectedRange()
CPPUNIT_ASSERT_EQUAL(ScRangeList(ScRange(2,2,0,3,3,0)), aIntersecting);
}
+void Test::testInsertRow()
+{
+ ScRangeList aList(ScRange(1,1,0,4,4,0));
+ aList.InsertRow(0, 0, MAXCOL, 5, 2);
+ CPPUNIT_ASSERT_EQUAL(ScRangeList(ScRange(1,1,0,4,6,0)), aList);
+}
+
+void Test::testInsertCol()
+{
+ ScRangeList aList(ScRange(1,1,0,4,4,0));
+ aList.InsertCol(0, 0, MAXROW, 5, 2);
+ CPPUNIT_ASSERT_EQUAL(ScRangeList(ScRange(1,1,0,6,4,0)), aList);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
commit 5d9e062a68eaf7544d02501d7b221150d74f7555
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Thu Sep 5 13:05:53 2013 +0200
increase conditional format range during inserting rows/cols, fdo#67783
Change-Id: Ib74667fb958aa9bbbcae3a0289b3cbd6edf8fb37
diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx
index 7f50a27..040f237 100644
--- a/sc/inc/conditio.hxx
+++ b/sc/inc/conditio.hxx
@@ -413,6 +413,10 @@ public:
void UpdateInsertTab( sc::RefUpdateInsertTabContext& rCxt );
void UpdateDeleteTab( sc::RefUpdateDeleteTabContext& rCxt );
void UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt );
+
+ void InsertRow(SCTAB nTab, SCCOL nColStart, SCCOL nColEnd, SCROW nRowStart, SCSIZE nSize);
+ void InsertCol(SCTAB nTab, SCROW nRowStart, SCROW nRowEnd, SCCOL nColStart, SCSIZE nSize);
+
void DeleteArea( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
void RenameCellStyle( const OUString& rOld, const OUString& rNew );
@@ -478,6 +482,10 @@ public:
void UpdateInsertTab( sc::RefUpdateInsertTabContext& rCxt );
void UpdateDeleteTab( sc::RefUpdateDeleteTabContext& rCxt );
void UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt );
+
+ void InsertRow(SCTAB nTab, SCCOL nColStart, SCCOL nColEnd, SCROW nRowStart, SCSIZE nSize);
+ void InsertCol(SCTAB nTab, SCROW nRowStart, SCROW nRowEnd, SCCOL nColStart, SCSIZE nSize);
+
void RenameCellStyle( const OUString& rOld, const OUString& rNew );
void DeleteArea( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
diff --git a/sc/inc/rangelst.hxx b/sc/inc/rangelst.hxx
index 9902eab..6ff6150 100644
--- a/sc/inc/rangelst.hxx
+++ b/sc/inc/rangelst.hxx
@@ -59,6 +59,9 @@ public:
SCsTAB nDz
);
+ void InsertRow( SCTAB nTab, SCCOL nColStart, SCCOL nColEnd, SCROW nRowPos, SCSIZE nSize );
+ void InsertCol( SCTAB nTab, SCROW nRowStart, SCROW nRowEnd, SCCOL nColPos, SCSIZE nSize );
+
/** For now this method assumes that nTab1 == nTab2
* The algorithm will be much more complicated if nTab1 != nTab2
*/
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index 26f561a4..6cc4f1b 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -1960,6 +1960,16 @@ void ScConditionalFormat::UpdateReference( sc::RefUpdateContext& rCxt, bool bCop
maRanges.UpdateReference(rCxt.meMode, pDoc, rCxt.maRange, rCxt.mnColDelta, rCxt.mnRowDelta, rCxt.mnTabDelta);
}
+void ScConditionalFormat::InsertRow(SCTAB nTab, SCCOL nColStart, SCCOL nColEnd, SCROW nRowPos, SCSIZE nSize)
+{
+ maRanges.InsertRow(nTab, nColStart, nColEnd, nRowPos, nSize);
+}
+
+void ScConditionalFormat::InsertCol(SCTAB nTab, SCROW nRowStart, SCROW nRowEnd, SCCOL nColPos, SCSIZE nSize)
+{
+ maRanges.InsertCol(nTab, nRowStart, nRowEnd, nColPos, nSize);
+}
+
void ScConditionalFormat::UpdateInsertTab( sc::RefUpdateInsertTabContext& rCxt )
{
for (CondFormatContainer::iterator it = maEntries.begin(); it != maEntries.end(); ++it)
@@ -2168,6 +2178,18 @@ void ScConditionalFormatList::UpdateReference( sc::RefUpdateContext& rCxt )
}
}
+void ScConditionalFormatList::InsertRow(SCTAB nTab, SCCOL nColStart, SCCOL nColEnd, SCROW nRowPos, SCSIZE nSize)
+{
+ for(iterator it = begin(), itEnd = end(); it != itEnd; ++it)
+ it->InsertRow(nTab, nColStart, nColEnd, nRowPos, nSize);
+}
+
+void ScConditionalFormatList::InsertCol(SCTAB nTab, SCROW nRowStart, SCROW nRowEnd, SCCOL nColPos, SCSIZE nSize)
+{
+ for(iterator it = begin(), itEnd = end(); it != itEnd; ++it)
+ it->InsertCol(nTab, nRowStart, nRowEnd, nColPos, nSize);
+}
+
void ScConditionalFormatList::UpdateInsertTab( sc::RefUpdateInsertTabContext& rCxt )
{
for (iterator it = begin(); it != end(); ++it)
diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx
index da3d423..7bd7ac6 100644
--- a/sc/source/core/data/table2.cxx
+++ b/sc/source/core/data/table2.cxx
@@ -218,6 +218,8 @@ void ScTable::InsertRow( SCCOL nStartCol, SCCOL nEndCol, SCROW nStartRow, SCSIZE
aNotes.ReleaseNote( nCol, nRow);
}
+ mpCondFormatList->InsertRow(nTab, nStartCol, nEndCol, nStartRow, nSize);
+
InvalidatePageBreaks();
if (IsStreamValid())
@@ -425,10 +427,9 @@ void ScTable::InsertCol(
if (nStartCol>0) // copy old attributes
{
- sal_uInt16 nWhichArray[3];
+ sal_uInt16 nWhichArray[2];
nWhichArray[0] = ATTR_MERGE;
- nWhichArray[1] = ATTR_CONDITIONAL;
- nWhichArray[2] = 0;
+ nWhichArray[1] = 0;
sc::CopyToDocContext aCxt(*pDocument);
for (SCSIZE i=0; i<nSize; i++)
@@ -441,6 +442,8 @@ void ScTable::InsertCol(
}
}
+ mpCondFormatList->InsertCol(nTab, nStartRow, nEndRow, nStartCol, nSize);
+
InvalidatePageBreaks();
if (IsStreamValid())
diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx
index 8abb347..00a9ca0 100644
--- a/sc/source/core/tool/rangelst.cxx
+++ b/sc/source/core/tool/rangelst.cxx
@@ -459,6 +459,68 @@ bool ScRangeList::UpdateReference(
return bChanged;
}
+void ScRangeList::InsertRow( SCTAB nTab, SCCOL nColStart, SCCOL nColEnd, SCROW nRowPos, SCSIZE nSize )
+{
+ std::vector<ScRange> aNewRanges;
+ for(iterator it = maRanges.begin(), itEnd = maRanges.end(); it != itEnd;
+ ++it)
+ {
+ ScRange* pRange = *it;
+ if(pRange->aStart.Tab() <= nTab && pRange->aEnd.Tab() >= nTab)
+ {
+ if(pRange->aEnd.Row() == nRowPos - 1 && (nColStart <= pRange->aEnd.Col() || nColEnd >= pRange->aStart.Col()))
+ {
+ SCCOL nNewRangeStartCol = std::max<SCCOL>(nColStart, pRange->aStart.Col());
+ SCCOL nNewRangeEndCol = std::min<SCCOL>(nColEnd, pRange->aEnd.Col());
+ SCROW nNewRangeStartRow = pRange->aEnd.Row() + 1;
+ SCROW nNewRangeEndRow = nRowPos + nSize - 1;
+ aNewRanges.push_back(ScRange(nNewRangeStartCol, nNewRangeStartRow, nTab, nNewRangeEndCol,
+ nNewRangeEndRow, nTab));
+ }
+ }
+ }
+
+ for(std::vector<ScRange>::const_iterator it = aNewRanges.begin(), itEnd = aNewRanges.end();
+ it != itEnd; ++it)
+ {
+ if(!it->IsValid())
+ continue;
+
+ Join(*it);
+ }
+}
+
+void ScRangeList::InsertCol( SCTAB nTab, SCROW nRowStart, SCROW nRowEnd, SCCOL nColPos, SCSIZE nSize )
+{
+ std::vector<ScRange> aNewRanges;
+ for(iterator it = maRanges.begin(), itEnd = maRanges.end(); it != itEnd;
+ ++it)
+ {
+ ScRange* pRange = *it;
+ if(pRange->aStart.Tab() <= nTab && pRange->aEnd.Tab() >= nTab)
+ {
+ if(pRange->aEnd.Col() == nColPos - 1 && (nRowStart <= pRange->aEnd.Row() || nRowEnd >= pRange->aStart.Row()))
+ {
+ SCROW nNewRangeStartRow = std::max<SCROW>(nRowStart, pRange->aStart.Row());
+ SCROW nNewRangeEndRow = std::min<SCROW>(nRowEnd, pRange->aEnd.Row());
+ SCCOL nNewRangeStartCol = pRange->aEnd.Col() + 1;
+ SCCOL nNewRangeEndCol = nColPos + nSize - 1;
+ aNewRanges.push_back(ScRange(nNewRangeStartCol, nNewRangeStartRow, nTab, nNewRangeEndCol,
+ nNewRangeEndRow, nTab));
+ }
+ }
+ }
+
+ for(std::vector<ScRange>::const_iterator it = aNewRanges.begin(), itEnd = aNewRanges.end();
+ it != itEnd; ++it)
+ {
+ if(!it->IsValid())
+ continue;
+
+ Join(*it);
+ }
+}
+
namespace {
/**
commit dcc05d40c6fdb41a4193072d6b72456d75269ba3
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Wed Sep 4 10:44:14 2013 +0200
this assert is too strong
Change-Id: I130996a78695b38eb200a2b22a68e0aca575e3af
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index 69625d6..a62f87a 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -2007,9 +2007,7 @@ OUString Menu::ImplGetHelpText( sal_uInt16 nItemId ) const
{
MenuItemData* pData = pItemList->GetData( nItemId );
- assert ( pData );
-
- if ( pData->aHelpText.isEmpty() &&
+ if ( pData && pData->aHelpText.isEmpty() &&
(( !pData->aHelpId.isEmpty() ) || ( !pData->aCommandStr.isEmpty() )))
{
if ( pData->aHelpText.isEmpty() &&
More information about the Libreoffice-commits
mailing list