Explorar o código

【toolbar】修复pop不关闭的问题

tangchao hai 1 ano
pai
achega
b182066b54

+ 64 - 16
PDF Office/PDF Master.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -340,22 +340,6 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "BA35DAFD-2DD8-4E4C-9E39-70FC85E0D7C4"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/Toolbar/KMToolbarView.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "113"
-            endingLineNumber = "113"
-            landmarkName = "_moreButtonAction()"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -436,5 +420,69 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "DD275567-F268-4715-837D-63AE0EA12542"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/PDFWindowController/Toolbar/KMToolbarItemView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "388"
+            endingLineNumber = "388"
+            landmarkName = "_windowClosedPop(sender:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "D5F63B48-A4E7-4EF4-AE93-7E42DEBFA4B0"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/PDFWindowController/Toolbar/KMToolbarItemView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "387"
+            endingLineNumber = "387"
+            landmarkName = "_windowClosedPop(sender:)"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "D5F63B48-A4E7-4EF4-AE93-7E42DEBFA4B0 - e7ce9e83ae992573"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMToolbarItemView._windowClosedPop(sender: Foundation.Notification) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/work/tangchao/git/PDFOffice/PDF%20Office/PDF%20Master/Class/PDFWindowController/Toolbar/KMToolbarItemView.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "387"
+                  endingLineNumber = "387"
+                  offsetFromSymbolStart = "104">
+               </Location>
+               <Location
+                  uuid = "D5F63B48-A4E7-4EF4-AE93-7E42DEBFA4B0 - e7ce9e83ae992573"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMToolbarItemView._windowClosedPop(sender: Foundation.Notification) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/work/tangchao/git/PDFOffice/PDF%20Office/PDF%20Master/Class/PDFWindowController/Toolbar/KMToolbarItemView.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "387"
+                  endingLineNumber = "387"
+                  offsetFromSymbolStart = "844">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 9 - 2
PDF Office/PDF Master/Class/Common/Category/NSWindow+KMExtension.swift

@@ -35,8 +35,15 @@ extension NSWindow {
         super.mouseMoved(with: event)
         
         let point = event.locationInWindow
-        if let data = event.window?.isKind(of: NSClassFromString("_NSPopoverWindow")!), data {
-            if (CGRectContainsPoint(self.sourcesRect, point)) {
+        var need = true
+        if let data = event.window?.isKind(of: NSClassFromString("_NSPopoverWindow")!) {
+            need = !data
+        } else {
+            need = true
+        }
+        if (need) {
+            if (CGRectContainsPoint(self.sourcesRect, point) == false) {
+                KMPrint("kk-point: \(point), \(self.sourcesRect)")
                 if self.popover != nil {
                     NotificationCenter.default.post(name: Notification.Name("KMPopOverClosedByWindowNotification"), object: self.popover!)
                     self.popover?.close()

+ 14 - 5
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarItemView.swift

@@ -325,7 +325,8 @@ extension KMToolbarItemView {
             }
         }
         if (self.needExpandAction) {
-            self.needExpandButton.image = NSImage(named: "KMImageNameUXIconBtnTriDownSel")
+            // KMImageNameUXIconBtnTriDownSel
+            self.needExpandButton.image = NSImage(named: "KMImageNameUXIconBtnTriDownNor")
             self._showPop(self)
         }else if (self.isShowCustomToolTip) {
             self.perform(#selector(_showHUDHint), with: nil, afterDelay: 0.1)
@@ -389,6 +390,9 @@ extension KMToolbarItemView {
     }
     
     private func _showPop(_ sender: NSView) {
+        if (self._popOver != nil) {
+            return
+        }
         let menuViewController = KMCustomButtonPopMenuViewController()
         menuViewController.delegate = self
         menuViewController.dataSources = self
@@ -400,13 +404,14 @@ extension KMToolbarItemView {
         self.popOver?.contentSize = menuViewController.view.frame.size
         
         var sourcesRect = sender.bounds
-        sourcesRect.size = sender.convert(sourcesRect.size, to: nil)
-        sourcesRect.origin.y -= 20
+        sourcesRect = sender.convert(sourcesRect, to: nil)
+//        sourcesRect.size = sender.convert(sourcesRect.size, to: nil)
+        sourcesRect.origin.y += 20
         sourcesRect.size.height += 20
         self.window?.popover = self.popOver
         self.window?.sourcesRect = sourcesRect
         
-        self.popOver?.show(relativeTo: CGRectInset(self.bounds, 0, 5), of: self, preferredEdge: .maxY)
+        self.popOver?.show(relativeTo: CGRectInset(self.bounds, 0, 5), of: self, preferredEdge: .minY)
     }
     
     private func _closePop() {
@@ -590,7 +595,11 @@ extension KMToolbarItemView {
 }
 
 extension KMToolbarItemView: NSPopoverDelegate {
-    
+    func popoverDidClose(_ notification: Notification) {
+        if let data = self.popOver?.isEqual(to: notification.object), data {
+            self._closePop()
+        }
+    }
 }
 
 extension KMToolbarItemView: KMCustomButtonPopMenuViewControllerDelegate, KMCustomButtonPopMenuViewControllerDataSources {

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarView.swift

@@ -105,7 +105,7 @@ private let KMToolbarItemSpace = 8.0
     }
     
     override func mouseMoved(with event: NSEvent) {
-        self.window?.mouseMoved(with: event)
+//        self.window?.mouseMoved(with: event)
         super.mouseMoved(with: event)
     }