mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-02-12 22:10:17 +00:00
Merge pull request #1514 from maicki/FixDisabledStatePropagationFinalLayoutable
[ASEnvironment] Fix disabled state propagation for final layoutable
This commit is contained in:
@@ -81,8 +81,14 @@ static NSString * const kDefaultChildrenKey = @"kDefaultChildrenKey";
|
||||
|
||||
id<ASLayoutable> finalLayoutable = [child finalLayoutable];
|
||||
if (finalLayoutable != child) {
|
||||
// Layout options state of child needs to be copied to final layoutable, but don't override customized values.
|
||||
ASEnvironmentStatePropagateUp(finalLayoutable, child.environmentState.layoutOptionsState);
|
||||
if (ASEnvironmentStatePropagationEnabled()) {
|
||||
ASEnvironmentStatePropagateUp(finalLayoutable, child.environmentState.layoutOptionsState);
|
||||
} else {
|
||||
// If state propagation is not enabled the layout options state needs to be copied manually
|
||||
ASEnvironmentState finalLayoutableEnvironmentState = finalLayoutable.environmentState;
|
||||
finalLayoutableEnvironmentState.layoutOptionsState = child.environmentState.layoutOptionsState;
|
||||
finalLayoutable.environmentState = finalLayoutableEnvironmentState;
|
||||
}
|
||||
return finalLayoutable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
enum class ASEnvironmentStatePropagation { DOWN, UP };
|
||||
BOOL ASEnvironmentStatePropagationEnabled();
|
||||
|
||||
|
||||
#pragma mark - Set and get extensible values for layout options
|
||||
@@ -33,6 +33,11 @@ void ASEnvironmentPerformBlockOnObjectAndChildren(id<ASEnvironment> object, void
|
||||
void ASEnvironmentPerformBlockOnObjectAndParents(id<ASEnvironment> object, void(^block)(id<ASEnvironment> object));
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
enum class ASEnvironmentStatePropagation { DOWN, UP };
|
||||
|
||||
|
||||
#pragma mark - Merging
|
||||
|
||||
static const struct ASEnvironmentStateExtensions ASEnvironmentDefaultStateExtensions = {};
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
|
||||
#define AS_SUPPORT_PROPAGATION NO
|
||||
|
||||
BOOL ASEnvironmentStatePropagationEnabled()
|
||||
{
|
||||
return AS_SUPPORT_PROPAGATION;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Traversing an ASEnvironment Tree
|
||||
|
||||
@@ -109,7 +114,7 @@ ASEnvironmentState ASEnvironmentMergeObjectAndState(ASEnvironmentState environme
|
||||
// Merge object and layout options state
|
||||
LOG(@"Merge object and state: %@ - ASEnvironmentLayoutOptionsState", object);
|
||||
|
||||
if (!AS_SUPPORT_PROPAGATION) {
|
||||
if (!ASEnvironmentStatePropagationEnabled()) {
|
||||
return environmentState;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user