[Libreoffice-commits] core.git: sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Mar 15 14:23:15 UTC 2019


 sc/source/core/data/column3.cxx |   24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

New commits:
commit 6160025b27e97841321be29863bb1efd8c194a5f
Author:     Eike Rathke <erack at redhat.com>
AuthorDate: Fri Mar 15 13:25:32 2019 +0100
Commit:     Eike Rathke <erack at redhat.com>
CommitDate: Fri Mar 15 15:22:42 2019 +0100

    In case of sc::NoListening only SetNeedsListeningGroup(), tdf#123736 follow-up
    
    Change-Id: I3e5a5334dfe11002b526f942463626b62efbc340
    Reviewed-on: https://gerrit.libreoffice.org/69303
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins

diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 2607ea4b74a8..1d69e3515e1a 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -507,13 +507,27 @@ void ScColumn::AttachNewFormulaCell(
         break;
         case sc::SingleCellListening:
             rCell.StartListeningTo(pDocument);
-            [[fallthrough]];
+            StartListeningUnshared( rNewSharedRows);
+        break;
         case sc::NoListening:
         default:
-            // Listeners for changed shared formula groups resulting from
-            // unshareFormulaCell() need to be re-established in all cases
-            // (unless the callers thought of that and take care of it, but..).
-            StartListeningUnshared( rNewSharedRows);
+            if (!rNewSharedRows.empty())
+            {
+                assert(rNewSharedRows.size() == 2 || rNewSharedRows.size() == 4);
+                // Calling SetNeedsListeningGroup() with a top row sets it to
+                // all affected formula cells of that group.
+                const ScFormulaCell* pFC = GetFormulaCell( rNewSharedRows[0]);
+                assert(pFC);    // that *is* supposed to be a top row
+                if (pFC && !pFC->NeedsListening())
+                    SetNeedsListeningGroup( rNewSharedRows[0]);
+                if (rNewSharedRows.size() > 2)
+                {
+                    pFC = GetFormulaCell( rNewSharedRows[2]);
+                    assert(pFC);    // that *is* supposed to be a top row
+                    if (pFC && !pFC->NeedsListening())
+                        SetNeedsListeningGroup( rNewSharedRows[2]);
+                }
+            }
         break;
     }
 


More information about the Libreoffice-commits mailing list