From 917818881bf15f481cc5843347ca8ba747a69316 Mon Sep 17 00:00:00 2001 From: Jozef Izso Date: Fri, 30 Jan 2026 23:25:12 +0100 Subject: [PATCH 1/2] Fix bug in `DocumentEvents2` sink implementation of the `ContentControlBeforeContentUpdate` event --- Source/NetOffice.Tests/NetOffice.Tests.csproj | 1 + .../Events/DocumentEvents2_SinkHelperTests.cs | 45 +++++++++++++++++++ Source/NetOffice.Tests/packages.lock.json | 9 ++++ Source/Word/Events/DocumentEvents2.cs | 2 +- 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 Source/NetOffice.Tests/WordApi/Events/DocumentEvents2_SinkHelperTests.cs diff --git a/Source/NetOffice.Tests/NetOffice.Tests.csproj b/Source/NetOffice.Tests/NetOffice.Tests.csproj index 8c93ec14b0..f9e693a995 100644 --- a/Source/NetOffice.Tests/NetOffice.Tests.csproj +++ b/Source/NetOffice.Tests/NetOffice.Tests.csproj @@ -28,6 +28,7 @@ + diff --git a/Source/NetOffice.Tests/WordApi/Events/DocumentEvents2_SinkHelperTests.cs b/Source/NetOffice.Tests/WordApi/Events/DocumentEvents2_SinkHelperTests.cs new file mode 100644 index 0000000000..6bf13cc76a --- /dev/null +++ b/Source/NetOffice.Tests/WordApi/Events/DocumentEvents2_SinkHelperTests.cs @@ -0,0 +1,45 @@ +// Copyright 2024 Cisco Systems, Inc. +// Licensed under MIT-style license (see LICENSE.txt file). + +using System; +using NetOffice.WordApi; +using NetOffice.WordApi.Events; +using NetOffice.Tests.Helpers; +using NUnit.Framework; + +namespace NetOffice.Tests.WordApi.Events +{ + [TestFixture] + public class DocumentEvents2_SinkHelperTests + { + /// + /// Regression test for #453 - Ensures ContentControlBeforeContentUpdate event uses correct event name + /// in both Validate() and EventBinding.RaiseCustomEvent() calls + /// + [Test] + public void ContentControlBeforeContentUpdate_EventRaised_CallsHandlerWithCorrectEventName() + { + // Arrange + var eventBinder = new TestableComObjectStub(); + eventBinder.AddEventRecipient(nameof(DocumentEvents2_SinkHelper.ContentControlBeforeContentUpdate)); + var connectionPoint = new ConnectionPointStub(); + + var events = new DocumentEvents2_SinkHelper(eventBinder, connectionPoint); + var parameter1 = new FakeComObject(); + var content = new object(); + + // Act + events.ContentControlBeforeContentUpdate(parameter1, ref content); + var actualParametersPassToEvent = eventBinder.LastRaisedEventParameters; + + // Assert + Assert.AreEqual("ContentControlBeforeContentUpdate", eventBinder.LastRaisedEventName, + "EventBinding.RaiseCustomEvent must be called with 'ContentControlBeforeContentUpdate' event name"); + + CollectionAssert.IsNotEmpty(actualParametersPassToEvent); + var actualParameter1 = actualParametersPassToEvent[0]; + Assert.IsInstanceOf(actualParameter1, + "Event ContentControlBeforeContentUpdate parameter must be of type ContentControl."); + } + } +} diff --git a/Source/NetOffice.Tests/packages.lock.json b/Source/NetOffice.Tests/packages.lock.json index 12724d1732..b0d202f5e6 100644 --- a/Source/NetOffice.Tests/packages.lock.json +++ b/Source/NetOffice.Tests/packages.lock.json @@ -142,6 +142,15 @@ "NetOfficeFw.Core": "[1.9.3, )", "NetOfficeFw.Office": "[1.9.3, )" } + }, + "NetOfficeFw.Word": { + "type": "Project", + "dependencies": { + "NetOfficeFw.Core": "[1.9.3, )", + "NetOfficeFw.Office": "[1.9.3, )", + "NetOfficeFw.VBIDE": "[1.9.3, )", + "stdole": "[7.0.3300, )" + } } } } diff --git a/Source/Word/Events/DocumentEvents2.cs b/Source/Word/Events/DocumentEvents2.cs index 610253fef5..4b23b6e7db 100644 --- a/Source/Word/Events/DocumentEvents2.cs +++ b/Source/Word/Events/DocumentEvents2.cs @@ -279,7 +279,7 @@ public void ContentControlBeforeStoreUpdate([In, MarshalAs(UnmanagedType.IDispat public void ContentControlBeforeContentUpdate([In, MarshalAs(UnmanagedType.IDispatch)] object contentControl, [In] [Out] ref object content) { - if (!Validate("ContentControlBeforeStoreUpdate")) + if (!Validate("ContentControlBeforeContentUpdate")) { Invoker.ReleaseParamsArray(contentControl, content); return; From de31b5b10501c45abb171782bf117034c8ffb165 Mon Sep 17 00:00:00 2001 From: Jozef Izso Date: Fri, 30 Jan 2026 23:34:37 +0100 Subject: [PATCH 2/2] Update changelog for v1.9.8 with the fix for `ContentControlBeforeContentUpdate` event --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3418aadacd..cea68308b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v1.9.8 + +### Fixed +* Fix bug in `ContentControlBeforeContentUpdate` code by verifying the correct event name [#454](https://github.com/NetOfficeFw/NetOffice/pull/454) + + ## v1.9.7 ### Added