sc/Module_sc.mk | 1 sc/inc/postit.hxx | 5 +- sc/qa/unit/ucalc.cxx | 42 ++++++++++++++++++++++ sc/source/core/data/postit.cxx | 7 +-- sc/source/core/data/table2.cxx | 6 +-- sc/source/ui/condformat/condformatdlgentry.cxx | 10 ++++- sc/source/ui/inc/anyrefdg.hxx | 24 ++++++------- sc/source/ui/miscdlgs/anyrefdg.cxx | 46 ++++++++++++------------- 8 files changed, 95 insertions(+), 46 deletions(-)
New commits: commit aa7500f2231c383e4fd49e94757faccacdde1185 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Oct 13 08:42:33 2012 +0200 add a unit test for removing rows/columns with comments Change-Id: I91d9abdc61f75ba080e092dc9b4e18bdb89b3705 diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 8eef410..a5e3a07 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -225,6 +225,8 @@ public: void testFindAreaPosColRight(); void testSort(); void testSortWithFormulaRefs(); + void testDeleteRow(); + void testDeleteCol(); CPPUNIT_TEST_SUITE(Test); CPPUNIT_TEST(testCollator); @@ -275,6 +277,8 @@ public: CPPUNIT_TEST(testFindAreaPosColRight); CPPUNIT_TEST(testSort); CPPUNIT_TEST(testSortWithFormulaRefs); + CPPUNIT_TEST(testDeleteRow); + CPPUNIT_TEST(testDeleteCol); CPPUNIT_TEST_SUITE_END(); private: @@ -5030,6 +5034,44 @@ void Test::testSort() pDoc->DeleteTab(0); } +void Test::testDeleteRow() +{ + ScDocument* pDoc = m_xDocShRef->GetDocument(); + rtl::OUString aSheet1("Sheet1"); + pDoc->InsertTab(0, aSheet1); + + rtl::OUString aHello("Hello"); + rtl::OUString aJimBob("Jim Bob"); + ScAddress rAddr(1, 1, 0); + ScPostIt* pNote = m_pDoc->GetNotes(rAddr.Tab())->GetOrCreateNote(rAddr); + pNote->SetText(rAddr, aHello); + pNote->SetAuthor(aJimBob); + + pDoc->DeleteRow(0, 0, MAXCOL, 0, 1, 1); + + CPPUNIT_ASSERT(m_pDoc->GetNotes(0)->empty()); + pDoc->DeleteTab(0); +} + +void Test::testDeleteCol() +{ + ScDocument* pDoc = m_xDocShRef->GetDocument(); + rtl::OUString aSheet1("Sheet1"); + pDoc->InsertTab(0, aSheet1); + + rtl::OUString aHello("Hello"); + rtl::OUString aJimBob("Jim Bob"); + ScAddress rAddr(1, 1, 0); + ScPostIt* pNote = m_pDoc->GetNotes(rAddr.Tab())->GetOrCreateNote(rAddr); + pNote->SetText(rAddr, aHello); + pNote->SetAuthor(aJimBob); + + pDoc->DeleteCol(0, 0, MAXROW, 0, 1, 1); + + CPPUNIT_ASSERT(m_pDoc->GetNotes(0)->empty()); + pDoc->DeleteTab(0); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); } commit 8fb84ee62409dec8eb02982c9cf78fb42bf1747e Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Oct 13 12:28:36 2012 +0200 sal_Bool to bool in anyrefdg.[ch]xx Change-Id: I4efa09c0185e7825d5b705ca0171f52b8aae17df diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx index 247edc0..8b66f68 100644 --- a/sc/source/ui/inc/anyrefdg.hxx +++ b/sc/source/ui/inc/anyrefdg.hxx @@ -62,7 +62,7 @@ class ScFormulaReferenceHelper SfxBindings* m_pBindings; ::std::auto_ptr<Accelerator> pAccel; // for Enter/Escape - sal_Bool* pHiddenMarks; // Mark field for hidden Controls + bool* pHiddenMarks; // Mark field for hidden Controls SCTAB nRefTab; // used for ShowReference String sOldDialogText; // Original title of the dialog window @@ -72,9 +72,9 @@ class ScFormulaReferenceHelper Point aOldButtonPos; // Original position of the button Window* mpOldEditParent; // Original parent of the edit field and the button - sal_Bool bEnableColorRef; - sal_Bool bHighLightRef; - sal_Bool bAccInserted; + bool bEnableColorRef; + bool bHighLightRef; + bool bAccInserted; DECL_LINK( AccelSelectHdl, Accelerator* ); @@ -89,25 +89,25 @@ public: void ShowReference( const XubString& rStr ); void ReleaseFocus( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ); - void HideReference( sal_Bool bDoneRefMode = sal_True ); + void HideReference( bool bDoneRefMode = true ); void RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ); - void RefInputDone( sal_Bool bForced = false ); + void RefInputDone( bool bForced = false ); void ToggleCollapsed( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ); inline void SetWindow(Window* _pWindow) { m_pWindow = _pWindow; } - sal_Bool DoClose( sal_uInt16 nId ); - void SetDispatcherLock( sal_Bool bLock ); - void EnableSpreadsheets( sal_Bool bFlag = sal_True, sal_Bool bChildren = sal_True ); + bool DoClose( sal_uInt16 nId ); + void SetDispatcherLock( bool bLock ); + void EnableSpreadsheets( bool bFlag = true, bool bChildren = true ); void ViewShellChanged( ScTabViewShell* pScViewShell ); - static void enableInput(sal_Bool _bInput); + static void enableInput(bool _bInput); protected: Window * GetWindow(){ return m_pWindow; } public: bool CanInputStart( const formula::RefEdit *pEdit ){ return !!pEdit; } - bool CanInputDone( sal_Bool bForced ){ return pRefEdit && (bForced || !pRefBtn); } + bool CanInputDone( bool bForced ){ return pRefEdit && (bForced || !pRefBtn); } }; //============================================================================ @@ -139,7 +139,7 @@ private: protected: virtual sal_Bool DoClose( sal_uInt16 nId ); - void SetDispatcherLock( sal_Bool bLock ); + void SetDispatcherLock( bool bLock ); //Overwrite TWindow will implemented by ScRefHdlrImplBase //virtual long PreNotify( NotifyEvent& rNEvt ); diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx index 8ebb1c3..3b4e9a4 100644 --- a/sc/source/ui/miscdlgs/anyrefdg.cxx +++ b/sc/source/ui/miscdlgs/anyrefdg.cxx @@ -76,14 +76,14 @@ ScFormulaReferenceHelper::~ScFormulaReferenceHelper() // common cleanup for ScAnyRefDlg and ScFormulaDlg is done here HideReference(); - enableInput( sal_True ); + enableInput( true ); ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl(); if ( pInputHdl ) pInputHdl->ResetDelayTimer(); // stop the timer for disabling the input line } // ----------------------------------------------------------------------------- -void ScFormulaReferenceHelper::enableInput( sal_Bool bEnable ) +void ScFormulaReferenceHelper::enableInput( bool bEnable ) { TypeId aType(TYPE(ScDocShell)); ScDocShell* pDocShell = (ScDocShell*)SfxObjectShell::GetFirst(&aType); @@ -105,8 +105,8 @@ void ScFormulaReferenceHelper::enableInput( sal_Bool bEnable ) Window *pParent=pWin->GetParent(); if(pParent) { - pParent->EnableInput(bEnable,sal_True /* sal_False */); - if(sal_True /*bChildren*/) + pParent->EnableInput(bEnable,true /* sal_False */); + if(true /*bChildren*/) pViewSh->EnableRefInput(bEnable); } } @@ -123,7 +123,7 @@ void ScFormulaReferenceHelper::ShowSimpleReference( const XubString& rStr ) { if( bEnableColorRef ) { - bHighLightRef=sal_True; + bHighLightRef=true; ScViewData* pViewData=ScDocShell::GetViewData(); if ( pViewData ) { @@ -183,7 +183,7 @@ void ScFormulaReferenceHelper::ShowFormulaReference( const XubString& rStr ) { if( /*!pRefEdit &&*/ bEnableColorRef) { - bHighLightRef=sal_True; + bHighLightRef=true; ScViewData* pViewData=ScDocShell::GetViewData(); if ( pViewData && pRefComp.get() ) { @@ -208,7 +208,7 @@ void ScFormulaReferenceHelper::ShowFormulaReference( const XubString& rStr ) while(pToken!=NULL) { - sal_Bool bDoubleRef=(pToken->GetType()==formula::svDoubleRef); + bool bDoubleRef=(pToken->GetType()==formula::svDoubleRef); if(pToken->GetType()==formula::svSingleRef || bDoubleRef) @@ -240,7 +240,7 @@ void ScFormulaReferenceHelper::ShowFormulaReference( const XubString& rStr ) } } // ----------------------------------------------------------------------------- -void ScFormulaReferenceHelper::HideReference( sal_Bool bDoneRefMode ) +void ScFormulaReferenceHelper::HideReference( bool bDoneRefMode ) { ScViewData* pViewData=ScDocShell::GetViewData(); @@ -310,7 +310,7 @@ void ScFormulaReferenceHelper::ReleaseFocus( formula::RefEdit* pEdit, formula::R pViewShell->MoveCursorAbs( pRange->aStart.Col(), pRange->aStart.Row(), SC_FOLLOW_JUMP, false, false ); pViewShell->MoveCursorAbs( pRange->aEnd.Col(), - pRange->aEnd.Row(), SC_FOLLOW_JUMP, sal_True, false ); + pRange->aEnd.Row(), SC_FOLLOW_JUMP, true, false ); m_pDlg->SetReference( *pRange, pDoc ); } } @@ -333,7 +333,7 @@ void ScFormulaReferenceHelper::Init() pRefCell.reset( new ScFormulaCell( pDoc, aCursorPos, rStrExp ) ); pRefComp.reset( new ScCompiler( pDoc, aCursorPos) ); pRefComp->SetGrammar( pDoc->GetGrammar() ); - pRefComp->SetCompileForFAP(sal_True); + pRefComp->SetCompileForFAP(true); nRefTab = nTab; } @@ -350,13 +350,13 @@ IMPL_LINK( ScFormulaReferenceHelper, AccelSelectHdl, Accelerator *, pSelAccel ) case KEY_ESCAPE: if( pRefEdit ) pRefEdit->GrabFocus(); - m_pDlg->RefInputDone( sal_True ); + m_pDlg->RefInputDone( true ); break; } - return sal_True; + return true; } //---------------------------------------------------------------------------- -void ScFormulaReferenceHelper::RefInputDone( sal_Bool bForced ) +void ScFormulaReferenceHelper::RefInputDone( bool bForced ) { if ( CanInputDone( bForced ) ) { @@ -428,7 +428,7 @@ void ScFormulaReferenceHelper::RefInputStart( formula::RefEdit* pEdit, formula:: // Alle Elemente ausser EditCell und Button verstecken sal_uInt16 nChildren = m_pWindow->GetChildCount(); - pHiddenMarks = new sal_Bool [nChildren]; + pHiddenMarks = new bool [nChildren]; for (sal_uInt16 i = 0; i < nChildren; i++) { pHiddenMarks[i] = false; @@ -442,7 +442,7 @@ void ScFormulaReferenceHelper::RefInputStart( formula::RefEdit* pEdit, formula:: ; // do nothing else if (pWin->IsVisible()) { - pHiddenMarks[i] = sal_True; + pHiddenMarks[i] = true; pWin->Hide(); } } @@ -498,11 +498,11 @@ void ScFormulaReferenceHelper::ToggleCollapsed( formula::RefEdit* pEdit, formula if( pRefEdit == pEdit ) // is this the active ref edit field? { pRefEdit->GrabFocus(); // before RefInputDone() - m_pDlg->RefInputDone( sal_True ); // finish ref input + m_pDlg->RefInputDone( true ); // finish ref input } else { - m_pDlg->RefInputDone( sal_True ); // another active ref edit? + m_pDlg->RefInputDone( true ); // another active ref edit? m_pDlg->RefInputStart( pEdit, pButton ); // start ref input // pRefEdit might differ from pEdit after RefInputStart() (i.e. ScFormulaDlg) if( pRefEdit ) @@ -511,7 +511,7 @@ void ScFormulaReferenceHelper::ToggleCollapsed( formula::RefEdit* pEdit, formula } } // ----------------------------------------------------------------------------- -sal_Bool ScFormulaReferenceHelper::DoClose( sal_uInt16 nId ) +bool ScFormulaReferenceHelper::DoClose( sal_uInt16 nId ) { SfxApplication* pSfxApp = SFX_APP(); @@ -545,11 +545,11 @@ sal_Bool ScFormulaReferenceHelper::DoClose( sal_uInt16 nId ) ScTabViewShell* pScViewShell = ScTabViewShell::GetActiveViewShell(); if ( pScViewShell ) - pScViewShell->UpdateInputHandler(sal_True); + pScViewShell->UpdateInputHandler(true); - return sal_True; + return true; } -void ScFormulaReferenceHelper::SetDispatcherLock( sal_Bool bLock ) +void ScFormulaReferenceHelper::SetDispatcherLock( bool bLock ) { // lock / unlock only the dispatchers of Calc documents @@ -580,7 +580,7 @@ void ScFormulaReferenceHelper::ViewShellChanged(ScTabViewShell* /* pScViewShell EnableSpreadsheets(); } -void ScFormulaReferenceHelper::EnableSpreadsheets(sal_Bool bFlag, sal_Bool bChildren) +void ScFormulaReferenceHelper::EnableSpreadsheets(bool bFlag, bool bChildren) { TypeId aType(TYPE(ScDocShell)); ScDocShell* pDocShell = (ScDocShell*)SfxObjectShell::GetFirst(&aType); @@ -824,7 +824,7 @@ sal_Bool ScRefHandler::DoClose( sal_uInt16 nId ) return sal_True; } -void ScRefHandler::SetDispatcherLock( sal_Bool bLock ) +void ScRefHandler::SetDispatcherLock( bool bLock ) { m_aHelper.SetDispatcherLock( bLock ); } commit d342c9bebe446cb16285b203f207b4b215b5941a Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Oct 13 12:11:45 2012 +0200 hide edit fields for duplicate and unique Change-Id: Ib2d07a22393604ea11454de125849e9d0da430b8 diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx index 1588bc4..75fec8c 100644 --- a/sc/source/ui/condformat/condformatdlgentry.cxx +++ b/sc/source/ui/condformat/condformatdlgentry.cxx @@ -910,12 +910,20 @@ IMPL_LINK( ScColorScale3FrmtEntry, EntryTypeHdl, ListBox*, pBox ) IMPL_LINK_NOARG( ScConditionFrmtEntry, ConditionTypeSelectHdl ) { - if(maLbCondType.GetSelectEntryPos() == 6 || maLbCondType.GetSelectEntryPos() == 7) + sal_Int32 nSelectPos = maLbCondType.GetSelectEntryPos(); + if(nSelectPos == 6 || nSelectPos == 7) { + maEdVal1.Show(); maEdVal2.Show(); } + else if(nSelectPos == 8 || nSelectPos == 9) + { + maEdVal2.Hide(); + maEdVal1.Hide(); + } else { + maEdVal1.Show(); maEdVal2.Hide(); } commit f8dada570ba03b6761a41a074063f2d306989232 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Oct 13 10:02:08 2012 +0200 fix memory leak in note handling Change-Id: I55a7673aff8e23f59ccb99ea73a102df215ba599 diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index 649a6fc..2203364 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -44,7 +44,6 @@ endif $(eval $(call gb_Module_add_check_targets,sc,\ CppunitTest_sc_ucalc \ - CppunitTest_sc_rangelst_test \ )) # Disabled to allow the check tinderbox execute the sd tests diff --git a/sc/inc/postit.hxx b/sc/inc/postit.hxx index 0db2a9f..f9c2286 100644 --- a/sc/inc/postit.hxx +++ b/sc/inc/postit.hxx @@ -266,10 +266,11 @@ private: typedef std::map<ScAddress2D, ScPostIt*> ScNoteMap; ScNoteMap maNoteMap; + ScNotes(const ScNotes& rNotes); + ScNotes operator=(const ScNotes& rNotes); ScDocument* mpDoc; public: ScNotes(ScDocument* pDoc); - ScNotes(const ScNotes& rNotes); ~ScNotes(); typedef ScNoteMap::iterator iterator; @@ -306,7 +307,7 @@ public: void clear(); - ScNotes* clone(ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bCloneNoteCaption, SCTAB nTab); + void clone(ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bCloneNoteCaption, SCTAB nTab, ScNotes& rTarget); void CopyFromClip(const ScNotes& maNotes, ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, SCsCOL nDx, SCsROW nDy, SCTAB nTab, bool bCloneCaption); void erase(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bForgetCaption = false); diff --git a/sc/source/core/data/postit.cxx b/sc/source/core/data/postit.cxx index 97ab523..4f9c21a 100644 --- a/sc/source/core/data/postit.cxx +++ b/sc/source/core/data/postit.cxx @@ -1057,9 +1057,9 @@ void ScNotes::clear() maNoteMap.clear(); } -ScNotes* ScNotes::clone(ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bCloneNoteCaption, SCTAB nTab) +void ScNotes::clone(ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bCloneNoteCaption, SCTAB nTab, ScNotes& rTarget) { - ScNotes* pNotes = new ScNotes(pDoc); + rTarget.clear(); for (ScNotes::iterator itr = maNoteMap.begin(); itr != maNoteMap.end(); ++itr) { SCCOL nCol = itr->first.first; @@ -1067,10 +1067,9 @@ ScNotes* ScNotes::clone(ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, if (nCol >= nCol1 && nCol <= nCol2 && nRow >= nRow1 && nRow <= nRow2) { - pNotes->insert(nCol, nRow, itr->second->Clone( ScAddress(nCol, nRow, nTab),*pDoc, ScAddress(nCol, nRow, nTab), bCloneNoteCaption)); + rTarget.insert(nCol, nRow, itr->second->Clone( ScAddress(nCol, nRow, nTab), *pDoc, ScAddress(nCol, nRow, nTab), bCloneNoteCaption)); } } - return pNotes; } void ScNotes::CopyFromClip(const ScNotes& rNotes, ScDocument* pDoc, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, SCsCOL nDx, SCsROW nDy, SCTAB nTab, bool bCloneCaption) diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 3da04e3..2a51d54 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -611,7 +611,7 @@ void ScTable::CopyToClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, pTable->mpRangeName = new ScRangeName(*mpRangeName); // notes - pTable->maNotes = *maNotes.clone(pTable->pDocument, nCol1, nRow1, nCol2, nRow2, bCloneNoteCaptions, nTab); + maNotes.clone(pTable->pDocument, nCol1, nRow1, nCol2, nRow2, bCloneNoteCaptions, nTab, pTable->maNotes); SCCOL i; commit 262079b2df4fb42ab00b93e8d87b364cb38ce7ae Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Oct 13 08:41:35 2012 +0200 fix the problem in the right method Change-Id: Ifedd563ad430cff957e148d81367139455d71686 diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index d016c6b..3da04e3 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -377,7 +377,7 @@ void ScTable::InsertCol( SCCOL nStartCol, SCROW nStartRow, SCROW nEndRow, SCSIZE ScPostIt* pPostIt = itr->second; ++itr; - if (nCol - nStartCol >= nStartCol) + if (nCol >= nStartCol) { aNotes.insert(nCol + nSize, nRow, pPostIt); maNotes.ReleaseNote(nCol, nRow); @@ -488,7 +488,7 @@ void ScTable::DeleteCol( SCCOL nStartCol, SCROW nStartRow, SCROW nEndRow, SCSIZE if (nCol >= nStartCol) { - if(nCol > static_cast<SCCOL>(nSize)) + if(nCol - nStartCol > static_cast<SCCOL>(nSize)) { aNotes.insert(nCol - nSize, nRow, pPostIt); maNotes.ReleaseNote(nCol, nRow); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits