diff --git a/Client/Frontend/Browser/BrowserViewController.swift b/Client/Frontend/Browser/BrowserViewController.swift index 9497b95ec..4fc6e41ad 100644 --- a/Client/Frontend/Browser/BrowserViewController.swift +++ b/Client/Frontend/Browser/BrowserViewController.swift @@ -665,11 +665,7 @@ class BrowserViewController: UIViewController { webViewContainerTopOffset = make.top.equalTo(readerModeBar?.snp.bottom ?? self.header.snp.bottom).constraint let findInPageHeight = (findInPageBar == nil) ? 0 : UIConstants.ToolbarHeight - if let toolbar = self.toolbar { - make.bottom.equalTo(toolbar.snp.top).offset(-findInPageHeight) - } else { - make.bottom.equalTo(self.view).offset(-findInPageHeight) - } + make.bottom.equalTo(self.footer.snp.top).offset(-findInPageHeight) } // Setup the bottom toolbar @@ -681,6 +677,9 @@ class BrowserViewController: UIViewController { footer.snp.remakeConstraints { make in scrollController.footerBottomConstraint = make.bottom.equalTo(self.view.snp.bottom).constraint make.leading.trailing.equalTo(self.view) + if self.toolbar == nil { + make.height.equalTo(0.0) + } } urlBar.setNeedsUpdateConstraints() @@ -691,11 +690,7 @@ class BrowserViewController: UIViewController { webViewContainerTopOffset = make.top.equalTo(readerModeBar?.snp.bottom ?? self.header.snp.bottom).constraint make.left.right.equalTo(self.view) - if self.homePanelIsInline { - make.bottom.equalTo(self.toolbar?.snp.top ?? self.view.snp.bottom) - } else { - make.bottom.equalTo(self.view.snp.bottom) - } + make.bottom.equalTo(self.footer.snp.top) } alertStackView.snp.remakeConstraints { make in @@ -703,10 +698,8 @@ class BrowserViewController: UIViewController { make.width.equalTo(self.view.snp.width) if let keyboardHeight = keyboardState?.intersectionHeightForView(self.view), keyboardHeight > 0 { make.bottom.equalTo(self.view).offset(-keyboardHeight) - } else if let toolbar = self.toolbar { - make.bottom.equalTo(toolbar.snp.top) } else { - make.bottom.equalTo(self.view) + make.bottom.equalTo(self.footer.snp.top) } } } diff --git a/Client/Frontend/Browser/Tab.swift b/Client/Frontend/Browser/Tab.swift index 41b9d5073..d88c6fffa 100644 --- a/Client/Frontend/Browser/Tab.swift +++ b/Client/Frontend/Browser/Tab.swift @@ -189,6 +189,7 @@ class Tab: NSObject { configuration!.preferences = WKPreferences() configuration!.preferences.javaScriptCanOpenWindowsAutomatically = false configuration!.allowsInlineMediaPlayback = true + // Enables Zoom in website by ignoring their javascript based viewport Scale limits. configuration!.ignoresViewportScaleLimits = true let webView = TabWebView(frame: .zero, configuration: configuration!) webView.delegate = self diff --git a/Client/Frontend/Browser/TabScrollController.swift b/Client/Frontend/Browser/TabScrollController.swift index 0d7ed300c..bd6d33871 100644 --- a/Client/Frontend/Browser/TabScrollController.swift +++ b/Client/Frontend/Browser/TabScrollController.swift @@ -22,11 +22,11 @@ class TabScrollingController: NSObject { weak var tab: Tab? { willSet { self.scrollView?.delegate = nil - self.scrollView?.removeGestureRecognizer(panGesture) + self.scrollView?.panGestureRecognizer.removeTarget(self, action: nil) } didSet { - self.scrollView?.addGestureRecognizer(panGesture) + self.scrollView?.panGestureRecognizer.addTarget(self, action: #selector(handlePan)) scrollView?.delegate = self } } @@ -52,7 +52,7 @@ class TabScrollingController: NSObject { fileprivate var headerTopOffset: CGFloat = 0 { didSet { - headerTopConstraint?.update(offset: headerTopOffset - tabsBarOffset) + headerTopConstraint?.update(offset: headerTopOffset) header?.superview?.setNeedsLayout() } } @@ -70,13 +70,6 @@ class TabScrollingController: NSObject { } } - fileprivate lazy var panGesture: UIPanGestureRecognizer = { - let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan)) - panGesture.maximumNumberOfTouches = 1 - panGesture.delegate = self - return panGesture - }() - fileprivate var scrollView: UIScrollView? { return tab?.webView?.scrollView } fileprivate var contentOffset: CGPoint { return scrollView?.contentOffset ?? .zero } fileprivate var contentSize: CGSize { return scrollView?.contentSize ?? .zero } @@ -251,20 +244,9 @@ private extension TabScrollingController { } func animateToolbarsWithOffsets(_ animated: Bool, duration: TimeInterval, headerOffset: CGFloat, footerOffset: CGFloat, alpha: CGFloat, completion: ((_ finished: Bool) -> Void)?) { - guard let scrollView = scrollView else { return } - let initialContentOffset = scrollView.contentOffset - - // If this function is used to fully animate the toolbar from hidden to shown, keep the page from scrolling by adjusting contentOffset, - // Otherwise when the toolbar is hidden and a link navigated, showing the toolbar will scroll the page and - // produce a ~50px page jumping effect in response to tap navigations. - let isShownFromHidden = headerTopOffset == -topScrollHeight && headerOffset == 0 - + self.headerTopOffset = headerOffset + self.footerBottomOffset = footerOffset let animation: () -> Void = { - if isShownFromHidden { - scrollView.contentOffset = CGPoint(x: initialContentOffset.x, y: initialContentOffset.y + self.topScrollHeight) - } - self.headerTopOffset = headerOffset + self.tabsBarOffset - self.footerBottomOffset = footerOffset self.urlBar?.updateAlphaForSubviews(alpha) self.tabsBar?.view.alpha = alpha self.header?.superview?.layoutIfNeeded()