public void Restore(bool forceClearPropertyInspector) { if (this.storedValues == null) { return; } IProperty propertyKey = LayoutRoundingHelper.ResolveUseLayoutRoundingProperty((SceneNode)Enumerable.FirstOrDefault <SceneElement>((IEnumerable <SceneElement>) this.storedValues.Keys)); if (propertyKey != null) { foreach (KeyValuePair <SceneElement, bool?> keyValuePair in this.storedValues) { IViewObject viewObject = keyValuePair.Key.ViewObject; if (keyValuePair.Key.IsViewObjectValid) { bool?nullable = keyValuePair.Value; if (nullable.HasValue) { viewObject.SetValue((ITypeResolver)keyValuePair.Key.ProjectContext, propertyKey, (object)(bool)(nullable.Value ? true : false)); } else { viewObject.ClearValue(propertyKey); if (forceClearPropertyInspector) { LayoutRoundingOverride.ForceClearPropertyInspector((IPropertyId)propertyKey, keyValuePair.Key); } } LayoutRoundingOverride.InvalidateMeasure(viewObject); } } } this.storedValues = (Dictionary <SceneElement, bool?>)null; }
internal void SetValue(IEnumerable <SceneElement> elements, bool value) { if (elements == null) { throw new ArgumentNullException("elements"); } this.Restore(false); IProperty propertyKey = LayoutRoundingHelper.ResolveUseLayoutRoundingProperty((SceneNode)Enumerable.FirstOrDefault <SceneElement>(elements)); if (propertyKey == null) { return; } this.storedValues = new Dictionary <SceneElement, bool?>(); foreach (SceneElement element in elements) { IViewObject viewObject = element.ViewObject; if (element.IsViewObjectValid && !value.Equals(viewObject.GetValue(propertyKey)) && LayoutRoundingHelper.GetLayoutRoundingStatus(element) == LayoutRoundingStatus.On) { this.storedValues[element] = !viewObject.IsSet(propertyKey) ? new bool?() : new bool?((bool)viewObject.GetValue(propertyKey)); viewObject.SetValue((ITypeResolver)element.ProjectContext, propertyKey, (object)(bool)(value ? true : false)); LayoutRoundingOverride.InvalidateMeasure(viewObject); } } }