diff --git a/Src/xWorks/DictionaryConfigurationController.cs b/Src/xWorks/DictionaryConfigurationController.cs
index 6639bc1373..c173fea2cd 100644
--- a/Src/xWorks/DictionaryConfigurationController.cs
+++ b/Src/xWorks/DictionaryConfigurationController.cs
@@ -520,18 +520,18 @@ public static void SetConfigureHomographParameters(DictionaryConfigurationModel
var senseNode = mainEntryNode.Children.Where(prop => prop.Label == senseType).FirstOrDefault();
if (senseNode == null) return;
var senseOptions = (DictionaryNodeSenseOptions)senseNode.DictionaryNodeOptions;
- cacheHc.ksSenseNumberStyle = senseOptions.NumberingStyle;
+ cacheHc.ksSenseNumberStyle = senseOptions.NonEmptyNumberingStyle;
//SubSense Node
var subSenseNode = senseNode.Children.Where(prop => prop.Label == "Subsenses").FirstOrDefault();
if (subSenseNode == null) return;
var subSenseOptions = (DictionaryNodeSenseOptions)subSenseNode.DictionaryNodeOptions;
- cacheHc.ksSubSenseNumberStyle = subSenseOptions.NumberingStyle;
+ cacheHc.ksSubSenseNumberStyle = subSenseOptions.NonEmptyNumberingStyle;
cacheHc.ksParentSenseNumberStyle = subSenseOptions.ParentSenseNumberingStyle;
//SubSubSense Node
var subSubSenseNode = subSenseNode.ReferencedOrDirectChildren.Where(prop => prop.Label == "Subsenses").FirstOrDefault();
if (subSubSenseNode == null) return;
var subSubSenseOptions = (DictionaryNodeSenseOptions)subSubSenseNode.DictionaryNodeOptions;
- cacheHc.ksSubSubSenseNumberStyle = subSubSenseOptions.NumberingStyle;
+ cacheHc.ksSubSubSenseNumberStyle = subSubSenseOptions.NonEmptyNumberingStyle;
cacheHc.ksParentSubSenseNumberStyle = subSubSenseOptions.ParentSenseNumberingStyle;
}
diff --git a/Src/xWorks/DictionaryDetailsView/SenseOptionsView.cs b/Src/xWorks/DictionaryDetailsView/SenseOptionsView.cs
index 3a9300c717..0b5803838a 100644
--- a/Src/xWorks/DictionaryDetailsView/SenseOptionsView.cs
+++ b/Src/xWorks/DictionaryDetailsView/SenseOptionsView.cs
@@ -66,8 +66,12 @@ public string NumberingStyle
{
get
{
- // Return null if string is empty, because returning an empty string for reversal numbers
- // also forces sense numbers not to be displayed. Null doesn't cause the same problem.
+ // Handles NumberingStyle for the dictionary/reversal configuration dialog preview display.
+ // Both empty string and null mean there is no numbering style to use.
+ // Numbering style will be null if no numbering style has ever been selected.
+ // Numbering style will be an empty string if a numbering style was selected at some point and then turned back off.
+ // Returning an empty string for reversal numbering style forces sense numbers to be turned off too, but null doesn't cause this problem.
+ // Return null if numbering style is empty.
var formatString = ((NumberingStyleComboItem)dropDownNumberingStyle.SelectedItem).FormatString;
return string.IsNullOrEmpty(formatString) ? null : formatString;
}
diff --git a/Src/xWorks/DictionaryNodeOptions.cs b/Src/xWorks/DictionaryNodeOptions.cs
index 209d8768a6..d53cfc0057 100644
--- a/Src/xWorks/DictionaryNodeOptions.cs
+++ b/Src/xWorks/DictionaryNodeOptions.cs
@@ -56,7 +56,33 @@ public class DictionaryNodeSenseOptions : DictionaryNodeOptions
// Example values: ""->none; %O->1.2.3; %d->1, 2, 3
[XmlAttribute(AttributeName = "numberingStyle")]
- public string NumberingStyle { get; set; }
+ private string m_NumberingStyle;
+
+ ///
+ /// Numbering style for senses. If null or empty, no style is used.
+ ///
+ /// NumberingStyle is null if no numbering style has ever been selected.
+ /// NumberingStyle is an empty string if a numbering style is selected but then removed.
+ ///
+ public string NumberingStyle
+ {
+ get => m_NumberingStyle;
+ set => m_NumberingStyle = value;
+ }
+
+ ///
+ /// Returns the numbering style, or null if no numbering style should be used.
+ ///
+ /// may contain either null or an empty string to indicate
+ /// that numbering is disabled. An empty string used for reversals' NumberingStyle also
+ /// forces sense numbers to be disabled. This property normalizes both values to null
+ /// to retain the expected behavior for senses.
+ ///
+ public string NonEmptyNumberingStyle
+ {
+ get => string.IsNullOrEmpty(m_NumberingStyle) ? null : m_NumberingStyle;
+ set => m_NumberingStyle = value;
+ }
// Example values: ""->none; %j->Joined; %.->Separated by dot
[XmlAttribute(AttributeName = "parentSenseNumberingStyle")]