[Libreoffice-commits] core.git: sc/source
Eike Rathke (via logerrit)
logerrit at kemper.freedesktop.org
Sun Mar 1 15:53:13 UTC 2020
sc/source/core/data/document10.cxx | 9 +++++++++
sc/source/ui/docshell/docsh.cxx | 7 +++++++
sc/source/ui/inc/docsh.hxx | 4 ++++
3 files changed, 20 insertions(+)
New commits:
commit a209ec58ff5893823ed0b7a11e8463c38df86739
Author: Eike Rathke <erack at redhat.com>
AuthorDate: Sun Mar 1 02:03:56 2020 +0100
Commit: Eike Rathke <erack at redhat.com>
CommitDate: Sun Mar 1 16:52:34 2020 +0100
Related: tdf#130371 Broadcast ScAreasChanged for created names
... to notify the Name Box to refresh its name list.
Change-Id: I20fb461d59c0dd98698837d91e2a7ef9a8c5a4ef
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89768
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Jenkins
diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx
index 1afe7a378ac1..3b67bb6c3af1 100644
--- a/sc/source/core/data/document10.cxx
+++ b/sc/source/core/data/document10.cxx
@@ -26,6 +26,7 @@
#include <editeng/colritem.hxx>
#include <scitems.hxx>
#include <datamapper.hxx>
+#include <docsh.hxx>
// Add totally brand-new methods to this source file.
@@ -884,7 +885,15 @@ bool ScDocument::CopyAdjustRangeName( SCTAB& rSheet, sal_uInt16& rIndex, ScRange
rpRangeData = copyRangeName( pOldRangeData, rNewDoc, this, rNewPos, rOldPos, bGlobalNamesToLocal,
nOldSheet, nNewSheet, bSameDoc);
}
+
+ if (rpRangeData && !rNewDoc.IsClipOrUndo())
+ {
+ ScDocShell* pDocSh = static_cast<ScDocShell*>(rNewDoc.GetDocumentShell());
+ if (pDocSh)
+ pDocSh->SetAreasChangedNeedBroadcast();
+ }
}
+
rSheet = nNewSheet;
rIndex = rpRangeData ? rpRangeData->GetIndex() : 0; // 0 means not inserted
return true;
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index aee27cb1b13f..fe810fd164c4 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -2743,6 +2743,7 @@ ScDocShell::ScDocShell( const SfxModelFlags i_nSfxCreationFlags ) :
m_bDocumentModifiedPending( false ),
m_bUpdateEnabled ( true ),
m_bUcalcTest ( false ),
+ m_bAreasChangedNeedBroadcast( false ),
m_nDocumentLock ( 0 ),
m_nCanUpdate (css::document::UpdateDocMode::ACCORDING_TO_CONFIG)
{
@@ -2863,6 +2864,12 @@ void ScDocShell::SetDocumentModified()
m_aDocument.SetDetectiveDirty(false); // always reset, also if not refreshed
}
+ if (m_bAreasChangedNeedBroadcast)
+ {
+ m_bAreasChangedNeedBroadcast = false;
+ SfxGetpApp()->Broadcast( SfxHint( SfxHintId::ScAreasChanged));
+ }
+
// notify UNO objects after BCA_BRDCST_ALWAYS etc.
m_aDocument.BroadcastUno( SfxHint( SfxHintId::DataChanged ) );
}
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
index 30056ed5bb75..b06c121e25e5 100644
--- a/sc/source/ui/inc/docsh.hxx
+++ b/sc/source/ui/inc/docsh.hxx
@@ -99,6 +99,7 @@ class SC_DLLPUBLIC ScDocShell final: public SfxObjectShell, public SfxListener
bool m_bDocumentModifiedPending:1;
bool m_bUpdateEnabled:1;
bool m_bUcalcTest:1; // avoid loading the styles in the ucalc test
+ bool m_bAreasChangedNeedBroadcast:1;
sal_uInt16 m_nDocumentLock;
sal_Int16 m_nCanUpdate; // stores the UpdateDocMode from loading a document till update links
@@ -385,6 +386,9 @@ public:
void SetUpdateEnabled(bool bValue)
{ m_bUpdateEnabled = bValue; }
+ void SetAreasChangedNeedBroadcast()
+ { m_bAreasChangedNeedBroadcast = true; }
+
OutputDevice* GetRefDevice(); // WYSIWYG: Printer, otherwise VirtualDevice...
static ScViewData* GetViewData();
More information about the Libreoffice-commits
mailing list