Browse Source

【2025】【综合】ESC快捷键完善

niehaoyu 2 months ago
parent
commit
923cf7f0de

+ 16 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFListViewExtension/CPDFListView+KeyEvent.m

@@ -99,6 +99,22 @@
         [self setNeedsDisplayAnnotationViewForVisiblePages];
     } else if ([self.activeAnnotation isMovable] && isArrow && ((modifiers & ~NSEventModifierFlagShift) == 0)) {
         [self doMoveActiveAnnotationForKey:eventChar byAmount:(modifiers & NSEventModifierFlagShift) ? 10.0 : 1.0];
+    } else if (self.toolMode == CEditPDFToolMode) {
+        CAddEditingAreaType addType = [self shouAddEditAreaType];
+        if (self.editingAreas.count > 0) {
+            [self updateEditingAreas:nil];
+            return ;
+        } else {
+            if (addType & CAddEditingAreaTypeText) {
+                [self setShouAddEditAreaType:CAddEditingAreaTypeNone];
+            } else if (addType & CAddEditingAreaTypeImage) {
+                [self setShouAddEditAreaType:CAddEditingAreaTypeNone];
+            }
+            if (self.pdfListViewDelegate && [self.pdfListViewDelegate respondsToSelector:@selector(PDFListViewAddEditAreaTypeChanged:)]) {
+                [self.pdfListViewDelegate PDFListViewAddEditAreaTypeChanged:self];
+            }
+            return ;
+        }
     } else if ([self.activeAnnotation isResizable] && isArrow && (modifiers == (NSEventModifierFlagOption | NSEventModifierFlagControl) || modifiers == (NSEventModifierFlagShift | NSEventModifierFlagControl))) {
         [self doResizeActiveAnnotationForKey:eventChar byAmount:(modifiers & NSEventModifierFlagShift) ? 10.0 : 1.0];
     } else if (isFreeText  && eventChar == CPDFListEscapeCharacter && [self isEditWithCurrentFreeText:self.activeAnnotation]) {

+ 2 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListView.h

@@ -403,4 +403,6 @@ enum {
 
 - (void)PDFListViewAnnotationChangeColor:(NSColor *)color forActiveAnnotation:(CPDFAnnotation *)annotation;
 
+- (void)PDFListViewAddEditAreaTypeChanged:(CPDFListView *)pdfListView;
+
 @end

+ 20 - 12
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -4965,7 +4965,7 @@ extension KMMainViewController: CPDFViewDelegate,CPDFListViewDelegate {
             (pdfView as! CPDFListView).isEditImage = false
         }
         
-        if pdfView.editingAreas().count > 0 {
+        if let areas = pdfView.editingAreas(), areas.count > 0 {
             if viewManager.showRightSide == false {
                 viewManager.showRightSide = true
                 self.refreshToolbarRightViewInfo()
@@ -5082,19 +5082,16 @@ extension KMMainViewController: CPDFViewDelegate,CPDFListViewDelegate {
     }
     
     func pdfViewEditingAddTextArea(_ pdfView: CPDFView!, add page: CPDFPage!, add rect: CGRect) {
-        
-        if rect.size.width < 5 && rect.size.height < 5 {
-            let areas = self.listView.km_EditingAreas()
-            if let area = areas.last {
-                if let data = area as? CPDFEditTextArea {
-                    if let str = data.editTextAreaString(), str.isEmpty {
-                        self.listView.remove(with: area)
-                    } else {
-                        self.listView.updateEditing([])
-                    }
+        let areas = self.listView.km_EditingAreas()
+        if let area = areas.last {
+            if let data = area as? CPDFEditTextArea {
+                if let str = data.editTextAreaString(), str.isEmpty {
+                    self.listView.remove(with: [area])
+                } else {
+                    self.listView.updateEditing([])
+                    return
                 }
             }
-            return
         }
         
         var newRect = rect
@@ -5942,6 +5939,17 @@ extension KMMainViewController: CPDFViewDelegate,CPDFListViewDelegate {
         }
         botaViewController?.reloadData()
     }
+    
+    func pdfListViewAddEditAreaTypeChanged(_ pdfListView: CPDFListView!) {
+        if self.listView.shouAddEditAreaType() != .text && self.listView.shouAddEditAreaType() != .image {
+            if viewManager.subToolMode != .None {
+                viewManager.subToolMode = .None
+                pdfToolbarController?.cancelSelectedSecondToolbarItems(viewManager.toolMode)
+                pdfToolbarController?.refreshSecondToolbarItemsState()
+            }
+        }
+        
+    }
         
     //MARK: -Crop
     func pdfListViewChangedSelectionOrMagnification(_ pdfListView: CPDFListView!) {