Revision: 12658 http://sourceforge.net/p/skim-app/code/12658 Author: hofman Date: 2021-12-28 16:43:52 +0000 (Tue, 28 Dec 2021) Log Message: ----------- Temporary tool mode for snapshot
Modified Paths: -------------- trunk/NSImage_SKExtensions.h trunk/NSImage_SKExtensions.m trunk/SKMainToolbarController.m trunk/SKPDFView.h trunk/SKPDFView.m Modified: trunk/NSImage_SKExtensions.h =================================================================== --- trunk/NSImage_SKExtensions.h 2021-12-28 14:58:25 UTC (rev 12657) +++ trunk/NSImage_SKExtensions.h 2021-12-28 16:43:52 UTC (rev 12658) @@ -109,6 +109,7 @@ extern NSString *SKImageNameToolbarMoveTool; extern NSString *SKImageNameToolbarMagnifyTool; extern NSString *SKImageNameToolbarSelectTool; +extern NSString *SKImageNameToolbarSnapshotTool; extern NSString *SKImageNameToolbarShare; extern NSString *SKImageNameToolbarPlay; extern NSString *SKImageNameToolbarPause; Modified: trunk/NSImage_SKExtensions.m =================================================================== --- trunk/NSImage_SKExtensions.m 2021-12-28 14:58:25 UTC (rev 12657) +++ trunk/NSImage_SKExtensions.m 2021-12-28 16:43:52 UTC (rev 12658) @@ -113,6 +113,7 @@ NSString *SKImageNameToolbarMoveTool = @"ToolbarMoveTool"; NSString *SKImageNameToolbarMagnifyTool = @"ToolbarMagnifyTool"; NSString *SKImageNameToolbarSelectTool = @"ToolbarSelectTool"; +NSString *SKImageNameToolbarSnapshotTool = @"ToolbarSnapshotTool"; NSString *SKImageNameToolbarShare = @"ToolbarShare"; NSString *SKImageNameToolbarPlay = @"ToolbarPlay"; NSString *SKImageNameToolbarPause = @"ToolbarPause"; @@ -866,6 +867,21 @@ [path stroke]; ); + MAKE_IMAGE(SKImageNameToolbarSnapshotTool, YES, 27.0, 19.0, + [[NSColor blackColor] set]; + NSBezierPath *path = [NSBezierPath bezierPathWithRect:NSMakeRect(6.0, 4.0, 15.0, 10.0)]; + [path appendBezierPathWithOvalInRect:NSMakeRect(10.5, 10.0, 6.0, 6.0)]; + [path fill]; + [NSGraphicsContext saveGraphicsState]; + [[NSGraphicsContext currentContext] setCompositingOperation:NSCompositeClear]; + [[NSBezierPath bezierPathWithOvalInRect:NSMakeRect(9.8, 5.8, 7.4, 7.4)] stroke]; + path = [NSBezierPath bezierPath]; + [path appendBezierPathWithArcWithCenter:NSMakePoint(13.5, 9.5) radius:1.8 startAngle:45.0 endAngle:225.0]; + [path closePath]; + [path fill]; + [NSGraphicsContext restoreGraphicsState]; + ); + MAKE_IMAGE(SKImageNameToolbarShare, YES, 27.0, 19.0, [[NSColor blackColor] set]; NSBezierPath *path = [NSBezierPath bezierPath]; Modified: trunk/SKMainToolbarController.m =================================================================== --- trunk/SKMainToolbarController.m 2021-12-28 14:58:25 UTC (rev 12657) +++ trunk/SKMainToolbarController.m 2021-12-28 16:43:52 UTC (rev 12658) @@ -1352,6 +1352,7 @@ NSString *name = nil; switch ([mainController.pdfView temporaryToolMode]) { case SKZoomToolMode : name = SKImageNameToolbarZoomToSelection; break; + case SKSnapshotToolMode : name = SKImageNameToolbarSnapshotTool; break; case SKHighlightToolMode : name = SKImageNameToolbarAddHighlightNote; break; case SKUnderlineToolMode : name = SKImageNameToolbarAddUnderlineNote; break; case SKStrikeOutToolMode : name = SKImageNameToolbarAddStrikeOutNote; break; Modified: trunk/SKPDFView.h =================================================================== --- trunk/SKPDFView.h 2021-12-28 14:58:25 UTC (rev 12657) +++ trunk/SKPDFView.h 2021-12-28 16:43:52 UTC (rev 12658) @@ -87,6 +87,7 @@ typedef NS_ENUM(NSInteger, SKTemporaryToolMode) { SKNoToolMode, SKZoomToolMode, + SKSnapshotToolMode, SKHighlightToolMode = SKHighlightNote, SKUnderlineToolMode = SKUnderlineNote, SKStrikeOutToolMode = SKStrikeOutNote @@ -99,7 +100,8 @@ SKResizeDiagonal45Area = 1 << 19, SKResizeDiagonal135Area = 1 << 20, SKReadingBarArea = 1 << 21, - SKSpecialToolArea = 1 << 22 + SKSpecialToolArea = 1 << 22, + SKTemporaryToolArea = 1 << 23 }; enum { Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2021-12-28 14:58:25 UTC (rev 12657) +++ trunk/SKPDFView.m 2021-12-28 16:43:52 UTC (rev 12658) @@ -1768,6 +1768,12 @@ [self setTemporaryToolMode:SKNoToolMode]; if (wantsLoupe) [self updateMagnifyWithEvent:nil]; + } else if (temporaryToolMode == SKSnapshotToolMode && (modifiers & NSCommandKeyMask) == 0) { + BOOL wantsLoupe = [self hideLoupeWindow]; + [self doSelectSnapshotWithEvent:theEvent]; + [self setTemporaryToolMode:SKNoToolMode]; + if (wantsLoupe) + [self updateMagnifyWithEvent:nil]; } else if (temporaryToolMode != SKNoToolMode && (modifiers & NSCommandKeyMask) == 0) { [self setActiveAnnotation:nil]; [super mouseDown:theEvent]; @@ -2981,8 +2987,14 @@ autoFits = YES; } if (NSIsEmptyRect(rect)) { + + if ([sender representedObject] == nil) { + [self setTemporaryToolMode:SKSnapshotToolMode]; + return; + } + // the represented object should be the location for the menu event - point = [sender representedObject] ? [[sender representedObject] pointValue] : [self convertPoint:[[self window] mouseLocationOutsideOfEventStream] fromView:nil]; + point = [[sender representedObject] pointValue]; page = [self pageForPoint:point nearest:NO]; if (page == nil) { // Get the center @@ -5238,6 +5250,16 @@ return [NSCursor arrowCursor]; } +- (NSCursor *)cursorForTemporaryToolMode { + switch (temporaryToolMode) { + case SKNoToolMode: return [NSCursor arrowCursor]; + case SKZoomToolMode: return [NSCursor zoomInCursor]; + case SKSnapshotToolMode: return [NSCursor cameraCursor]; + default: return [self cursorForNoteType:(SKNoteType)temporaryToolMode]; + } + return [NSCursor arrowCursor]; +} + - (PDFAreaOfInterest)areaOfInterestForMouse:(NSEvent *)theEvent { PDFAreaOfInterest area = [super areaOfInterestForMouse:theEvent]; NSPoint p = [theEvent locationInWindow]; @@ -5251,7 +5273,7 @@ } 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; + area = (area & kPDFPageArea) | SKTemporaryToolArea; } else { SKRectEdges resizeHandle = SKNoEdgeMask; @@ -5308,7 +5330,9 @@ else if (interactionMode == SKPresentationMode) [pdfvFlags.cursorHidden ? [NSCursor emptyCursor] : pdfvFlags.useArrowCursorInPresentation ? [NSCursor arrowCursor] : [NSCursor laserPointerCursorWithColor:laserPointerColor] set]; else if ((area & SKSpecialToolArea)) - [(temporaryToolMode == SKNoToolMode ? [NSCursor arrowCursor] : temporaryToolMode == SKZoomToolMode ? [NSCursor zoomInCursor] : [self cursorForNoteType:(SKNoteType)temporaryToolMode]) set]; + [[NSCursor arrowCursor] set]; + else if ((area & SKTemporaryToolArea)) + [[self cursorForTemporaryToolMode] set]; else if ((area & SKDragArea)) [[NSCursor openHandCursor] set]; else if ((area & SKResizeUpDownArea)) 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