Revision: 12647 http://sourceforge.net/p/skim-app/code/12647 Author: hofman Date: 2021-12-27 17:21:23 +0000 (Mon, 27 Dec 2021) Log Message: ----------- Add a temporary toolmode for pdfview, to allow setting a selection after choosing an action that requires aselection. Activated for zoom to selection and adding markup notes.
Modified Paths: -------------- trunk/SKMainToolbarController.m trunk/SKMainTouchBarController.m trunk/SKMainWindow.h trunk/SKMainWindow.m trunk/SKMainWindowController_Actions.m trunk/SKMainWindowController_UI.h trunk/SKMainWindowController_UI.m trunk/SKPDFView.h trunk/SKPDFView.m Modified: trunk/SKMainToolbarController.m =================================================================== --- trunk/SKMainToolbarController.m 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKMainToolbarController.m 2021-12-27 17:21:23 UTC (rev 12647) @@ -1019,7 +1019,7 @@ } else if ([identifier isEqualToString:SKDocumentToolbarZoomToFitItemIdentifier]) { return [mainController.pdfView.document isLocked] == NO && [mainController hasOverview] == NO && [mainController.pdfView autoScales] == NO; } else if ([identifier isEqualToString:SKDocumentToolbarZoomToSelectionItemIdentifier]) { - return [mainController.pdfView.document isLocked] == NO && [mainController hasOverview] == NO && NSIsEmptyRect([mainController.pdfView currentSelectionRect]) == NO; + return [mainController.pdfView.document isLocked] == NO && [mainController hasOverview] == NO && (NSIsEmptyRect([mainController.pdfView currentSelectionRect]) == NO || [mainController.pdfView toolMode] != SKSelectToolMode); } else if ([identifier isEqualToString:SKDocumentToolbarZoomInOutItemIdentifier] || [identifier isEqualToString:SKDocumentToolbarZoomInActualOutItemIdentifier] || [identifier isEqualToString:SKDocumentToolbarAutoScalesItemIdentifier] || @@ -1040,14 +1040,10 @@ } else if ([identifier isEqualToString:SKDocumentToolbarNewTextNoteItemIdentifier] || [identifier isEqualToString:SKDocumentToolbarNewCircleNoteItemIdentifier] || [identifier isEqualToString:SKDocumentToolbarNewLineItemIdentifier]) { return ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController hasOverview] == NO && [mainController.pdfView hideNotes] == NO && [mainController.pdfView.document allowsNotes]; } else if ([identifier isEqualToString:SKDocumentToolbarNewMarkupItemIdentifier]) { - return ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController hasOverview] == NO && [mainController.pdfView hideNotes] == NO && [mainController.pdfView.document allowsNotes] && [[mainController.pdfView currentSelection] hasCharacters]; + return ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController hasOverview] == NO && [mainController.pdfView hideNotes] == NO && [mainController.pdfView.document allowsNotes]; } else if ([identifier isEqualToString:SKDocumentToolbarNewLineItemIdentifier]) { return ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController hasOverview] == NO && [mainController.pdfView hideNotes] == NO && [mainController.pdfView.document allowsNotes] && [[mainController.pdfView currentSelection] hasCharacters]; } else if ([identifier isEqualToString:SKDocumentToolbarNewNoteItemIdentifier]) { - BOOL enabled = ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController hasOverview] == NO && [mainController.pdfView hideNotes] == NO && [[mainController.pdfView currentSelection] hasCharacters]; - [noteButton setEnabled:enabled forSegment:SKHighlightNote]; - [noteButton setEnabled:enabled forSegment:SKUnderlineNote]; - [noteButton setEnabled:enabled forSegment:SKStrikeOutNote]; return ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController hasOverview] == NO && [mainController.pdfView hideNotes] == NO && [mainController.pdfView.document allowsNotes]; } else if ([identifier isEqualToString:SKDocumentToolbarFullScreenItemIdentifier]) { return [mainController canEnterFullscreen] || [mainController canExitFullscreen]; @@ -1075,7 +1071,7 @@ return [mainController interactionMode] != SKPresentationMode && [mainController hasOverview] == NO && [mainController.pdfView.document allowsNotes] && ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController.pdfView hideNotes] == NO; } else if (action == @selector(createNewMarkupNote:)) { [menuItem setState:[[markupNoteButton cell] tagForSegment:0] == [menuItem tag] ? NSOnState : NSOffState]; - return [mainController interactionMode] != SKPresentationMode && [mainController hasOverview] == NO && [mainController.pdfView.document allowsNotes] && ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController.pdfView hideNotes] == NO && [[mainController.pdfView currentSelection] hasCharacters]; + return [mainController interactionMode] != SKPresentationMode && [mainController hasOverview] == NO && [mainController.pdfView.document allowsNotes] && ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController.pdfView hideNotes] == NO; } else if (action == @selector(toggleFullScreen:)) { return [mainController canEnterFullscreen] || [mainController canExitFullscreen]; } else if (action == @selector(togglePresentation:)) { @@ -1351,6 +1347,26 @@ [toolModeButton selectSegmentWithTag:[mainController.pdfView toolMode]]; } +- (void)handleTemporaryToolModeChangedNotification:(NSNotification *)notification { + SKTemporaryToolMode mode = [mainController.pdfView temporaryToolMode]; + SKToolMode toolMode = [mainController.pdfView toolMode]; + NSString *name = nil; + if (mode == SKNoToolMode) { + switch (toolMode) { + case SKTextToolMode : name = SKImageNameToolbarTextTool; break; + case SKMoveToolMode : name = SKImageNameToolbarMoveTool; break; + case SKMagnifyToolMode : name = SKImageNameToolbarMagnifyTool; break; + case SKSelectToolMode : name = SKImageNameToolbarSelectTool; break; + case SKNoteToolMode : name = noteToolImageNames[mainController.pdfView.annotationMode]; break; + } + } else if (mode == SKZoomToolMode) { + name = SKImageNameToolbarZoomIn; + } else { + name = noteToolImageNames[mode]; + } + [toolModeButton setImage:[NSImage imageNamed:name] forSegment:toolMode]; +} + - (void)handleDisplayBoxChangedNotification:(NSNotification *)notification { [displayBoxButton selectSegmentWithTag:[mainController.pdfView displayBox]]; } @@ -1414,6 +1430,8 @@ name:SKPDFViewToolModeChangedNotification object:mainController.pdfView]; [nc addObserver:self selector:@selector(handleAnnotationModeChangedNotification:) name:SKPDFViewAnnotationModeChangedNotification object:mainController.pdfView]; + [nc addObserver:self selector:@selector(handleTemporaryToolModeChangedNotification:) + name:SKPDFViewTemporaryToolModeChangedNotification object:mainController.pdfView]; [nc addObserver:self selector:@selector(handlePacerStartedOrStoppedNotification:) name:SKPDFViewPacerStartedOrStoppedNotification object:mainController.pdfView]; [nc addObserver:self selector:@selector(handleDisplayModeChangedNotification:) Modified: trunk/SKMainTouchBarController.m =================================================================== --- trunk/SKMainTouchBarController.m 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKMainTouchBarController.m 2021-12-27 17:21:23 UTC (rev 12647) @@ -82,7 +82,6 @@ - (void)handlePageChangedNotification:(NSNotification *)notification; - (void)handleToolModeChangedNotification:(NSNotification *)notification; - (void)handleAnnotationModeChangedNotification:(NSNotification *)notification; -- (void)handleSelectionChangedNotification:(NSNotification *)notification; @end @@ -248,7 +247,6 @@ noteButton = [[NSSegmentedControl segmentedControlWithImages:images trackingMode:NSSegmentSwitchTrackingMomentary target:self action:@selector(createNewNote:)] retain]; #pragma clang diagnostic pop [self handleToolModeChangedNotification:nil]; - [self handleSelectionChangedNotification:nil]; [self interactionModeChanged]; } item = [[[NSClassFromString(@"NSCustomTouchBarItem") alloc] initWithIdentifier:identifier] autorelease]; @@ -431,13 +429,6 @@ [annotationModeButton selectSegmentWithTag:[mainController.pdfView annotationMode]]; } -- (void)handleSelectionChangedNotification:(NSNotification *)notification { - BOOL enabled = ([mainController.pdfView toolMode] == SKTextToolMode || [mainController.pdfView toolMode] == SKNoteToolMode) && [mainController.pdfView hideNotes] == NO && [[mainController.pdfView currentSelection] hasCharacters]; - [noteButton setEnabled:enabled forSegment:SKHighlightNote]; - [noteButton setEnabled:enabled forSegment:SKUnderlineNote]; - [noteButton setEnabled:enabled forSegment:SKStrikeOutNote]; -} - - (void)interactionModeChanged { SKInteractionMode mode = [mainController interactionMode]; @@ -472,8 +463,6 @@ name:SKPDFViewToolModeChangedNotification object:mainController.pdfView]; [nc addObserver:self selector:@selector(handleAnnotationModeChangedNotification:) name:SKPDFViewAnnotationModeChangedNotification object:mainController.pdfView]; - [nc addObserver:self selector:@selector(handleSelectionChangedNotification:) - name:SKPDFViewCurrentSelectionChangedNotification object:mainController.pdfView]; } @end Modified: trunk/SKMainWindow.h =================================================================== --- trunk/SKMainWindow.h 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKMainWindow.h 2021-12-27 17:21:23 UTC (rev 12647) @@ -39,8 +39,18 @@ #import <Cocoa/Cocoa.h> +@protocol SKMainWindowDelegate <NSWindowDelegate> +@optional +- (void)windowWillSendEvent:(NSEvent *)event; +@end + @interface SKMainWindow : NSWindow { BOOL disableConstrainedFrame; } + @property (nonatomic) BOOL disableConstrainedFrame; + +- (id<SKMainWindowDelegate>)delegate; +- (void)setDelegate:(id<SKMainWindowDelegate>)newDelegate; + @end Modified: trunk/SKMainWindow.m =================================================================== --- trunk/SKMainWindow.m 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKMainWindow.m 2021-12-27 17:21:23 UTC (rev 12647) @@ -47,7 +47,8 @@ - (void)sendEvent:(NSEvent *)theEvent { if ([theEvent type] == NSLeftMouseDown || [theEvent type] == NSRightMouseDown || [theEvent type] == NSKeyDown) { - [[SKImageToolTipWindow sharedToolTipWindow] orderOut:nil]; + if ([[self delegate] respondsToSelector:@selector(windowWillSendEvent:)]) + [[self delegate] windowWillSendEvent:theEvent]; } else if ([theEvent type] == NSScrollWheel && ([theEvent modifierFlags] & NSAlternateKeyMask)) { NSResponder *target = (NSResponder *)[[self contentView] hitTest:[theEvent locationInWindow]] ?: (NSResponder *)self; while (target && [target respondsToSelector:@selector(magnifyWheel:)] == NO) @@ -79,4 +80,12 @@ return [self disableConstrainedFrame] ? frameRect : [super constrainFrameRect:frameRect toScreen:screen]; } +- (id<SKMainWindowDelegate>)delegate { + return (id<SKMainWindowDelegate>)[super delegate]; +} + +- (void)setDelegate:(id<SKMainWindowDelegate>)newDelegate { + [super setDelegate:newDelegate]; +} + @end Modified: trunk/SKMainWindowController_Actions.m =================================================================== --- trunk/SKMainWindowController_Actions.m 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKMainWindowController_Actions.m 2021-12-27 17:21:23 UTC (rev 12647) @@ -420,11 +420,15 @@ } - (IBAction)doZoomToSelection:(id)sender { - NSRect selRect = [pdfView currentSelectionRect]; - PDFPage *page = [pdfView currentPage]; - if (NSIsEmptyRect(selRect) == NO && page) - [pdfView zoomToRect:selRect onPage:page]; - else NSBeep(); + if ([pdfView toolMode] == SKSelectToolMode) { + NSRect selRect = [pdfView currentSelectionRect]; + PDFPage *page = [pdfView currentPage]; + if (NSIsEmptyRect(selRect) == NO && page) + [pdfView zoomToRect:selRect onPage:page]; + else NSBeep(); + } else { + [pdfView setTemporaryToolMode:SKZoomToolMode]; + } } - (IBAction)doZoomToFit:(id)sender { Modified: trunk/SKMainWindowController_UI.h =================================================================== --- trunk/SKMainWindowController_UI.h 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKMainWindowController_UI.h 2021-12-27 17:21:23 UTC (rev 12647) @@ -42,9 +42,10 @@ #import "SKOutlineView.h" #import "SKNoteOutlineView.h" #import "SKNoteTypeSheetController.h" +#import "SKMainWindow.h" -@interface SKMainWindowController (UI) <NSWindowDelegate, SKTableViewDelegate, NSTableViewDataSource, SKOutlineViewDelegate, SKNoteOutlineViewDelegate, NSOutlineViewDataSource, NSTextFieldDelegate, SKNoteTypeSheetControllerDelegate, NSMenuDelegate> +@interface SKMainWindowController (UI) <SKMainWindowDelegate, SKTableViewDelegate, NSTableViewDataSource, SKOutlineViewDelegate, SKNoteOutlineViewDelegate, NSOutlineViewDataSource, NSTextFieldDelegate, SKNoteTypeSheetControllerDelegate, NSMenuDelegate> - (void)registerForNotifications; Modified: trunk/SKMainWindowController_UI.m =================================================================== --- trunk/SKMainWindowController_UI.m 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKMainWindowController_UI.m 2021-12-27 17:21:23 UTC (rev 12647) @@ -314,6 +314,13 @@ return nil; } +- (void)windowWillSendEvent:(NSEvent *)event { + [[SKImageToolTipWindow sharedToolTipWindow] orderOut:nil]; + + if ([pdfView temporaryToolMode] != SKNoToolMode && [pdfView window] && ([event type] != NSLeftMouseDown || NO == NSPointInRect([event locationInView:pdfView], [pdfView bounds]))) + [pdfView setTemporaryToolMode:SKNoToolMode]; +} + #pragma mark Page history highlights #define MAX_HIGHLIGHTS 5 @@ -1598,8 +1605,7 @@ - (BOOL)validateMenuItem:(NSMenuItem *)menuItem { SEL action = [menuItem action]; if (action == @selector(createNewNote:)) { - BOOL isMarkup = [menuItem tag] == SKHighlightNote || [menuItem tag] == SKUnderlineNote || [menuItem tag] == SKStrikeOutNote; - return [self interactionMode] != SKPresentationMode && [self hasOverview] == NO && [[self pdfDocument] allowsNotes] && ([pdfView toolMode] == SKTextToolMode || [pdfView toolMode] == SKNoteToolMode) && [pdfView hideNotes] == NO && (isMarkup == NO || [[pdfView currentSelection] hasCharacters]); + return [self interactionMode] != SKPresentationMode && [self hasOverview] == NO && [[self pdfDocument] allowsNotes] && ([pdfView toolMode] == SKTextToolMode || [pdfView toolMode] == SKNoteToolMode) && [pdfView hideNotes] == NO; } else if (action == @selector(editNote:)) { PDFAnnotation *annotation = [pdfView activeAnnotation]; return [self interactionMode] != SKPresentationMode && [self hasOverview] == NO && [annotation isSkimNote] && ([annotation isEditable]); @@ -1679,7 +1685,7 @@ } else if (action == @selector(doZoomToPhysicalSize:)) { return [self interactionMode] != SKPresentationMode && [self hasOverview] == NO && [[self pdfDocument] isLocked] == NO && ([pdfView autoScales] || fabs([pdfView physicalScaleFactor] - 1.0 ) > 0.01); } else if (action == @selector(doZoomToSelection:)) { - return [self interactionMode] != SKPresentationMode && [self hasOverview] == NO && [[self pdfDocument] isLocked] == NO && NSIsEmptyRect([pdfView currentSelectionRect]) == NO; + return [self interactionMode] != SKPresentationMode && [self hasOverview] == NO && [[self pdfDocument] isLocked] == NO && (NSIsEmptyRect([pdfView currentSelectionRect]) == NO || [pdfView toolMode] != SKSelectToolMode); } else if (action == @selector(doZoomToFit:)) { return [self interactionMode] != SKPresentationMode && [self hasOverview] == NO && [[self pdfDocument] isLocked] == NO && [pdfView autoScales] == NO; } else if (action == @selector(alternateZoomToFit:)) { Modified: trunk/SKPDFView.h =================================================================== --- trunk/SKPDFView.h 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKPDFView.h 2021-12-27 17:21:23 UTC (rev 12647) @@ -49,6 +49,7 @@ extern NSString *SKPDFViewToolModeChangedNotification; extern NSString *SKPDFViewToolModeChangedNotification; extern NSString *SKPDFViewAnnotationModeChangedNotification; +extern NSString *SKPDFViewTemporaryToolModeChangedNotification; extern NSString *SKPDFViewActiveAnnotationDidChangeNotification; extern NSString *SKPDFViewDidAddAnnotationNotification; extern NSString *SKPDFViewDidRemoveAnnotationNotification; @@ -84,6 +85,14 @@ SKInkNote }; +typedef NS_ENUM(NSInteger, SKTemporaryToolMode) { + SKNoToolMode, + SKZoomToolMode, + SKHighlightToolMode = SKHighlightNote, + SKUnderlineToolMode = SKUnderlineNote, + SKStrikeOutToolMode = SKStrikeOutNote +}; + enum { SKDragArea = 1 << 16, SKResizeUpDownArea = 1 << 17, @@ -104,6 +113,7 @@ @interface SKPDFView : SKBasePDFView { SKToolMode toolMode; + SKTemporaryToolMode temporaryToolMode; SKNoteType annotationMode; SKInteractionMode interactionMode; @@ -161,6 +171,7 @@ @property (nonatomic) BOOL displaysRightToLeft; @property (nonatomic) SKToolMode toolMode; @property (nonatomic) SKNoteType annotationMode; +@property (nonatomic) SKTemporaryToolMode temporaryToolMode; @property (nonatomic) SKInteractionMode interactionMode; @property (nonatomic, retain) PDFAnnotation *activeAnnotation; @property (nonatomic, readonly, getter=isEditing) BOOL editing; Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2021-12-27 10:27:04 UTC (rev 12646) +++ trunk/SKPDFView.m 2021-12-27 17:21:23 UTC (rev 12647) @@ -119,6 +119,7 @@ NSString *SKPDFViewDisplaysRTLChangedNotification = @"SKPDFViewDisplaysRTLChangedNotification"; NSString *SKPDFViewAutoScalesChangedNotification = @"SKPDFViewAutoScalesChangedNotification"; NSString *SKPDFViewToolModeChangedNotification = @"SKPDFViewToolModeChangedNotification"; +NSString *SKPDFViewTemporaryToolModeChangedNotification = @"SKPDFViewTemporaryToolModeChangedNotification"; NSString *SKPDFViewAnnotationModeChangedNotification = @"SKPDFViewAnnotationModeChangedNotification"; NSString *SKPDFViewActiveAnnotationDidChangeNotification = @"SKPDFViewActiveAnnotationDidChangeNotification"; NSString *SKPDFViewDidAddAnnotationNotification = @"SKPDFViewDidAddAnnotationNotification"; @@ -254,7 +255,7 @@ @implementation SKPDFView -@synthesize toolMode, annotationMode, interactionMode, activeAnnotation, readingBar, pacerSpeed, transitionController, typeSelectHelper, syncDot, highlightAnnotation; +@synthesize toolMode, annotationMode, temporaryToolMode, interactionMode, activeAnnotation, readingBar, pacerSpeed, transitionController, typeSelectHelper, syncDot, highlightAnnotation; @synthesize currentMagnification=magnification, zooming; @dynamic extendedDisplayMode, displaysHorizontally, displaysRightToLeft, hideNotes, hasReadingBar, hasPacer, currentSelectionPage, currentSelectionRect, needsRewind, editing; @@ -601,6 +602,7 @@ - (void)setToolMode:(SKToolMode)newToolMode { if (toolMode != newToolMode) { + [self setTemporaryToolMode:SKNoToolMode]; if (toolMode == SKTextToolMode || toolMode == SKNoteToolMode) { if (newToolMode != SKTextToolMode) { if (newToolMode != SKNoteToolMode && activeAnnotation) @@ -639,8 +641,16 @@ } } +- (void)setTemporaryToolMode:(SKTemporaryToolMode)newTemporaryToolMode { + if (temporaryToolMode != newTemporaryToolMode) { + temporaryToolMode = newTemporaryToolMode; + [[NSNotificationCenter defaultCenter] postNotificationName:SKPDFViewTemporaryToolModeChangedNotification object:self]; + } +} + - (void)setInteractionMode:(SKInteractionMode)newInteractionMode { if (interactionMode != newInteractionMode) { + [self setTemporaryToolMode:SKNoToolMode]; if (interactionMode == SKPresentationMode) { pdfvFlags.cursorHidden = NO; [NSCursor setHiddenUntilMouseMoves:NO]; @@ -1697,7 +1707,10 @@ NSUInteger modifiers = [theEvent standardModifierFlags]; PDFAreaOfInterest area = [self areaOfInterestForMouse:theEvent]; PDFAnnotation *wasActiveAnnotation = activeAnnotation; + SKTemporaryToolMode tempToolMode = temporaryToolMode; + [self setTemporaryToolMode:SKNoToolMode]; + if ([[self document] isLocked]) { [super mouseDown:theEvent]; } else if (interactionMode == SKPresentationMode) { @@ -1747,8 +1760,20 @@ [self updateMagnifyWithEvent:nil]; } else if ((area & kPDFPageArea) == 0) { [self doDragWithEvent:theEvent]; + } else if (tempToolMode == SKZoomToolMode && modifiers == 0) { + BOOL wantsLoupe = [self hideLoupeWindow]; + [self doMarqueeZoomWithEvent:theEvent]; + if (wantsLoupe) + [self updateMagnifyWithEvent:nil]; + } else if (tempToolMode != SKNoToolMode && (modifiers & NSCommandKeyMask) == 0) { + [self setActiveAnnotation:nil]; + [super mouseDown:theEvent]; + if ([[self currentSelection] hasCharacters]) { + [self addAnnotationWithType:(SKNoteType)tempToolMode]; + [self setCurrentSelection:nil]; + } } else if (toolMode == SKMoveToolMode) { - [self setCurrentSelection:nil]; + [self setCurrentSelection:nil]; if ((area & kPDFLinkArea)) [super mouseDown:theEvent]; else @@ -2580,7 +2605,11 @@ } - (void)addAnnotationWithType:(SKNoteType)annotationType { - [self addAnnotationWithType:annotationType context:nil]; + if ((toolMode == SKTextToolMode || toolMode == SKNoteToolMode) && annotationType >= SKHighlightNote && annotationType <= SKStrikeOutNote && [[self currentSelection] hasCharacters] == NO) { + [self setTemporaryToolMode:(SKTemporaryToolMode)annotationType]; + } else { + [self addAnnotationWithType:annotationType context:nil]; + } } - (void)addAnnotationForContext:(id)sender { @@ -3036,6 +3065,7 @@ } if (activeAnnotation) [self setNeedsDisplayForAnnotation:activeAnnotation]; + [self setTemporaryToolMode:SKNoToolMode]; } #pragma mark Key and window changes @@ -3054,6 +3084,8 @@ [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(doAutoHide) object:nil]; } + [self setTemporaryToolMode:SKNoToolMode]; + if (RUNNING_BEFORE(10_12) || RUNNING_AFTER(10_14)) { NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; NSWindow *oldWindow = [self window]; @@ -5214,8 +5246,10 @@ area &= (kPDFPageArea | kPDFLinkArea); } else if ((modifiers == NSCommandKeyMask || modifiers == (NSCommandKeyMask | NSShiftKeyMask) || modifiers == (NSCommandKeyMask | NSAlternateKeyMask))) { area = (area & kPDFPageArea) | SKSpecialToolArea; + } else if ((modifiers & NSCommandKeyMask) == 0 && temporaryToolMode != SKNoToolMode) { + area = (area & kPDFPageArea) | SKSpecialToolArea; } else { - + SKRectEdges resizeHandle = SKNoEdgeMask; PDFPage *page = [self pageAndPoint:&p forEvent:theEvent nearest:YES]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit