Merge pull request #4 from kiruma524/tutorial

Pre-version of inheritance.md
This commit is contained in:
Kira Dmitrieva 2021-08-22 18:11:44 +03:00 committed by GitHub
commit a3eaa167a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 12 deletions

View File

@ -2,19 +2,16 @@
Inheritance is an ability of an element to transfer a pack of properties to its `children` elements 'wrapped inside'.
Properties, which can be inherited by objects, are `styles`, `prototypes` (if the object is a reference), `inherit` (it stands for the presence of `parent` objects), and `defaults`.
Properties have to be set in a specific order:
### Main properties' inheritance:
* styles
* parents
* parent's styles
* defaults
All values of `styles` property are contained in class `StyleSheet`, where they all are defined at `Group`s level. The `prototypes` property tree is defined in `SolidGroup` class via `PrototypeHolder` interface, and
`SolidReference` class helps to reuse a template object.
As for `prototypes`, this property has to be set after styles, but before parents. So the order will be this:
### Reference properties' inheritance:
* styles
The order of inheritance of properties is set in function `getPropertyValue` in `VisionBase` class.
The order is this:
* own styles
* prototypes
* parents
* parent
* parent's styles
* defaults

View File

@ -36,7 +36,7 @@ public interface Vision : Described, Configurable {
public val manager: VisionManager? get() = parent?.manager
/**
* This Vision own properties (ignoring inheritance, styles and defaults
* This Vision own properties (ignoring inheritance, styles and defaults)
*/
override val meta: ObservableMutableMeta
@ -92,7 +92,7 @@ public val Vision.propertyChanges: Flow<Name>
}
/**
* Subscribe on property updates. The subscription is bound to the given [scope] and canceled when the scope is canceled
* Subscribe on property updates. The subscription is bound to the given scope and canceled when the scope is canceled
*/
public fun Vision.onPropertyChange(callback: Meta.(Name) -> Unit) {
meta.onChange(null, callback)