summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2018-01-04 00:06:58 -0500
committerAshod Nakashian <ashnakash@gmail.com>2018-01-06 22:10:20 +0100
commit0e0eff2309583ea25b81006b5bc6879b86081a15 (patch)
treefe1260dcaae4f6326683958238a66ec3f9dd5e15 /sc
parent040b1fc33384f153a6cd209b58cdf1b2f71cfbd6 (diff)
lok: send modified status when applying cell-formula before saving
Without this, the modified status resulting from applying the cell-formula immediately before saving is lost, since it is clobbered after the save. Change-Id: Ie402812d0fc0528020161fffe57e8220c5abfeb5 Reviewed-on: https://gerrit.libreoffice.org/47366 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/inc/inputhdl.hxx1
-rw-r--r--sc/source/ui/view/tabvwsha.cxx18
2 files changed, 19 insertions, 0 deletions
diff --git a/sc/source/ui/inc/inputhdl.hxx b/sc/source/ui/inc/inputhdl.hxx
index 3bc760446b02..96450a842bc9 100644
--- a/sc/source/ui/inc/inputhdl.hxx
+++ b/sc/source/ui/inc/inputhdl.hxx
@@ -233,6 +233,7 @@ public:
bool TakesReturn() const { return ( nTipVisible != nullptr ); }
+ bool GetModified() const { return bModified; }
void SetModified() { bModified = true; }
bool GetSelIsRef() const { return bSelIsRef; }
diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx
index 64aee60e6b09..844eecb01f3a 100644
--- a/sc/source/ui/view/tabvwsha.cxx
+++ b/sc/source/ui/view/tabvwsha.cxx
@@ -56,6 +56,9 @@
#include <markdata.hxx>
#include <cellvalue.hxx>
#include <tokenarray.hxx>
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <comphelper/lok.hxx>
+#include <sfx2/lokhelper.hxx>
#include <com/sun/star/table/BorderLineStyle.hpp>
@@ -718,7 +721,22 @@ void ScTabViewShell::ExecuteSave( SfxRequest& rReq )
// Finish entering unless 'DontTerminateEdit' is specified, even if a formula is being processed
if (bCommitChanges)
+ {
+ if (comphelper::LibreOfficeKit::isActive())
+ {
+ // Normally this isn't needed, but in Calc when editing a cell formula
+ // and manually saving (without changing cells or hitting enter), while
+ // InputEnterHandler will mark the doc as modified (when it is), because
+ // we will save the doc immediately afterwards, the modified state event
+ // is clobbered. To avoid that, we notify all views immediately of the
+ // modified state, apply the modification, then save the document.
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ if (pHdl != nullptr && pHdl->GetModified())
+ SfxLokHelper::notifyAllViews(LOK_CALLBACK_STATE_CHANGED, ".uno:ModifiedStatus=true");
+ }
+
SC_MOD()->InputEnterHandler();
+ }
if ( GetViewData().GetDocShell()->IsDocShared() )
{