Various improvements

This commit is contained in:
Ilya Laktyushin 2026-03-23 12:04:16 +01:00
parent 7354bea3e6
commit 9a9665ce54
5 changed files with 41 additions and 1 deletions

View file

@ -1662,7 +1662,7 @@ public final class PresentationTheme: Equatable {
if self.list.blocksBackgroundColor.rgb == self.list.plainBackgroundColor.rgb {
let list = self.list.withUpdated(
blocksBackgroundColor: self.list.modalBlocksBackgroundColor,
itemPlaceholderTextColor: self.overallDarkAppearance ? self.list.itemPlaceholderTextColor.withMultipliedBrightnessBy(1.2) : nil,
itemPlaceholderTextColor: self.overallDarkAppearance ? self.list.itemPlaceholderTextColor.withMultipliedBrightnessBy(1.25) : nil,
itemBlocksBackgroundColor: self.list.itemModalBlocksBackgroundColor
)
return PresentationTheme(name: self.name, index: self.index, referenceTheme: self.referenceTheme, overallDarkAppearance: self.overallDarkAppearance, intro: self.intro, passcode: self.passcode, rootController: self.rootController, list: list, chatList: self.chatList, chat: self.chat, actionSheet: self.actionSheet, contextMenu: self.contextMenu, inAppNotification: self.inAppNotification, chart: self.chart, preview: self.preview)

View file

@ -58,6 +58,7 @@ swift_library(
"//submodules/TelegramNotices",
"//submodules/StickerPeekUI",
"//submodules/CounterControllerTitleView",
"//submodules/TelegramUI/Components/EdgeEffect",
],
visibility = [
"//visibility:public",

View file

@ -32,6 +32,7 @@ import GlassBarButtonComponent
import ChatScheduleTimeController
import ContextUI
import StickerPeekUI
import EdgeEffect
public final class ComposedPoll {
public struct Text {
@ -177,6 +178,9 @@ final class ComposePollScreenComponent: Component {
final class View: UIView, UIScrollViewDelegate {
private let scrollView: ScrollView
private var topEdgeEffectView: EdgeEffectView
private var bottomEdgeEffectView: EdgeEffectView
private var reactionInput: ComponentView<Empty>?
private let pollTextSection = ComponentView<Empty>()
private let quizAnswerSection = ComponentView<Empty>()
@ -267,6 +271,9 @@ final class ComposePollScreenComponent: Component {
self.scrollView.contentInsetAdjustmentBehavior = .never
self.scrollView.alwaysBounceVertical = true
self.topEdgeEffectView = EdgeEffectView()
self.bottomEdgeEffectView = EdgeEffectView()
self.pollOptionsSectionContainer = ListSectionContentView(frame: CGRect())
super.init(frame: frame)
@ -274,6 +281,9 @@ final class ComposePollScreenComponent: Component {
self.scrollView.delegate = self
self.addSubview(self.scrollView)
self.addSubview(self.topEdgeEffectView)
self.addSubview(self.bottomEdgeEffectView)
let reorderRecognizer = ReorderGestureRecognizer(
shouldBegin: { [weak self] point in
guard let self, let (id, item) = self.item(at: point) else {
@ -2647,6 +2657,15 @@ final class ComposePollScreenComponent: Component {
}
}
let edgeEffectHeight: CGFloat = 88.0
let topEdgeEffectFrame = CGRect(origin: .zero, size: CGSize(width: availableSize.width, height: edgeEffectHeight))
transition.setFrame(view: self.topEdgeEffectView, frame: topEdgeEffectFrame)
self.topEdgeEffectView.update(content: theme.list.blocksBackgroundColor, blur: true, alpha: 1.0, rect: topEdgeEffectFrame, edge: .top, edgeSize: topEdgeEffectFrame.height, transition: transition)
let bottomEdgeEffectFrame = CGRect(origin: CGPoint(x: 0.0, y: availableSize.height - edgeEffectHeight - environment.additionalInsets.bottom), size: CGSize(width: availableSize.width, height: edgeEffectHeight))
transition.setFrame(view: self.bottomEdgeEffectView, frame: bottomEdgeEffectFrame)
self.bottomEdgeEffectView.update(content: theme.list.blocksBackgroundColor, blur: true, alpha: 1.0, rect: bottomEdgeEffectFrame, edge: .bottom, edgeSize: bottomEdgeEffectFrame.height, transition: transition)
return availableSize
}
}

View file

@ -45,6 +45,7 @@ swift_library(
"//submodules/TelegramUI/Components/ComposePollScreen",
"//submodules/Markdown",
"//submodules/TelegramUI/Components/GlassBarButtonComponent",
"//submodules/TelegramUI/Components/EdgeEffect",
],
visibility = [
"//visibility:public",

View file

@ -30,6 +30,7 @@ import ListComposePollOptionComponent
import Markdown
import PresentationDataUtils
import GlassBarButtonComponent
import EdgeEffect
final class ComposeTodoScreenComponent: Component {
typealias EnvironmentType = ViewControllerComponentContainer.Environment
@ -72,6 +73,9 @@ final class ComposeTodoScreenComponent: Component {
final class View: UIView, UIScrollViewDelegate {
private let scrollView: UIScrollView
private var topEdgeEffectView: EdgeEffectView
private var bottomEdgeEffectView: EdgeEffectView
private let todoTextSection = ComponentView<Empty>()
private let todoItemsSectionHeader = ComponentView<Empty>()
@ -132,6 +136,9 @@ final class ComposeTodoScreenComponent: Component {
self.scrollView.contentInsetAdjustmentBehavior = .never
self.scrollView.alwaysBounceVertical = true
self.topEdgeEffectView = EdgeEffectView()
self.bottomEdgeEffectView = EdgeEffectView()
self.todoItemsSectionContainer = ListSectionContentView(frame: CGRect())
self.todoItemsSectionContainer.automaticallyLayoutExternalContentBackgroundView = false
@ -140,6 +147,9 @@ final class ComposeTodoScreenComponent: Component {
self.scrollView.delegate = self
self.addSubview(self.scrollView)
self.addSubview(self.topEdgeEffectView)
self.addSubview(self.bottomEdgeEffectView)
let reorderRecognizer = ReorderGestureRecognizer(
shouldBegin: { [weak self] point in
guard let self, let (id, item) = self.item(at: point) else {
@ -1654,6 +1664,15 @@ final class ComposeTodoScreenComponent: Component {
self.todoItems[i].resetText = nil
}
let edgeEffectHeight: CGFloat = 88.0
let topEdgeEffectFrame = CGRect(origin: .zero, size: CGSize(width: availableSize.width, height: edgeEffectHeight))
transition.setFrame(view: self.topEdgeEffectView, frame: topEdgeEffectFrame)
self.topEdgeEffectView.update(content: theme.list.blocksBackgroundColor, blur: true, alpha: 1.0, rect: topEdgeEffectFrame, edge: .top, edgeSize: topEdgeEffectFrame.height, transition: transition)
let bottomEdgeEffectFrame = CGRect(origin: CGPoint(x: 0.0, y: availableSize.height - edgeEffectHeight - environment.additionalInsets.bottom), size: CGSize(width: availableSize.width, height: edgeEffectHeight))
transition.setFrame(view: self.bottomEdgeEffectView, frame: bottomEdgeEffectFrame)
self.bottomEdgeEffectView.update(content: theme.list.blocksBackgroundColor, blur: true, alpha: 1.0, rect: bottomEdgeEffectFrame, edge: .bottom, edgeSize: bottomEdgeEffectFrame.height, transition: transition)
return availableSize
}
}