|
@@ -60,6 +60,8 @@ class KMSearchViewController: NSViewController {
|
|
|
var searchResults : [KMSearchMode] = []
|
|
|
var sortResults : [KMSearchMode] = []
|
|
|
var isCancelCell : String = ""
|
|
|
+ var previousSearchString: String = ""
|
|
|
+ var previousCase: Bool = true
|
|
|
open weak var delegate: KMSearchViewControllerDelegate?
|
|
|
|
|
|
override func viewDidLoad() {
|
|
@@ -115,6 +117,7 @@ class KMSearchViewController: NSViewController {
|
|
|
} else {
|
|
|
self.isCase = UserDefaults.standard.bool(forKey: "CPDFOfficeSearchIgnoreCaseKey")
|
|
|
}
|
|
|
+ self.previousCase = self.isCase
|
|
|
|
|
|
self.findTipTextField.stringValue = NSLocalizedString("Search", comment: "")
|
|
|
self.findTipTextField.font = NSFont.SFProTextSemibold(14.0)
|
|
@@ -199,7 +202,7 @@ extension KMSearchViewController: NSSearchFieldDelegate {
|
|
|
var searchs : [String] = UserDefaults.standard.object(forKey: CPDFOfficeSearchHistoryKey) as? [String] ?? []
|
|
|
let searchString = self.searchTextField.stringValue
|
|
|
|
|
|
- if searchString != "" {
|
|
|
+ if searchString != "" && (self.previousSearchString != searchString || self.isCase != self.previousCase) {
|
|
|
//缓存搜索词汇是否重复
|
|
|
if searchs.contains(searchString) {
|
|
|
searchs.removeObject(searchString)
|
|
@@ -221,6 +224,9 @@ extension KMSearchViewController: NSSearchFieldDelegate {
|
|
|
}
|
|
|
self.outlineView.expandItem(nil, expandChildren: true)
|
|
|
self.selectAllSearchModel()
|
|
|
+
|
|
|
+ self.previousSearchString = searchString
|
|
|
+ self.previousCase = self.isCase
|
|
|
}
|
|
|
|
|
|
//移除响应
|
|
@@ -291,14 +297,16 @@ extension KMSearchViewController {
|
|
|
}
|
|
|
|
|
|
@IBAction func searchHistoryAction(sender: NSMenuItem) {
|
|
|
- self.delegate?.searchAction?(searchString: sender.title, isCase:self.isCase)
|
|
|
+// self.delegate?.searchAction?(searchString: sender.title, isCase:self.isCase)
|
|
|
self.searchTextField.stringValue = sender.title
|
|
|
+ self.searchDoneAction()
|
|
|
}
|
|
|
|
|
|
@IBAction func caseSetAction(sender:Any) {
|
|
|
self.isCase = !self.isCase
|
|
|
UserDefaults.standard.set(self.isCase, forKey: "CPDFOfficeSearchIgnoreCaseKey")
|
|
|
self.updateSearchMenu()
|
|
|
+ self.searchDoneAction()
|
|
|
}
|
|
|
|
|
|
@IBAction func clearSearchHistoryAction(sender:Any) {
|
|
@@ -545,7 +553,7 @@ extension KMSearchViewController: NSTextFieldDelegate {
|
|
|
func controlTextDidEndEditing(_ obj: Notification) {
|
|
|
let object = obj.object as! NSTextField
|
|
|
if object == self.searchTextField {
|
|
|
- self.searchDoneAction()
|
|
|
+// self.searchDoneAction()
|
|
|
// self.sortResults = []
|
|
|
// self.reloadData()
|
|
|
}
|
|
@@ -562,6 +570,22 @@ extension KMSearchViewController: NSTextFieldDelegate {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ func control(_ control: NSControl, textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {
|
|
|
+ switch commandSelector {
|
|
|
+ case #selector(NSResponder.insertNewline(_:)):
|
|
|
+ if let inputView = control as? NSTextField {
|
|
|
+ //当当前TextField按下enter
|
|
|
+ if inputView == searchTextField {
|
|
|
+ print("按下 enter")
|
|
|
+ self.searchDoneAction()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ default:
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
extension KMSearchViewController: NSMenuDelegate, NSMenuItemValidation {
|