From d11b007f31b7d88ef124bcedad3ba9fb483e2cd6 Mon Sep 17 00:00:00 2001 From: John Maxwell Date: Fri, 28 Jun 2024 08:25:17 -0700 Subject: [PATCH 1/2] Fix LT-21815 by eliminating dummy glosses --- src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs b/src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs index 63d9d0c8..75012cec 100644 --- a/src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs +++ b/src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs @@ -1032,12 +1032,17 @@ private void GenerateEntryGuesses(IDictionary map) var newAnalysis = waFactory.Create(ww, wgFactory); newAnalysis.CategoryRA = info.Pos; // Not all entries have senses. - if (info.Sense != null) + if (info.Sense != null && info.Sense.Gloss.BestAnalysisVernacularAlternative.Length > 0) { // copy all the gloss alternatives from the sense into the word gloss. IWfiGloss wg = newAnalysis.MeaningsOC.First(); wg.Form.MergeAlternatives(info.Sense.Gloss); } + else + { + // Eliminate the dummy gloss (LT-21815). + newAnalysis.MeaningsOC.Clear(); + } var wmb = wmbFactory.Create(); newAnalysis.MorphBundlesOS.Add(wmb); if (info.Form != null) From 9f709cc34c5b53a27321ee2e2aaf3aa6a6192621 Mon Sep 17 00:00:00 2001 From: John Maxwell Date: Fri, 28 Jun 2024 08:48:21 -0700 Subject: [PATCH 2/2] Add IsEmptyMultiUnicode --- .../DomainServices/AnalysisGuessServices.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs b/src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs index 75012cec..d74f3b1e 100644 --- a/src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs +++ b/src/SIL.LCModel/DomainServices/AnalysisGuessServices.cs @@ -1032,7 +1032,7 @@ private void GenerateEntryGuesses(IDictionary map) var newAnalysis = waFactory.Create(ww, wgFactory); newAnalysis.CategoryRA = info.Pos; // Not all entries have senses. - if (info.Sense != null && info.Sense.Gloss.BestAnalysisVernacularAlternative.Length > 0) + if (info.Sense != null && !IsEmptyMultiUnicode(info.Sense.Gloss)) { // copy all the gloss alternatives from the sense into the word gloss. IWfiGloss wg = newAnalysis.MeaningsOC.First(); @@ -1063,6 +1063,16 @@ private void GenerateEntryGuesses(IDictionary map) } } } + + bool IsEmptyMultiUnicode(IMultiUnicode multiUnicode) + { + foreach (var ws in multiUnicode.AvailableWritingSystemIds) + { + if (multiUnicode.get_String(ws).Length > 0) + return false; + } + return true; + } #endregion GenerateEntryGuesses } }