summaryrefslogtreecommitdiff
path: root/sc/inc
AgeCommit message (Collapse)Author
2023-09-18Schedule conditional formating repaint after filtering is completedcp-22.05.19-1Szymon Kłos
When we have sheet with lots of data with applied conditional formatting and that data is used with autofilter feature - filtering is very slow. That was caused by repaints synchronously called on every row show/hide. ScConditionalFormat::DoRepaint() called by ScFormulaListener callback ... ScDocument::Broadcast ScColumn::BroadcastRows ScTable::SetRowHidden ScTable::DBShowRows This patch schedules repaint in the Idle so we do that after all changes are already applied. Change-Id: If0876ada0f336a41b69560db6a581d6e24d7ac16 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156897 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit c838c24a7e1eee9709789aab99b242f0a0c8c419) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156969
2023-09-11lok: save to xlsx changes column sizeSzymon Kłos
When xlsx spreadsheet was opened in LOK on every save default column width was decreased. This doesn't happen in non-LOK case. Column width in Excel are defined by double value which specifies number of '0' characters which fit into the column. On export we use mnCharWidth from XclRootData to convert Calc twips size to number of characters. In LOK case it was 102 while in non-lok case 101. It was caused by different Reference Device used in ScDocument::GetRefDevice() because in LOK case we are in WYSWIG mode as introduced in ScModelObj::initializeForTiledRendering in commit c25062f: sc tiled rendering: Don't adjust the text width according to printer. Let's use for export purpose the GetVirtualDevice_100th_mm() Change-Id: I6709194d7924e8c7e0aaa75ff3901afbcc1f8c11 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156576 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156750 Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2023-06-24Resolves: tdf#153767 Try harder to import OOXML bool shared formula resultEike Rathke
... by setting the result value or if necessary recalculating even if AutoCalc is turned off for the document. Similar for other implicitly recalculating formula types. Also set a boolean number format if none. Change-Id: I2f75735707180eccf4b2c525738ac0b763901230 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147425 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 05ac57f85eb622b798719db03bbdd07b79e1703a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147444 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> (cherry picked from commit 816b0e97f32df82a1ffc23950d5bf21760a4cd39) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153546 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Aron Budea <aron.budea@collabora.com>
2023-06-06sc: fix crash with document properties dialogTomaž Vajngerl
"ImagePreferredDPI" property was added for impress and writer, but it was not handled in calc, so it document properties dialog crashed (exception because of a non existent property). Change-Id: I9eb3f6aa7cf6d8ab48930b3071b993e073117688 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127942 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit 88d8c9af7140ec25dfbcd9323b870a2da7b6f7e0) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152558 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Aron Budea <aron.budea@collabora.com>
2023-05-12sc: copy cache values when clone color conditional formatHenry Castro
When clone a conditional format list, also copy the cache values that hold the min and max values, otherwise if clone occurs when copying to the clipboard the values have wrong data due to limiting range cells copied. Signed-off-by: Henry Castro <hcastro@collabora.com> Change-Id: Id9085a1488a3bde24842e0d2e062c9b425074157 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151686 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2023-05-12sc: add "updateValues" method to conditional format listHenry Castro
When copying a range cells to a clipboard, if exists a color scale conditional format from different ranges, it should update the min and max values, otherwise the color scale conditional format could not calculate min and max values due to limiting range cell copied. Signed-off-by: Henry Castro <hcastro@collabora.com> Change-Id: I660e18090a60b99ddf2b55ce1f713fd41121290e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151685 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-12-31optimise SUMPRODUCT(IF..) a littleNoel Grandin
Move the AddSub calculation inside ScMatrix so we can use an iterator to walk the matrix and avoid lookup cost for each element. Shaves 50% off the time spent here in my test sheet. Change-Id: I171d7dd4ae86419a563342a4120d14106e8d71db Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144826 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> (cherry picked from commit 96f162d02adee9b4edbb440896be90a64523c119) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144900 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-12-13xlsx: Import table column attribute XML_totalsRowFunctionofftkp
Import table column attribute totalsRowFunction and also export it, which fixes a warning when roundtripped on a different office suite. Change-Id: Icc76fc310aef3bd51bcefebece57f962a56b7cca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142843 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit e54b39c82e88a296af1d2c7ddbf6f20513ffacf5) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143444 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-12-08jsdialog: fix validation error dialog in CalcSzymon Kłos
Change-Id: Ie6551e386cd53f6b4bf4cceb6d7bd6170a2072ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143599 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Rashesh Padia <rashesh.padia@collabora.com> Reviewed-by: Aron Budea <aron.budea@collabora.com>
2022-11-10calc: cache GetCellArea resultsSzymon Kłos
This will avoid repeated lookup in the ScTable::GetCellArea. Which is used for vcl::ITiledRenderable::getDataArea(). Tested in CppunitTest_sc_ucalc Change-Id: Ied58cfe447e1b924af9b401e95e127c784b80355 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142279 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
2022-11-07lok: Introudce getDataArea for CalcSzymon Kłos
It will share information about real size of a data inside spreadsheet so we can easily check where data ends in online side. Change-Id: I376187a33c5c82d409f559d5cc826a4f36d4252e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139472 Reviewed-by: Gökay ŞATIR <gokaysatir@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-10-16Resolves: tdf#150926 Add-In result svl::SharedString needs to be internedEike Rathke
Change-Id: If582e7e1bf818dcf9eaddd5313aa21f5768a578f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139886 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit a56e5434a4ed453b55b8f060ed18404d77a9fb10) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139842 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-25make ScDocument::FetchTable() publicLuboš Luňák
I don't see why it should be private, it's range checked, so there should be no harm. Especially when a number of classes get declared as friends to get access to it anyway. Change-Id: I333d749aa9d09aaf9dcbabf43d67a67d1257a132 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134051 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139471 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-09-20speed up large sheet with lots of conditionsNoel Grandin
shaves 10% off view load time Change-Id: I51078ef81613faa2f8c37530fb7dc77b73192525 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140070 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> (cherry picked from commit 7e829725105897da822fe4b0d09c4a04a2666132) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139987 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-09-10tdf#150749 Find and replace on very large sheetcp-22.05.6-1Noel Grandin
This requires 2 fixes (*) First, we are deleting from the front of a block in the mdds storage, so apply a similar patch to mdds to the previous improvement, (*) Then, we end up with an O(n^2) situation in ScRangesList::Join. But we are only displaying this data, and in fact, we only display the first 1000 ranges anyway, so just clamp the list to 1000 entries, and pass a flag up to the dialog so that we can report that we stopped counting. (*) I had to tweak the testSharedStringPool unit test, since we are not actually clearing the underlying mdds storage, the reference counts do not drop until we have removed all the elements in that block of mdds storage (because then the entire block is destructed, including the not-yet destructed elements) Change-Id: I2c998f81dfb46453a48fce1254fd253d299d12b8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139400 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> (cherry picked from commit 462053a26070db6e7c8ec818c816d64d1d82782b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139424 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-08-28tdf#150170: Revert "flatten TableType in ColumnSpanSet"Xisco Fauli
This reverts commit 99cd1d8834bb708afc81c825ff2b7992b7acb37d. This commit is only reverted in libreoffice-7-3 branch. In master and libreoffice-7-4 the issue is not reproducible after the default Calc number of columns was increased to 16384 Change-Id: I28dcc1c56c803d49ea101dbb0ace7085f7a78820 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138445 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-08-20Resolves: tdf#150336 overlapping slot idsCaolán McNamara
Change-Id: I54fc92d1d7afd61febbbb057868b038864f29ec2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138432 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> (cherry picked from commit d3492e15dce1dc8448c6444a92e3e2f7ec19571c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138566 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Aron Budea <aron.budea@collabora.com>
2022-07-30sc: allow undo of typing in 2 views independent from each otherNoel Grandin
This commit follows the same pattern as commit c72e500ccaf0ce2261c5233b80fba9342778f810 sw: allow undo of typing in 2 views independent from each other with some changes since calc and writer have different undo/redo infrastructure on top of SfxUndoManager. Change-Id: Ib6e7e21caccb94752c01c529b5013553dba8b4f9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137579 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> (cherry picked from commit a2e1754dc96955a8c6da0e25896f645cf2f09f74) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137596 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-07-26Document sparkline related classes, functions and structsTomaž Vajngerl
No functional change. Change-Id: I822c6a9d270dc582aaae2900f833843a0d6f8ddc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134651 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com> (cherry picked from commit 0874486b348f1477d59e161a4d73c5cb56e238f9) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137434 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-06-27Resolves: tdf#147822 ScUnoListenerEntry container must be std::listEike Rathke
... instead of std::vector to not get invalidated iterators when the container is resized. Regression from commit f8defe59ff75df2b516ee407f1dac22b0ac72a19 CommitDate: Wed Sep 6 22:45:10 2017 +0200 Replace some lists by vectors in unoobj (sc) which was bad for this case. Change-Id: I8d3a001242865cadc82b359a3198906d26373a41 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136007 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 7a0a0e23b7e81c1ee0601824a4ee990a2178f98b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136023 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-05-31reduce Calc's INITIALCOLCOUNT to 1Luboš Luňák
Columns should be dynamically allocated on demand, so there should be theoretically no good reason to allocate 64 initially. In practice doing so hides all places that do not allocate columns as needed. Change-Id: I8b46ecc97852ed23369e720f50f3266c48440435 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133311 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133800 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-05-31first arg of ApplyFrame is never nullLuboš Luňák
e4008dc0c3b43c9eacdd88511075be2b88 did this for ApplyBlockFrame() but didn't chagne ApplyFrame() which is only called from there. Change-Id: I9f1dce3dc7fda23b42e90432c13dfca0aa7f267e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135072 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-05-25forcepoint#97 avoid Invalid read of size 2Caolán McNamara
==143282== Invalid read of size 2 ==143282== at 0x190CDBFC: SfxItemSet::Count() const (itemset.hxx:96) ==143282== by 0x1910F33E: SfxItemSet::Get(unsigned short, bool) const (itemset.cxx:748) ==143282== by 0x1F14D76C: ScPatternAttr::GetItem(unsigned short, SfxItemSet const&, SfxItemSet const*) (patattr.cxx:1347) ==143282== by 0x1F14D7DA: ScPatternAttr::GetItem(unsigned short, SfxItemSet const*) const (patattr.cxx:1352) ==143282== by 0x202A3E44: ScLineBreakCell const& ScPatternAttr::GetItem<ScLineBreakCell>(TypedWhichId<ScLineBreakCell>, SfxItemSet const*) const (patattr.hxx:83) ==143282== by 0x2028E8BC: ScOutputData::LayoutStrings(bool, bool, ScAddress const&) (output2.cxx:1677) ==143282== by 0x2028D4A8: ScOutputData::DrawStrings(bool) (output2.cxx:1473) ==143282== by 0x202D9879: ScPrintFunc::PrintArea(short, int, short, int, long, long, bool, bool, bool, bool) (printfun.cxx:1675) ==143282== by 0x202DD459: ScPrintFunc::PrintPage(long, short, int, short, int, bool, ScPreviewLocationData*) (printfun.cxx:2301) ==143282== by 0x202DF491: ScPrintFunc::DoPrint(MultiSelection const&, long, long, bool, ScPreviewLocationData*) (printfun.cxx:2713) ==143282== by 0x20031888: ScModelObj::render(int, com::sun::star::uno::Any const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (docuno.cxx:2259) ==143282== by 0x30C1A485: PDFExport::ExportSelection(vcl::PDFWriter&, com::sun::star::uno::Reference<com::sun::star::view::XRenderable> const&, com::sun::star::uno::Any const&, StringRangeEnumerator const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>&, int) (pdfexport.cxx:219) ==143282== by 0x30C1F879: PDFExport::Export(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (pdfexport.cxx:987) ==143282== by 0x30C33BA2: PDFFilter::implExport(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (pdffilter.cxx:174) ==143282== by 0x30C33F2A: PDFFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (pdffilter.cxx:237) ==143282== by 0x21AC6986: SfxObjectShell::ExportTo(SfxMedium&) (objstor.cxx:2488) ==143282== by 0x21AC2363: SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) (objstor.cxx:1553) ==143282== by 0x21ACE816: SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString const&, rtl::OUString const&, SfxItemSet const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (objstor.cxx:2966) ==143282== by 0x21ACCA87: SfxObjectShell::CommonSaveAs_Impl(INetURLObject const&, rtl::OUString const&, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (objstor.cxx:2756) ==143282== by 0x21AA8CDB: SfxObjectShell::APISaveAs_Impl(rtl::OUString const&, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (objserv.cxx:317) ==143282== by 0x21B2B4AD: SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, bool) (sfxbasemodel.cxx:3132) ==143282== by 0x21B2CB12: SfxBaseModel::storeToURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (sfxbasemodel.cxx:1768) ==143282== by 0x1C507AFE: ScPDFExportTest::exportToPDF(com::sun::star::uno::Reference<com::sun::star::frame::XModel> const&, ScRange const&) (scpdfexport.cxx:192) ==143282== by 0x1C511A33: ScPDFExportTest::testForcepoint97() (scpdfexport.cxx:571) ==143282== by 0x1C52778D: void std::__invoke_impl<void, void (ScPDFExportTest::*&)(), ScPDFExportTest*&>(std::__invoke_memfun_deref, void (ScPDFExportTest::*&)(), ScPDFExportTest*&) (invoke.h:74) ==143282== by 0x1C5276C1: std::__invoke_result<void (ScPDFExportTest::*&)(), ScPDFExportTest*&>::type std::__invoke<void (ScPDFExportTest::*&)(), ScPDFExportTest*&>(void (ScPDFExportTest::*&)(), ScPDFExportTest*&) (invoke.h:96) ==143282== by 0x1C527659: void std::_Bind<void (ScPDFExportTest::*(ScPDFExportTest*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (functional:420) ==143282== by 0x1C5275E2: void std::_Bind<void (ScPDFExportTest::*(ScPDFExportTest*))()>::operator()<, void>() (functional:503) ==143282== by 0x1C52758C: void std::__invoke_impl<void, std::_Bind<void (ScPDFExportTest::*(ScPDFExportTest*))()>&>(std::__invoke_other, std::_Bind<void (ScPDFExportTest::*(ScPDFExportTest*))()>&) (invoke.h:61) ==143282== by 0x1C52753C: std::enable_if<is_invocable_r_v<void, std::_Bind<void (ScPDFExportTest::*(ScPDFExportTest*))()>&>, void>::type std::__invoke_r<void, std::_Bind<void (ScPDFExportTest::*(ScPDFExportTest*))()>&>(std::_Bind<void (ScPDFExportTest::*(ScPDFExportTest*))()>&) (invoke.h:111) ==143282== by 0x1C52731C: std::_Function_handler<void (), std::_Bind<void (ScPDFExportTest::*(ScPDFExportTest*))()> >::_M_invoke(std::_Any_data const&) (std_function.h:290) ==143282== by 0x1C527A34: std::function<void ()>::operator()() const (std_function.h:590) ==143282== by 0x1C527078: CppUnit::TestCaller<ScPDFExportTest>::runTest() (TestCaller.h:175) ==143282== by 0x49326F2: CppUnit::TestCaseMethodFunctor::operator()() const (TestCase.cpp:32) ==143282== by 0x15937E3D: (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) (vclbootstrapprotector.cxx:46) ==143282== by 0x4929ED1: CppUnit::ProtectorChain::ProtectFunctor::operator()() const (ProtectorChain.cpp:20) ==143282== by 0x4B05D6D: (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) (unobootstrapprotector.cxx:78) ==143282== by 0x4929ED1: CppUnit::ProtectorChain::ProtectFunctor::operator()() const (ProtectorChain.cpp:20) ==143282== by 0x4AF2F2A: (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) (unoexceptionprotector.cxx:62) ==143282== by 0x4929ED1: CppUnit::ProtectorChain::ProtectFunctor::operator()() const (ProtectorChain.cpp:20) ==143282== by 0x491261E: CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) (DefaultProtector.cpp:15) ==143282== by 0x4929ED1: CppUnit::ProtectorChain::ProtectFunctor::operator()() const (ProtectorChain.cpp:20) ==143282== by 0x4928690: CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) (ProtectorChain.cpp:86) ==143282== by 0x4946ACD: CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (TestResult.cpp:182) ==143282== by 0x4932103: CppUnit::TestCase::run(CppUnit::TestResult*) (TestCase.cpp:91) ==143282== by 0x4932BCF: CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) (TestComposite.cpp:64) ==143282== by 0x4932A5F: CppUnit::TestComposite::run(CppUnit::TestResult*) (TestComposite.cpp:23) ==143282== by 0x4932BCF: CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) (TestComposite.cpp:64) ==143282== by 0x4932A5F: CppUnit::TestComposite::run(CppUnit::TestResult*) (TestComposite.cpp:23) ==143282== by 0x494FDBF: CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) (TestRunner.cpp:47) ==143282== Address 0x1d7624b0 is 64 bytes inside a block of size 120 free'd ==143282== at 0x4847669: operator delete(void*) (vg_replace_malloc.c:923) ==143282== by 0x1F150EA1: ScPatternAttr::~ScPatternAttr() (patattr.hxx:53) ==143282== by 0x190D29B2: SfxItemPool::Remove(SfxPoolItem const&) (itempool.cxx:802) ==143282== by 0x1EA27F8E: ScAttrArray::SetPatternAreaImpl(int, int, ScPatternAttr const*, bool, ScEditDataArray*, bool) (attarray.cxx:574) ==143282== by 0x1EBF43D5: ScAttrArray::SetPattern(int, ScPatternAttr const*, bool) (attarray.hxx:148) ==143282== by 0x1EBD9068: ScColumn::ApplyAttr(int, SfxPoolItem const&) (column.cxx:634) ==143282== by 0x1EC6C1EB: ScColumn::SetNumberFormat(int, unsigned int) (column2.cxx:3094) ==143282== by 0x1F1CB737: ScTable::SetNumberFormat(short, int, unsigned int) (table2.cxx:2238) ==143282== by 0x1EE3F135: ScDocument::SetNumberFormat(ScAddress const&, unsigned int) (document.cxx:3717) ==143282== by 0x1F09CCA5: ScFormulaCell::InterpretTail(ScInterpreterContext&, ScFormulaCell::ScInterpretTailParameter) (formulacell.cxx:2155) ==143282== by 0x1F099D9F: ScFormulaCell::Interpret(int, int) (formulacell.cxx:1615) ==143282== by 0x1ECC048D: ScFormulaCell::MaybeInterpret() (formulacell.hxx:465) ==143282== by 0x1F09F5C8: ScFormulaCell::IsValue() (formulacell.cxx:2760) ==143282== by 0x1EA82355: (anonymous namespace)::hasNumericImpl(CellType, ScFormulaCell*) (cellvalue.cxx:155) ==143282== by 0x1EA822FA: ScRefCellValue::hasNumeric() const (cellvalue.cxx:624) ==143282== by 0x2028E876: ScOutputData::LayoutStrings(bool, bool, ScAddress const&) (output2.cxx:1676) ==143282== by 0x2028D4A8: ScOutputData::DrawStrings(bool) (output2.cxx:1473) ==143282== by 0x202D9879: ScPrintFunc::PrintArea(short, int, short, int, long, long, bool, bool, bool, bool) (printfun.cxx:1675) ==143282== by 0x202DD459: ScPrintFunc::PrintPage(long, short, int, short, int, bool, ScPreviewLocationData*) (printfun.cxx:2301) ==143282== by 0x202DF491: ScPrintFunc::DoPrint(MultiSelection const&, long, long, bool, ScPreviewLocationData*) (printfun.cxx:2713) ==143282== by 0x20031888: ScModelObj::render(int, com::sun::star::uno::Any const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (docuno.cxx:2259) ==143282== by 0x30C1A485: PDFExport::ExportSelection(vcl::PDFWriter&, com::sun::star::uno::Reference<com::sun::star::view::XRenderable> const&, com::sun::star::uno::Any const&, StringRangeEnumerator const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>&, int) (pdfexport.cxx:219) Change-Id: Idf19b79f5aef7e07666249f5f9ec510003a3f886 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134362 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com>
2022-05-20bump up Calc MAXTILEDROW to MAXROWLuboš Luňák
I.e. no restriction on number of rows for LOK. Change-Id: I248a70bafe18c68e59f604e33b9456474ab785c6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134282 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-05-19change default Calc number of columns to 16384 (tdf#50916)Luboš Luňák
All tests pass now, and I've also handled all significant bugreports from tdf#133764. This commit is mainly meant to test this more in practice and collect feedback. Depending on how this turns out, there may be a backwards compatibility option or something similar, but so far I see no significant need for it. Change-Id: I1a946f4e0b51be5acf4e25dc773e7694c2b17b48 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131180 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131959 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-05-19don't allocate unnecessary columns when inserting a rowLuboš Luňák
Change-Id: I616ef20dc1295ce17c4877ff367815bb6a90b7a1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134551 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-05-19ScTable::TestInsertRow() does not need to allocate all columnsLuboš Luňák
Change-Id: Ic213997edf6838282a38e444a638713a72397fb4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134549 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-05-19make CreateColumnIfNotExists() non-constLuboš Luňák
Generally const functions should not modify the data, so this generally should not be needed. Those functions that need to allocate a column because they can't/don't handle default values for non-existent columns well should go with const_cast, being an exception to the rule. Change-Id: I62706da5b447019542d6775f14064fa15b71f3c1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134488 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134548 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-05-18lok-calc: new callback for print rangesDennis Francis
With this callback the lok clients can read and draw the print ranges on each sheet of the Calc document. Conflicts: include/LibreOfficeKit/LibreOfficeKitEnums.h libreofficekit/source/gtk/lokdocview.cxx Change-Id: Ie19351d4420e0f3d4191f6a354ce99ab830aede2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134375 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Pranam Lashkari <lpranam@collabora.com> (cherry picked from commit 172bc7a8f4eeab907adac077407186fbbd046a77) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134527 Reviewed-by: Gökay ŞATIR <gokaysatir@collabora.com>
2022-05-18try to limit cell interpreting to only visible cells when drawingLuboš Luňák
If there's a document with a huge formula group, InterpretDirtyCells() on load will only interpret the range needed for drawing. But then scrolling just a bit could result in e.g. IsValue() call on a cell, and that could result in unrestricted Interpret() on the whole huge formula group, which could be slow. So explicitly interpret just the drawn cells in the hope that it'll avoid any further Interpret() calls. Change-Id: I01c9f95cf8a1cf240b798feef27d21010957030c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133306 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit 64cb1d10fffccebbc825c858083f13eb717b0553)
2022-05-03fix an off-by-one error in GetEmptyLinesInBlock()Luboš Luňák
The function has been there since the initial commit and is not documented, but I think it counts the shortest amount of empty cells in the given area starting from the direction given. And AFAICT the off-by-one error was there since the initial commit, when it returned one less if the entire area was empty and the direction was vertical (horizontal was fine). And ScHTMLExport::FillGraphList() even was adjusted for this until my recent commit changing that code). But then ad2bc869bfe2d34bde added a shortcut for unallocated columns that didn't have the error. And the error even got corrected during the rewrite in c008dc483f8c6840803983e7e351cec6fdd32070, but then 01de94471c20a8b9c36d6080638d70e57eac55bf reverted that. Anyway, so fix this, I think all the relevant code should(?) now work properly. Change-Id: I194691f7276a1cea75945de05cb0dda2cdca859a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133319 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-05-03fix checking whether a block of cells is emptyLuboš Luňák
The GetEmptyLinesInBlock() call has unclear semantics and it appears that it has an off-by-one error. Use a simple clear function for the check. Change-Id: I45d9b73428aedababc1ad93c202daa1de945b5bf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133303 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-05-03rework GetColumnsRange() and ScColumnsRangeLuboš Luňák
The problem with GetColumnsRange() was that it was clamping the range to the number of allocated columns, but that's not always wanted, e.g. ScDocument::InsertMatrixFormula() needs to iterate over the whole range and allocate columns if necessary instead of ignoring them. From an API point of view it's also not very obvious that something called GetColumnsRange() actually does something more than just returning the given range. Handle this by making GetColumnsRange() return the actual given range, and add GetWriteableColumnsRange() and GetAllocatedColumnsRange() for the specific cases. This also required changing ScColumnsRange to work simply on SCCOL value instead of using std::vector iterator (since the vector may not have all the elements in the range). Change-Id: I9b645459461efe6b282e8ac5d7a29549830f46c1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133295 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-04-28lok: Introduce uno commands for formulabar actionsSzymon Kłos
thanks to that we can reach them using LOK as formulabar is not fully welded yet Change-Id: Icc1963ab11c1e6e3c407222d76b2a87fdaffa652 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133496 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Mert Tumer <mert.tumer@collabora.com>
2022-04-19sc: introduce SparklineShell and Sparkline contextTomaž Vajngerl
Having a separate sparkline context is very useful, so we can add a custom UI when the user has the cursor over a sparkline. This will allow a "Sparkline" tab for NotebookBar and its own deck in Sidebar, activated only when the sparkline is present. Also the pop-up menu can be customized specifically for the sparkline, but this may be less useful. For the sparkline context we need a custom shell - SparklineShell where now all the UNO commands can be implemented (not done in this commit). Change-Id: Idca2ad946af3afdd1b494744b80c9c093eec602c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133022 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit e1f3f2e00c37173e5f6f1cbb5235ab95b100bde7) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133062 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-04-14lok: avoid validation-dialog yield when savingDennis Francis
Disable error dialog box when about to save in lok mode as this ultimately invokes SvpSalInstance::DoYield() when we want to save immediately without committing any erroneous input in possibly a cell with validation rules. After save is complete the user can continue editing. Conflicts: sc/source/ui/app/inputhdl.cxx Change-Id: Iffa0766ad594db75f57158986c4e1d2646f71da4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132410 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Michael Meeks <michael.meeks@collabora.com> (cherry picked from commit e0175ee821eaff56c4b8e0a1b7afa1cabe0ab593) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132656 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2022-04-14avoid repeated calls to ScMarkData::GetMarkedRanges() (tdf#148147)Luboš Luňák
ScTable::HasSelectionMatrixFragment() gets called several times when opening 'Sheet' in the menubar, and the functions it calls end up a quadratic cost for the number of columns repeatedly calling ScMarkData::GetMarkedRanges() for the same object. Fix the performance problem by getting the value once and reusing it. Change-Id: I8b05475832c3560318c43429c3b9323035a3691f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132267 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-04-14fix ScTable::GetLastChangedCol() for unallocated columnsLuboš Luňák
Column flags and widths are stored separately from ScColumn data, and so don't depend on allocated columns count. Also rename the functions from the misleading generic name to what they actually do. Change-Id: If85ae80efda1d8b382fa3b559aa65be0292e25ba
2022-04-14forcepoint#81 fix array sizeLuboš Luňák
A mistake from 694148a9898b47d749588f9a32173a9933262e29, the array is meant to be from column 0, so as if 'nStartCol == 0'. Change-Id: I7f2ecea6c7378d0d5530cb38314807a8f7c896c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131972 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-04-14load ods/xlsx with full row attributes without allocating all columnsLuboš Luňák
If there's e.g. an entire row bold, it's enough to set default attribute for unallocated columns. This also reverts the workaround from commit 297ab561c6754, as it's no longer necessary. Change-Id: I0b208709aeaff1c0d59da2410926876715cfe642 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131320 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-04-14don't ignore GetDefPattern() in ScHorizontalAttrIteratorLuboš Luňák
As said in the previous commit, the default pattern is the default style that can be edited by the user, so it's principially incorrect to simply ignore it. If needed for performance, then it needs to be done explicitly. This change currently should not affect anything, as ScHorizontalAttrIterator is used only in tests. Change-Id: I31f153d427cdfd6e98a4d7a3584cfa89676d4c33
2022-04-14don't artificially clamp attribute iterators rangeLuboš Luňák
Even ScDocument::GetDefPattern() can be modified by the user (it's the default style that can be edited), so it's conceptually incorrect to ignore it while iterating, and clamping to allocated columns is also no longer needed. If this makes some code slow, then that needs explicit handling in that code or some other way of speeding things up. Change-Id: I4a7c7fef0a8625b559bbce4580df19a5e9ed92a7
2022-04-14fix attr iterators to walk even unallocated columns if neededLuboš Luňák
Things like applying bold to an entire row no longer allocates all rows after my recent changes, but the attribute change is done in ScTable to the default attribute of unallocated columns. That means that clamping column positions to the end of allocated columns is no longer valid when handling attributes. Add functions that clamp depending on whether unallocated columns have a non-default attribute set. Change-Id: I879d0a034c0b336064361d0f8cb12e5a8da22b9c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131265 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-04-14add ColumnData() for simple handling of unallocated column dataLuboš Luňák
Move the decision whether to return a column or the default data for unallocated columns into a simple function. Change-Id: I369b8c815de96b61181f2483c6afac44a5c3bc2e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131264 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-04-13sc: add UI, undo/redo and test to change sparkline data rangeTomaž Vajngerl
This adds a "edit sparkline" action to the context menu and a dialog to change the data range of a sparkline. To change a sparkline using undo/redo, a new class UndoEditSparkline was added, which allows to change the attributes of a sparkline and revert back the old attributes when undoing. This is then used in the Dialog when setting the changed data range of a sparkline. To make sure that undo/redo works correctly, a simple unit tests was added. Change-Id: I08af1813fa288278bc0d33b0540660b325b17235 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132748 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit a08f9ed2341bc60faae6b86538661fea40417ace) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132924 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-04-13sc: take sparklines into account with auto fillTomaž Vajngerl
Change-Id: I6bdb5f4291aece7ec02d8de0731b8f983b4f2bb2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132592 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132921 Tested-by: Tomaž Vajngerl <quikee@gmail.com>
2022-04-13sc: improve keeping track of sparklines in SparklineListTomaž Vajngerl
Issues can happen when saving a document with sparklines where a sparkline is deleted and then undo-ed. The reason for this is because the SparlineList wasn't correctly updated when deleting, copying or adding sparklines. This change adds hooks when new sparklines are created or when sparklines are deleted to report this into SparlineList. SparklineList garbage-collects itself but this is not enough when we rely that the non-deleted weak pointers to the sparkline groups contain the correct non-deleted weak pointers to the correct sparklines. Change-Id: I976cbe7e6168813d3dd5089c036cc7fe4e357fb2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132554 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132883 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-04-12sc: put SparklineList implementation into SparklineList.cxxTomaž Vajngerl
Change-Id: I309087a27ea0bc297c9bea9b2b8945579e055f4d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132552 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132881 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2022-04-12sc: add Group and Ungroup to context menu for sparklinesTomaž Vajngerl
This change allows to group parklines together into a sparkline group, or ungroup them, so they use their own sparkline group. This also adds the undo and redo for this actions. Change-Id: I61b604203afaf2fe8c2d47b80082739ded15d6fb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132545 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132880
2022-04-12sc: add "Delete Sparkline Group" context menu action + Undo/RedoTomaž Vajngerl
Change-Id: I34e11a4881c564351c3e08d157fb42ac4bb8ef3c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132544 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132879