Web app fixes

This commit is contained in:
Ilya Laktyushin
2022-03-30 13:25:51 +04:00
parent 30ecf17d89
commit 4a68666a44
3 changed files with 17 additions and 9 deletions

View File

@@ -419,7 +419,10 @@ final class AttachmentContainer: ASDisplayNode, UIGestureRecognizerDelegate {
intrinsicInsets.left += overflowInset
intrinsicInsets.right += overflowInset
containerLayout = ContainerViewLayout(size: CGSize(width: layout.size.width + overflowInset * 2.0, height: layout.size.height - containerTopInset), metrics: layout.metrics, deviceMetrics: layout.deviceMetrics, intrinsicInsets: UIEdgeInsets(top: 0.0, left: intrinsicInsets.left, bottom: intrinsicInsets.bottom, right: intrinsicInsets.right), safeInsets: UIEdgeInsets(top: 0.0, left: safeInsets.left, bottom: safeInsets.bottom, right: safeInsets.right), additionalInsets: layout.additionalInsets, statusBarHeight: effectiveStatusBarHeight, inputHeight: layout.inputHeight, inputHeightIsInteractivellyChanging: layout.inputHeightIsInteractivellyChanging, inVoiceOver: layout.inVoiceOver)
var additionalInsets = layout.additionalInsets
additionalInsets.bottom = topInset
containerLayout = ContainerViewLayout(size: CGSize(width: layout.size.width + overflowInset * 2.0, height: layout.size.height - containerTopInset), metrics: layout.metrics, deviceMetrics: layout.deviceMetrics, intrinsicInsets: UIEdgeInsets(top: 0.0, left: intrinsicInsets.left, bottom: intrinsicInsets.bottom, right: intrinsicInsets.right), safeInsets: UIEdgeInsets(top: 0.0, left: safeInsets.left, bottom: safeInsets.bottom, right: safeInsets.right), additionalInsets: additionalInsets, statusBarHeight: effectiveStatusBarHeight, inputHeight: layout.inputHeight, inputHeightIsInteractivellyChanging: layout.inputHeightIsInteractivellyChanging, inVoiceOver: layout.inVoiceOver)
let unscaledFrame = CGRect(origin: CGPoint(x: 0.0, y: containerTopInset - coveredByModalTransition * 10.0), size: containerLayout.size)
let maxScale: CGFloat = (containerLayout.size.width - 16.0 * 2.0) / containerLayout.size.width
containerScale = 1.0 * (1.0 - coveredByModalTransition) + maxScale * coveredByModalTransition

View File

@@ -709,7 +709,8 @@ public class Window1 {
}
for view in self.hostView.eventView.subviews.reversed() {
if NSStringFromClass(type(of: view)) == "UITransitionView" {
let classString = NSStringFromClass(type(of: view))
if classString == "UITransitionView" || classString.contains("ContextMenuContainerView") {
if let result = view.hitTest(point, with: event) {
return result
}

View File

@@ -163,8 +163,8 @@ public final class WebAppController: ViewController, AttachmentContainable {
strongSelf.handleScriptMessage(message)
}
}, name: "performAction")
let selectionString = "var css = '*{-webkit-touch-callout:none;-webkit-user-select:none}';"
//-webkit-user-select:none
let selectionString = "var css = '*{-webkit-touch-callout:none;}';"
+ " var head = document.head || document.getElementsByTagName('head')[0];"
+ " var style = document.createElement('style'); style.type = 'text/css';" +
" style.appendChild(document.createTextNode(css)); head.appendChild(style);"
@@ -200,6 +200,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
webView.allowsBackForwardNavigationGestures = false
webView.scrollView.delegate = self
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress), options: [], context: nil)
webView.tintColor = self.presentationData.theme.rootController.tabBar.iconColor
self.webView = webView
let placeholderNode = ShimmerEffectNode()
@@ -339,7 +340,10 @@ public final class WebAppController: ViewController, AttachmentContainable {
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
if let webView = self.webView {
webView.frame = CGRect(origin: CGPoint(x: layout.safeInsets.left, y: navigationBarHeight), size: CGSize(width: layout.size.width - layout.safeInsets.left - layout.safeInsets.right, height: max(1.0, layout.size.height - navigationBarHeight - layout.intrinsicInsets.bottom)))
transition.updateFrame(view: webView, frame: CGRect(origin: CGPoint(x: layout.safeInsets.left, y: navigationBarHeight), size: CGSize(width: layout.size.width - layout.safeInsets.left - layout.safeInsets.right, height: max(1.0, layout.size.height - navigationBarHeight - layout.intrinsicInsets.bottom - layout.additionalInsets.bottom))))
if case .immediate = transition {
webView.layoutSubviews()
}
}
if let placeholderNode = self.placeholderNode {
@@ -347,7 +351,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
let height: CGFloat
if case .compact = layout.metrics.widthClass {
height = layout.size.height - attachmentDefaultTopInset(layout: layout) - layout.intrinsicInsets.bottom - 14.0
height = layout.size.height - layout.additionalInsets.bottom - layout.intrinsicInsets.bottom
} else {
height = layout.size.height - layout.intrinsicInsets.bottom
}