From 44bab5b0f0cbc3b3f7771792415a641727f7a022 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Tue, 18 Oct 2016 13:18:32 +0300 Subject: [PATCH] Padding was reset incorrectly (#2917) * Padding was reset incorrectly * Fix tslint --- .../ui/core/dependency-observable.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tns-core-modules/ui/core/dependency-observable.ts b/tns-core-modules/ui/core/dependency-observable.ts index 47e6d3e70..e8949ea59 100644 --- a/tns-core-modules/ui/core/dependency-observable.ts +++ b/tns-core-modules/ui/core/dependency-observable.ts @@ -131,6 +131,7 @@ export class Property implements definition.Property { export class PropertyEntry implements definition.PropertyEntry { public valueSource: number = ValueSource.Default; + public defaultValue: any; public inheritedValue: any; public cssValue: any; public localValue: any; @@ -198,7 +199,7 @@ export class DependencyObservable extends Observable implements definition.Depen let defaultValue = defaultValueResult.result; if (defaultValueResult.cacheable) { let entry = new PropertyEntry(property); - entry.effectiveValue = defaultValue; + entry.effectiveValue = entry.defaultValue = defaultValue; this._propertyEntries[property.id] = entry; } @@ -253,7 +254,9 @@ export class DependencyObservable extends Observable implements definition.Depen let newValue = this.getEffectiveValueAndUpdateEntry(currentValueSource, entry, property); if (!property.equalityComparer(currentValue, newValue)) { // If we fallback to defalutValue - remove propertyEntry. - if (entry.valueSource === ValueSource.Default) { + // Don't delete properties with ValueGetters because they will get their default value again + // and it will be the current native value (if it was set before that, e.g. it will be wrong). + if (entry.valueSource === ValueSource.Default && !property.defaultValueGetter) { delete this._propertyEntries[property.id]; } else { @@ -309,6 +312,9 @@ export class DependencyObservable extends Observable implements definition.Depen for (let i = 0, keys = Object.keys(this._propertyEntries); i < keys.length; i++) { let key = keys[i]; let entry: PropertyEntry = this._propertyEntries[key]; + if (entry.valueSource === ValueSource.Default) { + continue; + } if (!callback(entry.property, entry.effectiveValue)) { break; } @@ -394,7 +400,7 @@ export class DependencyObservable extends Observable implements definition.Depen entry.valueSource = ValueSource.Inherited; } else { - newValue = property.defaultValue; + newValue = entry.defaultValue !== undefined ? entry.defaultValue : property.defaultValue; entry.valueSource = ValueSource.Default; } break; @@ -409,7 +415,7 @@ export class DependencyObservable extends Observable implements definition.Depen entry.valueSource = ValueSource.Inherited; } else { - newValue = property.defaultValue; + newValue = entry.defaultValue !== undefined ? entry.defaultValue : property.defaultValue; entry.valueSource = ValueSource.Default; } break; @@ -428,7 +434,7 @@ export class DependencyObservable extends Observable implements definition.Depen entry.valueSource = ValueSource.Inherited; } else { - newValue = property.defaultValue; + newValue = entry.defaultValue !== undefined ? entry.defaultValue : property.defaultValue; entry.valueSource = ValueSource.Default; } break;