From 1f4a11e3f081eb4142ab168c5d78425bde45386a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 16:51:48 -0800 Subject: [PATCH 1/5] Chore: bump lycheeverse/lychee-action from 2.0.2 to 2.8.0 Bumps the actions-minor group with 1 update in the / directory: [lycheeverse/lychee-action](https://github.com/lycheeverse/lychee-action). Updates `lycheeverse/lychee-action` from 2.0.2 to 2.8.0 - [Release notes](https://github.com/lycheeverse/lychee-action/releases) - [Commits](https://github.com/lycheeverse/lychee-action/compare/v2.0.2...v2.8.0) --- updated-dependencies: - dependency-name: lycheeverse/lychee-action dependency-version: 2.8.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/link-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml index 6c122ebc54..c139b35660 100644 --- a/.github/workflows/link-check.yml +++ b/.github/workflows/link-check.yml @@ -11,7 +11,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Link check with lychee (non-blocking) - uses: lycheeverse/lychee-action@v2.0.2 + uses: lycheeverse/lychee-action@v2.8.0 with: # Limit concurrency and accept 429 (rate-limited) as non-fatal args: >- From 202f4724528fdb865c2366f3c8609aedee6cf2ec Mon Sep 17 00:00:00 2001 From: Jason Naylor Date: Tue, 3 Mar 2026 16:52:59 -0800 Subject: [PATCH 2/5] Fix final acceptance test on LT-21004 (#723) * Handle the sort from end in multi-word results as in the Lex. Gram. Info. line * Add AI generated unit test to prove the function handles the paragraph direction (passed in from C# on 'Sort From End') --- Src/views/Test/TestVwTextBoxes.h | 101 +++++++++++++++++++++++++++++++ Src/views/VwTextBoxes.cpp | 6 +- 2 files changed, 106 insertions(+), 1 deletion(-) diff --git a/Src/views/Test/TestVwTextBoxes.h b/Src/views/Test/TestVwTextBoxes.h index bc278f8ef6..a53e100ca9 100644 --- a/Src/views/Test/TestVwTextBoxes.h +++ b/Src/views/Test/TestVwTextBoxes.h @@ -61,6 +61,45 @@ namespace TestViews IPicturePtr m_qPicture; }; + // View constructor that displays a single string inside a concordance paragraph. + // The keyword region (ichMin..ichLim) is aligned at dmpAlign. + // If textAlign is set to ktalRight, the paragraph gets right alignment so that + // DoSpecialAlignment uses the right edge of the keyword for positioning. + class ConcParaVc : public DummyBaseVc + { + public: + int m_ichMinItem; + int m_ichLimItem; + int m_dmpAlign; + int m_textAlign; // ktalLeft or ktalRight + + ConcParaVc(int ichMin, int ichLim, int dmpAlign, int textAlign) + : m_ichMinItem(ichMin), m_ichLimItem(ichLim), + m_dmpAlign(dmpAlign), m_textAlign(textAlign) + { + } + + STDMETHOD(Display)(IVwEnv * pvwenv, HVO hvo, int frag) + { + pvwenv->put_IntProperty(ktptAlign, ktpvEnum, m_textAlign); + pvwenv->OpenConcPara(m_ichMinItem, m_ichLimItem, + (VwConcParaOpts)kcpoDefault, m_dmpAlign); + pvwenv->AddStringProp(kflidStTxtPara_Contents, NULL); + pvwenv->CloseParagraph(); + return S_OK; + } + STDMETHOD(EstimateHeight)(HVO hvo, int frag, int dxAvailWidth, int * pdyHeight) + { + *pdyHeight = 20; + return S_OK; + } + STDMETHOD(LoadDataFor)(IVwEnv * pvwenv, HVO * prghvo, int chvo, HVO hvoParent, + int tag, int frag, int ihvoMin) + { + return S_OK; + } + }; + class TestVwParagraphBox : public unitpp::suite { // Maximum number of previous strings to add before testing strings @@ -1207,6 +1246,68 @@ namespace TestViews } } + // Helper: lay out a single concordance paragraph and return the Left() of its first child box. + // The paragraph contains the given string with keyword at ichMin..ichLim aligned at dmpAlign. + int LayoutConcParaAndGetFirstBoxLeft(const OLECHAR * pszText, int cch, + int ichMin, int ichLim, int dmpAlign, int textAlign) + { + HVO hvoPara = 1; + ITsStringPtr qtss; + CheckHr(m_qtsf->MakeStringRgch(pszText, cch, g_wsEng, &qtss)); + CheckHr(m_qcda->CacheStringProp(hvoPara, kflidStTxtPara_Contents, qtss)); + + IVwViewConstructorPtr qvc; + qvc.Attach(NewObj ConcParaVc(ichMin, ichLim, dmpAlign, textAlign)); + m_qrootb->SetRootObject(hvoPara, qvc, 1, NULL); + HRESULT hr = m_qrootb->Layout(m_qvg32, 300); + unitpp::assert_true("ConcPara layout succeeded", hr == S_OK); + + VwParagraphBox * ppbox = dynamic_cast(m_qrootb->FirstBox()); + unitpp::assert_true("Root contains a paragraph box", ppbox != NULL); + VwBox * pFirstChild = ppbox->FirstBox(); + unitpp::assert_true("Paragraph has a child box", pFirstChild != NULL); + + int result = pFirstChild->Left(); + + // Clean up so we can reuse the root box + m_qrootb->Close(); + VwRootBox::CreateCom(NULL, IID_IVwRootBox, (void **) &m_qrootb); + m_qrootb->putref_DataAccess(m_qsda); + m_qrootb->putref_RenderEngineFactory(m_qref); + m_qrootb->putref_TsStrFactory(m_qtsf); + m_qrootb->SetSite(m_qdrs); + + return result; + } + + // Tests that DoSpecialAlignment uses the right edge of the keyword + // when the paragraph alignment is ktalRight, and the left edge when + // the alignment is ktalLeft. These should produce different box positions + // because the keyword has nonzero width. + void testConcParaAlignment_RightVsLeftEdge() + { + // Use a string where the keyword ("keyword") is in the middle. + // "Before keyword after end" - keyword at positions 7..14 + const OLECHAR text[] = L"Before keyword after end"; + int cch = (int)wcslen(text); + int ichMin = 7; // start of "keyword" + int ichLim = 14; // end of "keyword" + int dmpAlign = 36000; // 0.5 inch alignment point + + int leftWithLeftAlign = LayoutConcParaAndGetFirstBoxLeft( + text, cch, ichMin, ichLim, dmpAlign, ktalLeft); + int leftWithRightAlign = LayoutConcParaAndGetFirstBoxLeft( + text, cch, ichMin, ichLim, dmpAlign, ktalRight); + + // With left alignment, the left edge of "keyword" is placed at dmpAlign. + // With right alignment, the right edge of "keyword" is placed at dmpAlign. + // Since the keyword has nonzero width, the first child box should be + // shifted further left in the right-aligned case (by the width of the keyword). + unitpp::assert_true( + "Right-aligned conc para should shift boxes further left than left-aligned", + leftWithRightAlign < leftWithLeftAlign); + } + public: TestVwParagraphBox(); diff --git a/Src/views/VwTextBoxes.cpp b/Src/views/VwTextBoxes.cpp index 91a036c915..c3c55766dd 100644 --- a/Src/views/VwTextBoxes.cpp +++ b/Src/views/VwTextBoxes.cpp @@ -10055,7 +10055,11 @@ void VwConcParaBox::DoSpecialAlignment(IVwGraphics * pvg) return; // ignore any problems here, just don't align. } - int dxsAlign = rgxdLefts[0] + psbox->Left(); + int dxsAlign; + if (Style()->ParaAlign() == ktalRight) + dxsAlign = rgxdRights[cxd - 1] + psbox->Left(); + else + dxsAlign = rgxdLefts[0] + psbox->Left(); int dxsGoalAlign = MulDiv(m_dmpAlign, dxsInch, kdzmpInch); int dxsAdjust = dxsGoalAlign - dxsAlign; // Now adjust all the box lefts by this amount From e0b442f2fe9734d81e37212c7dd22be335e8960c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 00:57:21 +0000 Subject: [PATCH 3/5] Initial plan From 62f61362e2d554773ba13c84addcce88d53dbad5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 01:04:12 +0000 Subject: [PATCH 4/5] =?UTF-8?q?Update=20NUnit=203.13.3=20=E2=86=92=203.14.?= =?UTF-8?q?0=20and=20NUnit3TestAdapter=204.5.0=20=E2=86=92=204.6.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: jasonleenaylor <2295227+jasonleenaylor@users.noreply.github.com> --- Build/Src/FwBuildTasks/FwBuildTasks.csproj | 2 +- Directory.Packages.props | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Build/Src/FwBuildTasks/FwBuildTasks.csproj b/Build/Src/FwBuildTasks/FwBuildTasks.csproj index ca96a9f190..dca4dc651a 100644 --- a/Build/Src/FwBuildTasks/FwBuildTasks.csproj +++ b/Build/Src/FwBuildTasks/FwBuildTasks.csproj @@ -22,7 +22,7 @@ - + diff --git a/Directory.Packages.props b/Directory.Packages.props index 7c13c8d7af..d4976c9f2d 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -148,8 +148,8 @@ --> - - + + From 5b3a37b77f2e8afa5c2e6f472788b48333cb165d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 16:44:41 +0000 Subject: [PATCH 5/5] Chore: Bump the nuget-minor group with 13 updates Bumps Microsoft.Build.Utilities.Core from 18.0.2 to 18.3.3 Bumps Microsoft.Extensions.DependencyModel from 9.0.9 to 9.0.13 Bumps Microsoft.NET.Test.Sdk from 17.11.1 to 17.14.1 Bumps NUnit from 3.13.3 to 3.14.0 Bumps NUnit3TestAdapter from 4.5.0 to 4.6.0 Bumps SIL.BuildTasks from 3.1.2-beta0012 to 3.2.0 Bumps SIL.LCModel from 11.0.0-beta0156 to 11.0.0-beta0158 Bumps SIL.LCModel.Utils from 11.0.0-beta0156 to 11.0.0-beta0158 Bumps SIL.TestUtilities from 12.0.0 to 12.0.1 Bumps System.Drawing.Common from 9.0.9 to 9.0.13 Bumps System.Reflection.Metadata from 9.0.0 to 9.0.13 Bumps System.Resources.Extensions from 9.0.0 to 9.0.13 Bumps System.Security.Permissions from 9.0.9 to 9.0.13 Signed-off-by: dependabot[bot] --- Build/SilVersions.props | 2 +- Build/Src/FwBuildTasks/FwBuildTasks.csproj | 8 +++--- Directory.Packages.props | 10 +++---- .../FwBuildTasks.csproj.nuget.g.props | 26 +++++++++++++++++++ .../FwBuildTasks.csproj.nuget.g.targets | 11 ++++++++ 5 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 Obj/FwBuildTasks/FwBuildTasks.csproj.nuget.g.props create mode 100644 Obj/FwBuildTasks/FwBuildTasks.csproj.nuget.g.targets diff --git a/Build/SilVersions.props b/Build/SilVersions.props index de5e0cd9da..e99438cac3 100644 --- a/Build/SilVersions.props +++ b/Build/SilVersions.props @@ -12,7 +12,7 @@ ============================================================= --> - 11.0.0-beta0156 + 11.0.0-beta0158 17.0.0 6.0.0-beta0063 3.7.13 diff --git a/Build/Src/FwBuildTasks/FwBuildTasks.csproj b/Build/Src/FwBuildTasks/FwBuildTasks.csproj index dca4dc651a..8a6ccaba5c 100644 --- a/Build/Src/FwBuildTasks/FwBuildTasks.csproj +++ b/Build/Src/FwBuildTasks/FwBuildTasks.csproj @@ -21,12 +21,12 @@ false - + - - - + + + diff --git a/Directory.Packages.props b/Directory.Packages.props index d4976c9f2d..c9d4649642 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -25,20 +25,20 @@ - + - + - + - +