diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2022-04-01 00:32:14 +0200 |
---|---|---|
committer | Michael Weghorn <m.weghorn@posteo.de> | 2022-04-01 10:00:11 +0200 |
commit | 1f966bb3e38a028c82cee40f6c5a17fe9619b53c (patch) | |
tree | 546588d4331d13758f502fa4b93b8c50a3eb69bb | |
parent | 755676b63bbe4c404814cb409962867d2782c8ae (diff) |
trac#34262 Revert "Do not count pages for initial page breaks, tdf#124983 follow-up"
Analyzing trac#36262 showed that the issue with WollMux mail merge
using wrong data record count when a large amount of
records is involved starts with this commit.
(The issue was not reliably reproducible on all systems, though;
I can e.g. only reproduce issue about wrong data
record count on my LHM Win client, not on Linux or my non-LHM Win
client.)
Other tdf#124983-related commits are missing on this branch,
which might be related.
There is the initial fix
commit caeb7b141280a65e60525f11a7e6514b76e12e11
Author: Ilhan Yesil <ilhanyesil@gmx.de>
Date: Wed Jul 10 15:41:27 2019 +0200
tdf#124983 In calc make printable page borders also initially visible
with follow-up
commit 8728eddf938c9c843ab72929cfd3947735ca8da2
Author: Miklos Vajna <vmiklos@collabora.com>
Date: Mon Jan 6 10:31:50 2020 +0100
tdf#129552 sc: avoid infinite invalidation loop when the print range is empty
and the revert of the initial fix in
commit b3e302b98dd7b992b7aa5a7f6756980d3edafc83
Author: Xisco Fauli <xiscofauli@libreoffice.org>
Date: Thu Feb 13 17:06:58 2020 +0100
tdf#130640: Revert "tdf#124983 In calc make printable page...
and the commit reverted now in this commit
commit 129c680f02564c8bee93930dec9f2ad80980cc1c
Author: Eike Rathke <erack@redhat.com>
Date: Wed Aug 18 23:42:45 2021 +0200
Do not count pages for initial page breaks, tdf#124983 follow-up
without the second version of the fix being present at all
(master commit
commit 86e300df241312f6152da1cfa3cb2b8c668d1df5
Author: Ilhan Yesil <ilhanyesil@gmx.de>
Date: Fri Mar 6 13:40:59 2020 +0100
tdf#124983 In calc make printable page borders initially visible
) after the revert, so maybe having the follow-up without the
underlying fix is not a good idea.
And there would be another follow-up commit on master
that we don't have either:
commit 3d7007ef8784e92bb56a91c40e7bdff812251677
Author: Eike Rathke <erack@redhat.com>
Date: Tue Jun 29 14:31:19 2021 +0200
maShowPageBreaksTimer.Stop() in ScGridWindow::dispose(), tdf#124983 follow-up
Revert this for now to unbreak WollMux mail merge.
This reverts commit 129c680f02564c8bee93930dec9f2ad80980cc1c.
Change-Id: I74c93ab7cd27eba347b78a198e3d8fbe5fdeb0e2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132370
Tested-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
-rw-r--r-- | sc/source/ui/inc/gridwin.hxx | 7 | ||||
-rw-r--r-- | sc/source/ui/view/gridwin.cxx | 6 | ||||
-rw-r--r-- | sc/source/ui/view/gridwin4.cxx | 73 | ||||
-rw-r--r-- | sc/source/ui/view/tabview5.cxx | 11 |
4 files changed, 0 insertions, 97 deletions
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx index e9363a1f96d2..5ebb26241d10 100644 --- a/sc/source/ui/inc/gridwin.hxx +++ b/sc/source/ui/inc/gridwin.hxx @@ -190,8 +190,6 @@ class SAL_DLLPUBLIC_RTTI ScGridWindow : public vcl::Window, public DropTargetHel RfCorner aRFSelectedCorned; - Timer maShowPageBreaksTimer; - bool bEEMouse:1; // Edit Engine has mouse bool bDPMouse:1; // DataPilot D&D (new Pivot table) bool bRFMouse:1; // RangeFinder drag @@ -202,7 +200,6 @@ class SAL_DLLPUBLIC_RTTI ScGridWindow : public vcl::Window, public DropTargetHel bool bNeedsRepaint:1; bool bAutoMarkVisible:1; bool bListValButton:1; - bool bInitialPageBreaks:1; DECL_LINK( PopupModeEndHdl, FloatingWindow*, void ); DECL_LINK( PopupSpellingHdl, SpellCallbackInfo&, void ); @@ -291,8 +288,6 @@ class SAL_DLLPUBLIC_RTTI ScGridWindow : public vcl::Window, public DropTargetHel void GetSelectionRects( ::std::vector< tools::Rectangle >& rPixelRects ); - void SetupInitialPageBreaks(const ScDocument& rDoc, SCTAB nTab); - DECL_LINK(InitiatePageBreaksTimer, Timer*, void); protected: virtual void PrePaint(vcl::RenderContext& rRenderContext) override; @@ -467,8 +462,6 @@ public: void updateLOKValListButton(bool bVisible, const ScAddress& rPos) const; - void initiatePageBreaks(); - protected: void ImpCreateOverlayObjects(); void ImpDestroyOverlayObjects(); diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index aa540b5d5134..0ed015bb31da 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -482,10 +482,6 @@ ScGridWindow::ScGridWindow( vcl::Window* pParent, ScViewData* pData, ScSplitPos SetDigitLanguage( SC_MOD()->GetOptDigitLanguage() ); EnableRTL( false ); - - bInitialPageBreaks = true; - maShowPageBreaksTimer.SetInvokeHandler(LINK(this, ScGridWindow, InitiatePageBreaksTimer)); - maShowPageBreaksTimer.SetTimeout(1); } ScGridWindow::~ScGridWindow() @@ -495,8 +491,6 @@ ScGridWindow::~ScGridWindow() void ScGridWindow::dispose() { - maShowPageBreaksTimer.Stop(); - ImpDestroyOverlayObjects(); mpFilterBox.disposeAndClear(); diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index aa7ad1312acc..9426c8842bf0 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -1055,28 +1055,6 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI if (mpNoteMarker) mpNoteMarker->Draw(); // Above the cursor, in drawing map mode - - if (bPage && bInitialPageBreaks) - SetupInitialPageBreaks(rDoc, nTab); -} - - -void ScGridWindow::SetupInitialPageBreaks(const ScDocument& rDoc, SCTAB nTab) -{ - // tdf#124983, if option LibreOfficeDev Calc/View/Visual Aids/Page breaks - // is enabled, breaks should be visible. If the document is opened the first - // time, the breaks are not calculated yet, so for this initialization - // a timer will be triggered here. - std::set<SCCOL> aColBreaks; - std::set<SCROW> aRowBreaks; - rDoc.GetAllColBreaks(aColBreaks, nTab, true, false); - rDoc.GetAllRowBreaks(aRowBreaks, nTab, true, false); - if (aColBreaks.size() == 0 || aRowBreaks.size() == 0) - { - maShowPageBreaksTimer.SetPriority(TaskPriority::DEFAULT_IDLE); - maShowPageBreaksTimer.Start(); - } - bInitialPageBreaks = false; } namespace @@ -2027,55 +2005,4 @@ void ScGridWindow::DataChanged( const DataChangedEvent& rDCEvt ) } } -void ScGridWindow::initiatePageBreaks() -{ - bInitialPageBreaks = true; -} - -IMPL_LINK(ScGridWindow, InitiatePageBreaksTimer, Timer*, pTimer, void) -{ - if (pTimer == &maShowPageBreaksTimer) - { - const ScViewOptions& rOpts = pViewData->GetOptions(); - const bool bPage = rOpts.GetOption(VOPT_PAGEBREAKS); - // tdf#124983, if option LibreOfficeDev Calc/View/Visual Aids/Page - // breaks is enabled, breaks should be visible. If the document is - // opened the first time or a tab is activated the first time, the - // breaks are not calculated yet, so this initialization is done here. - if (bPage) - { - const SCTAB nCurrentTab = pViewData->GetTabNo(); - ScDocument* pDoc = pViewData->GetDocument(); - const Size aPageSize = pDoc->GetPageSize(nCurrentTab); - // Do not attempt to calculate a page size here if it is empty if - // that involves counting pages. - // An earlier implementation did - // ScPrintFunc(pDocSh, pDocSh->GetPrinter(), nCurrentTab); - // rDoc.SetPageSize(nCurrentTab, rDoc.GetPageSize(nCurrentTab)); - // which resulted in tremendous waiting times after having loaded - // larger documents i.e. imported from CSV, in which UI is entirely - // blocked. All time is spent under ScPrintFunc::CountPages() in - // ScTable::ExtendPrintArea() in the loop that calls - // MaybeAddExtraColumn() to do stuff for each text string content - // cell (each row in each column). Maybe that can be optimized, or - // obtaining page size without that overhead would be possible, but - // as is calling that from here is a no-no so this is a quick - // disable things. - if (aPageSize.Width()>0&&aPageSize.Height()) - { - ScDocShell* pDocSh = pViewData->GetDocShell(); - const bool bModified = pDocSh->IsModified(); - // Even setting the same size sets page size valid, so - // UpdatePageBreaks() actually does something. - pDoc->SetPageSize( nCurrentTab, aPageSize); - pDoc->UpdatePageBreaks(nCurrentTab); - pDocSh->PostPaint(0, 0, nCurrentTab, pDoc->MaxCol(), pDoc->MaxRow(), nCurrentTab, PaintPartFlags::Grid); - pDocSh->SetModified(bModified); - } - } - - Invalidate(); - } -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/view/tabview5.cxx b/sc/source/ui/view/tabview5.cxx index 635b40e97ab5..b075b748f0e3 100644 --- a/sc/source/ui/view/tabview5.cxx +++ b/sc/source/ui/view/tabview5.cxx @@ -315,17 +315,6 @@ void ScTabView::TabChanged( bool bSameTabButMoved ) } } - for (int i = 0; i < 4; i++) - { - if (pGridWin[i]) - { - pGridWin[i]->initiatePageBreaks(); - // Trigger calculating page breaks only once. - break; - } - } - - if (comphelper::LibreOfficeKit::isActive()) { ScDocShell* pDocSh = GetViewData().GetDocShell(); |