mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-15 21:45:19 +00:00
Search filter fixes
This commit is contained in:
parent
1d1e3de5d5
commit
8b362c60f4
@ -106,11 +106,13 @@ func suggestDates(for string: String, strings: PresentationStrings, dateTimeForm
|
||||
if stringComponents.count < 3 {
|
||||
for i in 0..<5 {
|
||||
if let date = calendar.date(byAdding: .year, value: -i, to: resultDate), date < now {
|
||||
result.append((nil, date, nil))
|
||||
let lowerDate = getLowerDate(for: resultDate)
|
||||
result.append((lowerDate, date, nil))
|
||||
}
|
||||
}
|
||||
} else if resultDate < now {
|
||||
result.append((nil, resultDate, nil))
|
||||
let lowerDate = getLowerDate(for: resultDate)
|
||||
result.append((lowerDate, resultDate, nil))
|
||||
}
|
||||
}
|
||||
let dd = try NSDataDetector(types: NSTextCheckingResult.CheckingType.date.rawValue)
|
||||
|
@ -17,7 +17,7 @@ private let timezoneOffset: Int32 = {
|
||||
}()
|
||||
|
||||
public func listMessageDateHeaderId(timestamp: Int32) -> Int64 {
|
||||
let unclippedValue: Int64 = min(Int64(Int32.max), Int64(timestamp) + Int64(timezoneOffset))
|
||||
let unclippedValue: Int64 = min(Int64(Int32.max), Int64(timestamp))
|
||||
|
||||
var time: time_t = time_t(Int32(clamping: unclippedValue))
|
||||
var timeinfo: tm = tm()
|
||||
@ -29,7 +29,7 @@ public func listMessageDateHeaderId(timestamp: Int32) -> Int64 {
|
||||
}
|
||||
|
||||
public func listMessageDateHeaderInfo(timestamp: Int32) -> (year: Int32, month: Int32) {
|
||||
var time: time_t = time_t(timestamp + timezoneOffset)
|
||||
var time: time_t = time_t(timestamp)
|
||||
var timeinfo: tm = tm()
|
||||
localtime_r(&time, &timeinfo)
|
||||
|
||||
@ -53,7 +53,7 @@ final class ListMessageDateHeader: ListViewItemHeader {
|
||||
self.strings = strings
|
||||
self.fontSize = fontSize
|
||||
|
||||
var time: time_t = time_t(timestamp + timezoneOffset)
|
||||
var time: time_t = time_t(timestamp)
|
||||
var timeinfo: tm = tm()
|
||||
localtime_r(&time, &timeinfo)
|
||||
|
||||
|
@ -251,9 +251,11 @@ private class SearchBarTextField: UITextField, UIScrollViewDelegate {
|
||||
self.tokenNodes[token.id] = tokenNode
|
||||
}
|
||||
tokenNode.tapped = { [weak self] in
|
||||
self?.selectedTokenIndex = i
|
||||
self?.becomeFirstResponder()
|
||||
if let strongSelf = self {
|
||||
strongSelf.selectedTokenIndex = i
|
||||
if !strongSelf.isFirstResponder {
|
||||
let _ = strongSelf.becomeFirstResponder()
|
||||
}
|
||||
let newPosition = strongSelf.beginningOfDocument
|
||||
strongSelf.selectedTextRange = strongSelf.textRange(from: newPosition, to: newPosition)
|
||||
}
|
||||
@ -443,6 +445,15 @@ private class SearchBarTextField: UITextField, UIScrollViewDelegate {
|
||||
self.updateTokenContainerPosition()
|
||||
}
|
||||
|
||||
override func becomeFirstResponder() -> Bool {
|
||||
if let contentOffset = self.scrollView?.contentOffset {
|
||||
Queue.mainQueue().after(0.03) {
|
||||
self.scrollView?.setContentOffset(contentOffset, animated: true)
|
||||
}
|
||||
}
|
||||
return super.becomeFirstResponder()
|
||||
}
|
||||
|
||||
private func updateTokenContainerPosition(transition: ContainedViewLayoutTransition = .immediate) {
|
||||
if let scrollView = self.scrollView {
|
||||
transition.updateFrame(node: self.tokenContainerNode, frame: CGRect(origin: CGPoint(x: -scrollView.contentOffset.x - scrollView.contentInset.left, y: 0.0), size: self.tokenContainerNode.frame.size))
|
||||
@ -460,7 +471,7 @@ private class SearchBarTextField: UITextField, UIScrollViewDelegate {
|
||||
}
|
||||
super.keyboardAppearance = newValue
|
||||
if resigning {
|
||||
self.becomeFirstResponder()
|
||||
let _ = self.becomeFirstResponder()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -553,7 +564,6 @@ private class SearchBarTextField: UITextField, UIScrollViewDelegate {
|
||||
|
||||
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||
if let _ = self.selectedTokenIndex {
|
||||
self.selectedTokenIndex = nil
|
||||
if let touch = touches.first, let gestureRecognizers = touch.gestureRecognizers {
|
||||
let point = touch.location(in: self.tokenContainerNode.view)
|
||||
for (_, tokenNode) in self.tokenNodes {
|
||||
@ -562,6 +572,7 @@ private class SearchBarTextField: UITextField, UIScrollViewDelegate {
|
||||
return
|
||||
}
|
||||
}
|
||||
self.selectedTokenIndex = nil
|
||||
for gesture in gestureRecognizers {
|
||||
if gesture is UITapGestureRecognizer, gesture.isEnabled {
|
||||
gesture.isEnabled = false
|
||||
@ -931,7 +942,9 @@ public class SearchBarNode: ASDisplayNode, UITextFieldDelegate {
|
||||
}
|
||||
|
||||
public func activate() {
|
||||
self.textField.becomeFirstResponder()
|
||||
if !self.textField.isFirstResponder {
|
||||
let _ = self.textField.becomeFirstResponder()
|
||||
}
|
||||
}
|
||||
|
||||
public func animateIn(from node: SearchBarPlaceholderNode, duration: Double, timingFunction: String) {
|
||||
@ -1102,14 +1115,18 @@ public class SearchBarNode: ASDisplayNode, UITextFieldDelegate {
|
||||
}
|
||||
|
||||
public func selectAll() {
|
||||
self.textField.becomeFirstResponder()
|
||||
if !self.textField.isFirstResponder {
|
||||
let _ = self.textField.becomeFirstResponder()
|
||||
}
|
||||
self.textField.selectAll(nil)
|
||||
}
|
||||
|
||||
public func selectLastToken() {
|
||||
if !self.textField.tokens.isEmpty {
|
||||
self.textField.selectedTokenIndex = self.textField.tokens.count - 1
|
||||
self.textField.becomeFirstResponder()
|
||||
if !self.textField.isFirstResponder {
|
||||
let _ = self.textField.becomeFirstResponder()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user