summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2022-04-01 00:32:14 +0200
committerMichael Weghorn <m.weghorn@posteo.de>2022-04-01 10:00:11 +0200
commit1f966bb3e38a028c82cee40f6c5a17fe9619b53c (patch)
tree546588d4331d13758f502fa4b93b8c50a3eb69bb
parent755676b63bbe4c404814cb409962867d2782c8ae (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.hxx7
-rw-r--r--sc/source/ui/view/gridwin.cxx6
-rw-r--r--sc/source/ui/view/gridwin4.cxx73
-rw-r--r--sc/source/ui/view/tabview5.cxx11
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();