Revision: 14191
          http://sourceforge.net/p/skim-app/code/14191
Author:   hofman
Date:     2024-04-07 16:05:41 +0000 (Sun, 07 Apr 2024)
Log Message:
-----------
replace interactionMode in pdfview by a boolean for presentation mode

Modified Paths:
--------------
    trunk/SKMainWindowController_FullScreen.m
    trunk/SKPDFView.h
    trunk/SKPDFView.m

Modified: trunk/SKMainWindowController_FullScreen.m
===================================================================
--- trunk/SKMainWindowController_FullScreen.m   2024-04-07 15:53:54 UTC (rev 
14190)
+++ trunk/SKMainWindowController_FullScreen.m   2024-04-07 16:05:41 UTC (rev 
14191)
@@ -447,7 +447,7 @@
             animationWindow = nil;
         }];
     
-    [pdfView setInteractionMode:SKPresentationMode];
+    [pdfView setPresentationMode:YES];
     [touchBarController interactionModeChanged];
 }
 
@@ -472,7 +472,7 @@
     presentationUndoManager = nil;
     
     // do this first, otherwise the navigation window may be covered by 
fadeWindow and then reveiled again, which looks odd
-    [pdfView setInteractionMode:SKNormalMode];
+    [pdfView setPresentationMode:NO];
     
     NSWindow *fullScreenWindow = [self window];
     
@@ -608,7 +608,6 @@
     [savedNormalSetup setObject:frameString forKey:MAINWINDOWFRAME_KEY];
     NSColor *backgroundColor = [PDFView defaultFullScreenBackgroundColor];
     NSDictionary *fullScreenSetup = [[NSUserDefaults standardUserDefaults] 
dictionaryForKey:SKDefaultFullScreenPDFDisplaySettingsKey];
-    [pdfView setInteractionMode:SKFullScreenMode];
     [pdfView setBackgroundColor:backgroundColor];
     [secondaryPdfView setBackgroundColor:backgroundColor];
     if ([[pdfView document] isLocked] == NO && [fullScreenSetup count])
@@ -685,7 +684,6 @@
         interactionMode = SKNormalMode;
         NSColor *backgroundColor = [PDFView defaultBackgroundColor];
         NSDictionary *fullScreenSetup = [[NSUserDefaults standardUserDefaults] 
dictionaryForKey:SKDefaultFullScreenPDFDisplaySettingsKey];
-        [pdfView setInteractionMode:SKNormalMode];
         [pdfView setBackgroundColor:backgroundColor];
         [secondaryPdfView setBackgroundColor:backgroundColor];
         if ([[pdfView document] isLocked] == NO && [fullScreenSetup count])
@@ -702,7 +700,6 @@
     mwcFlags.isSwitchingFullScreen = 1;
     interactionMode = SKNormalMode;
     NSColor *backgroundColor = [PDFView defaultBackgroundColor];
-    [pdfView setInteractionMode:SKNormalMode];
     [pdfView setBackgroundColor:backgroundColor];
     [secondaryPdfView setBackgroundColor:backgroundColor];
     if ([[[NSUserDefaults standardUserDefaults] 
dictionaryForKey:SKDefaultFullScreenPDFDisplaySettingsKey] count])
@@ -786,7 +783,6 @@
         interactionMode = SKFullScreenMode;
         NSColor *backgroundColor = [PDFView defaultFullScreenBackgroundColor];
         NSDictionary *fullScreenSetup = [[NSUserDefaults standardUserDefaults] 
dictionaryForKey:SKDefaultFullScreenPDFDisplaySettingsKey];
-        [pdfView setInteractionMode:SKFullScreenMode];
         [pdfView setBackgroundColor:backgroundColor];
         [secondaryPdfView setBackgroundColor:backgroundColor];
         if ([[pdfView document] isLocked] == NO && [fullScreenSetup count])

Modified: trunk/SKPDFView.h
===================================================================
--- trunk/SKPDFView.h   2024-04-07 15:53:54 UTC (rev 14190)
+++ trunk/SKPDFView.h   2024-04-07 16:05:41 UTC (rev 14191)
@@ -179,6 +179,7 @@
     _Atomic(BOOL) inKeyWindow;
     
     struct _pdfvFlags {
+        unsigned int presentationMode:1;
         unsigned int hideNotes:1;
         unsigned int wantsNewUndoGroup:1;
         unsigned int cursorHidden:1;
@@ -194,7 +195,7 @@
 @property (nonatomic) SKToolMode toolMode;
 @property (nonatomic) SKNoteType annotationMode;
 @property (nonatomic) SKTemporaryToolMode temporaryToolMode;
-@property (nonatomic) SKInteractionMode interactionMode;
+@property (nonatomic, getter=isPresentationMode) BOOL presentationMode;
 @property (nonatomic, nullable, strong) PDFAnnotation *currentAnnotation;
 @property (nonatomic, readonly, getter=isEditing) BOOL editing;
 @property (nonatomic, readonly, getter=isZooming) BOOL zooming;

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2024-04-07 15:53:54 UTC (rev 14190)
+++ trunk/SKPDFView.m   2024-04-07 16:05:41 UTC (rev 14191)
@@ -248,8 +248,8 @@
 
 @implementation SKPDFView
 
-@synthesize toolMode, annotationMode, temporaryToolMode, interactionMode, 
currentAnnotation, readingBar, pacerSpeed, transitionController, 
typeSelectHelper, syncDot;
-@dynamic extendedDisplayMode, displaysHorizontally, hideNotes, canSelectNote, 
hasReadingBar, hasPacer, currentSelectionPage, currentSelectionRect, 
currentMagnification, needsRewind, editing, zooming;
+@synthesize toolMode, annotationMode, temporaryToolMode, currentAnnotation, 
readingBar, pacerSpeed, transitionController, typeSelectHelper, syncDot;
+@dynamic extendedDisplayMode, presentationMode, displaysHorizontally, 
hideNotes, canSelectNote, hasReadingBar, hasPacer, currentSelectionPage, 
currentSelectionRect, currentMagnification, needsRewind, editing, zooming;
 
 + (void)initialize {
     SKINITIALIZE;
@@ -277,7 +277,6 @@
 - (void)commonInitialization {
     toolMode = [[NSUserDefaults standardUserDefaults] 
integerForKey:SKLastToolModeKey];
     annotationMode = [[NSUserDefaults standardUserDefaults] 
integerForKey:SKLastAnnotationModeKey];
-    interactionMode = SKNormalMode;
     
     transitionController = nil;
     
@@ -285,6 +284,7 @@
     
     spellingTag = [NSSpellChecker uniqueSpellDocumentTag];
     
+    pdfvFlags.presentationMode = 0;
     pdfvFlags.hideNotes = 0;
     pdfvFlags.wantsNewUndoGroup = 0;
     pdfvFlags.cursorHidden = 0;
@@ -385,7 +385,7 @@
 - (void)resetPDFToolTipRects {
     [self removePDFToolTipRects];
     
-    if ([self document] && [self window] && interactionMode != 
SKPresentationMode) {
+    if ([self document] && [self window] && pdfvFlags.presentationMode == 0) {
         NSRect visibleRect = [self visibleContentRect];
         NSView *docView = [self documentView];
         BOOL hasLinkToolTips = toolMode != SKMagnifyToolMode;
@@ -669,17 +669,21 @@
     }
 }
 
-- (void)setInteractionMode:(SKInteractionMode)newInteractionMode {
-    if (interactionMode != newInteractionMode) {
+- (BOOL)isPresentationMode {
+    return pdfvFlags.presentationMode;
+}
+
+- (void)setPresentationMode:(BOOL)flag {
+    if (pdfvFlags.presentationMode != flag) {
         [self setTemporaryToolMode:SKNoToolMode];
-        if (interactionMode == SKPresentationMode) {
+        if (pdfvFlags.presentationMode) {
             pdfvFlags.cursorHidden = NO;
             [NSCursor setHiddenUntilMouseMoves:NO];
             if ([[self documentView] isHidden])
                 [[self documentView] setHidden:NO];
         }
-        interactionMode = newInteractionMode;
-        if (interactionMode == SKPresentationMode) {
+        pdfvFlags.presentationMode = flag;
+        if (pdfvFlags.presentationMode) {
             if (toolMode == SKTextToolMode || toolMode == SKNoteToolMode) {
                 if (currentAnnotation)
                     [self setCurrentAnnotation:nil];
@@ -693,7 +697,7 @@
         }
         // always clean up navWindow and hanging perform requests
         [self disableNavigation];
-        if (interactionMode == SKPresentationMode)
+        if (pdfvFlags.presentationMode)
             [self enableNavigation];
         [self resetPDFToolTipRects];
     }
@@ -988,12 +992,12 @@
 }
 
 - (void)setUndoActionName:(NSString *)actionName {
-    if (interactionMode != SKPresentationMode)
+    if (pdfvFlags.presentationMode)
         [[self undoManager] setActionName:actionName];
 }
 
 - (BOOL)canSelectNote {
-    return pdfvFlags.hideNotes == NO && interactionMode != SKPresentationMode 
&& (toolMode == SKTextToolMode || toolMode == SKNoteToolMode) && [[self 
document] allowsNotes];
+    return pdfvFlags.hideNotes == NO && pdfvFlags.presentationMode == 0 && 
(toolMode == SKTextToolMode || toolMode == SKNoteToolMode) && [[self document] 
allowsNotes];
 }
 
 #pragma mark Reading bar
@@ -1195,7 +1199,7 @@
 }
 
 - (void)doAutoHideCursorIfNeeded {
-    if (interactionMode == SKPresentationMode && [self window] && 
pdfvFlags.cursorHidden) {
+    if (pdfvFlags.presentationMode && [self window] && pdfvFlags.cursorHidden) 
{
         [self performSelector:@selector(doAutoHideCursor) withObject:nil 
afterDelay:0.0];
         [self performSelector:@selector(doAutoHideCursor) withObject:nil 
afterDelay:0.1];
     }
@@ -1202,7 +1206,7 @@
 }
 
 - (IBAction)goToNextPage:(id)sender {
-    if (interactionMode == SKPresentationMode && [self window] && 
[transitionController hasTransition] && [self canGoToNextPage])
+    if (pdfvFlags.presentationMode && [self window] && [transitionController 
hasTransition] && [self canGoToNextPage])
         [self animateTransitionForNextPage:YES];
     else
         [super goToNextPage:sender];
@@ -1210,7 +1214,7 @@
 }
 
 - (IBAction)goToPreviousPage:(id)sender {
-    if (interactionMode == SKPresentationMode && [self window] && 
[transitionController hasTransition] && [self canGoToPreviousPage])
+    if (pdfvFlags.presentationMode && [self window] && [transitionController 
hasTransition] && [self canGoToPreviousPage])
         [self animateTransitionForNextPage:NO];
     else
         [super goToPreviousPage:sender];
@@ -1744,7 +1748,7 @@
     unichar eventChar = [theEvent firstCharacter];
        NSUInteger modifiers = [theEvent standardModifierFlags];
     
-    if (interactionMode == SKPresentationMode) {
+    if (pdfvFlags.presentationMode) {
         // Presentation mode
         if ([[self scrollView] hasHorizontalScroller] == NO && 
             (eventChar == NSRightArrowFunctionKey) &&  (modifiers == 0)) {
@@ -1859,7 +1863,7 @@
     if ([[self document] isLocked]) {
         [self setTemporaryToolMode:SKNoToolMode];
         [super mouseDown:theEvent];
-    } else if (interactionMode == SKPresentationMode) {
+    } else if (pdfvFlags.presentationMode) {
         [self setTemporaryToolMode:SKNoToolMode];
         BOOL didHideMouse = pdfvFlags.cursorHidden;
         if ([NSApp willDragMouse] == NO) {
@@ -1984,7 +1988,7 @@
 - (void)mouseMoved:(NSEvent *)theEvent {
     pdfvFlags.cursorHidden = NO;
     
-    if (interactionMode != SKPresentationMode)
+    if (pdfvFlags.presentationMode == 0)
         [super mouseMoved:theEvent];
     
     if (toolMode == SKMagnifyToolMode && loupeController) {
@@ -2010,7 +2014,7 @@
             [self performSelectorOnce:@selector(showNavWindow) 
afterDelay:SHOW_NAV_DELAY];
         }
     }
-    if (navigationMode != SKNavigationNone || interactionMode == 
SKPresentationMode)
+    if (navigationMode != SKNavigationNone || pdfvFlags.presentationMode)
         [self performSelectorOnce:@selector(doAutoHide) 
afterDelay:AUTO_HIDE_DELAY];
 }
 
@@ -2043,7 +2047,7 @@
     }
     
     // On Leopard the selection is automatically set. In some cases we never 
want a selection though.
-    if ((interactionMode == SKPresentationMode) || (toolMode != SKTextToolMode 
&& [[self currentSelection] hasCharacters])) {
+    if (pdfvFlags.presentationMode || (toolMode != SKTextToolMode && [[self 
currentSelection] hasCharacters])) {
         static NSSet *selectionActions = nil;
         if (selectionActions == nil)
             selectionActions = [[NSSet alloc] 
initWithObjects:@"_searchInSpotlight:", @"_searchInGoogle:", 
@"_searchInDictionary:", @"_revealSelection:", nil];
@@ -2067,7 +2071,7 @@
         }
     }
     
-    if (interactionMode == SKPresentationMode)
+    if (pdfvFlags.presentationMode)
         return menu;
     
     NSValue *pointValue = [NSValue valueWithPoint:[theEvent 
locationInView:self]];
@@ -2310,7 +2314,7 @@
 }
 
 - (void)rotateWithEvent:(NSEvent *)theEvent {
-    if (interactionMode == SKPresentationMode)
+    if (pdfvFlags.presentationMode)
         return;
     if ([theEvent phase] == NSEventPhaseBegan) {
         PDFPage *page = [self pageAndPoint:NULL forEvent:theEvent nearest:YES];
@@ -2335,12 +2339,12 @@
 }
 
 - (void)magnifyWithEvent:(NSEvent *)theEvent {
-    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKDisablePinchZoomKey] == NO && interactionMode != 
SKPresentationMode)
+    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKDisablePinchZoomKey] == NO && pdfvFlags.presentationMode == 0)
         [super magnifyWithEvent:theEvent];
 }
 
 - (void)swipeWithEvent:(NSEvent *)theEvent {
-    if (interactionMode == SKPresentationMode && [transitionController 
hasTransition]) {
+    if (pdfvFlags.presentationMode && [transitionController hasTransition]) {
         if ([theEvent deltaX] < 0.0 || [theEvent deltaY] < 0.0) {
             if ([self canGoToNextPage])
                 [self goToNextPage:nil];
@@ -3043,7 +3047,7 @@
         if (wasPageDisplayed == NO)
             [self goToCurrentPage:page];
         
-        if (interactionMode != SKPresentationMode) {
+        if (pdfvFlags.presentationMode == 0) {
             if (showBar) {
                 if ([self hasReadingBar] == NO || [syncDot 
shouldHideReadingBar])
                     shouldHideReadingBar = YES;
@@ -3260,7 +3264,7 @@
 - (void)handleScaleChangedNotification:(NSNotification *)notification {
     [self resetPDFToolTipRects];
     [self updatePacer];
-    if (interactionMode == SKPresentationMode && [self autoScales] == NO && 
fabs([self scaleFactor] - 1.0) > 0.0)
+    if (pdfvFlags.presentationMode && [self autoScales] == NO && fabs([self 
scaleFactor] - 1.0) > 0.0)
         [self setAutoScales:YES];
 }
 
@@ -3277,7 +3281,7 @@
     }
     if ([[notification name] 
isEqualToString:NSWindowDidResignKeyNotification]) {
         [self setTemporaryToolMode:SKNoToolMode];
-        if (interactionMode == SKPresentationMode) {
+        if (pdfvFlags.presentationMode) {
             [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:@selector(showNavWindow) object:nil];
             [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:@selector(doAutoHide) object:nil];
             [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:@selector(doAutoHideCursor) object:nil];
@@ -3307,7 +3311,7 @@
     
     [self stopPacer];
     
-    if (interactionMode == SKPresentationMode) {
+    if (pdfvFlags.presentationMode) {
         [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:@selector(showNavWindow) object:nil];
         [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:@selector(doAutoHide) object:nil];
         [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:@selector(doAutoHideCursor) object:nil];
@@ -3460,7 +3464,7 @@
 }
 
 - (void)doAutoHide {
-    if (interactionMode == SKPresentationMode && ([navWindow isVisible] == NO 
|| NSPointInRect([NSEvent mouseLocation], [navWindow frame]) == NO)) {
+    if (pdfvFlags.presentationMode && ([navWindow isVisible] == NO || 
NSPointInRect([NSEvent mouseLocation], [navWindow frame]) == NO)) {
         [self doAutoHideCursor];
         if ([navWindow isVisible]) {
             [navWindow fadeOut];
@@ -4407,7 +4411,7 @@
     NSRect boxBounds = NSIntersectionRect([page boundsForBox:[self 
displayBox]], [self convertRect:[self visibleContentRect] toPage:page]);
     CGAffineTransform t = 
CGAffineTransformRotate(CGAffineTransformMakeScale([self scaleFactor], [self 
scaleFactor]), -M_PI_2 * [page rotation] / 90.0);
     CGFloat r = fmin(2.0, 2.0 * [self scaleFactor]);
-    NSColor *tmpColor = interactionMode == SKPresentationMode ? 
[[NSUserDefaults standardUserDefaults] 
colorForKey:SKPresentationInkNoteColorKey] : nil;
+    NSColor *tmpColor = pdfvFlags.presentationMode ? [[NSUserDefaults 
standardUserDefaults] colorForKey:SKPresentationInkNoteColorKey] : nil;
     layer = [CAShapeLayer layer];
     // transform and place so that the path is in page coordinates
     [layer setBounds:NSRectToCGRect(boxBounds)];
@@ -4511,7 +4515,7 @@
             [annotation setBorder:[currentAnnotation border]];
             [annotation setString:[currentAnnotation string]];
         }
-        if (interactionMode != SKPresentationMode) {
+        if (pdfvFlags.presentationMode == 0) {
             [annotation registerUserName];
             [self beginNewUndoGroupIfNeededWithCommit:NO];
         } else if (tmpColor) {
@@ -4518,13 +4522,13 @@
             [annotation setColor:tmpColor];
         }
         [[self document] addAnnotation:annotation toPage:page];
-        if (interactionMode != SKPresentationMode)
+        if (pdfvFlags.presentationMode == 0)
             [self setUndoActionName:NSLocalizedString(@"Add Note", @"Undo 
action name")];
 
         if (currentAnnotation) {
             [self removeCurrentAnnotation:nil];
             [self setCurrentAnnotation:annotation];
-        } else if (interactionMode != SKPresentationMode && ([theEvent 
modifierFlags] & (NSEventModifierFlagShift | NSEventModifierFlagCapsLock))) {
+        } else if (pdfvFlags.presentationMode == 0 && ([theEvent 
modifierFlags] & (NSEventModifierFlagShift | NSEventModifierFlagCapsLock))) {
             [self setCurrentAnnotation:annotation];
         }
     } else if (([theEvent modifierFlags] & NSEventModifierFlagCapsLock)) {
@@ -5085,7 +5089,7 @@
         if ([[[self window] nextEventMatchingMask: NSEventMaskLeftMouseUp | 
NSEventMaskLeftMouseDragged] type] == NSEventTypeLeftMouseUp)
             break;
         didDrag = YES;
-        if (interactionMode == SKPresentationMode && 
pdfvFlags.useArrowCursorInPresentation == NO && 
pdfvFlags.removeLaserPointerShadow)
+        if (pdfvFlags.presentationMode && 
pdfvFlags.useArrowCursorInPresentation == NO && 
pdfvFlags.removeLaserPointerShadow)
             [self updateCursorForMouse:theEvent];
     }
     return didDrag;
@@ -5107,7 +5111,7 @@
 - (void)showHelpMenu {
     NSMenu *menu = nil;
     NSMenuItem *item;
-    if (interactionMode == SKPresentationMode) {
+    if (pdfvFlags.presentationMode) {
         menu = [NSMenu menu];
         item = [menu addItemWithTitle:NSLocalizedString(@"Go To Next Page", 
@"Menu item title") action:@selector(goToNextPage:) keyEquivalent:@"\uF703"];
         [item setKeyEquivalentModifierMask:0];
@@ -5229,7 +5233,7 @@
     if ([[self document] isLocked]) {
     } else if (NSPointInRect(p, [self convertRect:[self visibleContentRect] 
toView:nil]) == NO || ([navWindow isVisible] && NSPointInRect([theEvent 
locationOnScreen], [navWindow frame])) || ([cursorWindow isVisible] && 
NSPointInRect([theEvent locationOnScreen], [cursorWindow frame]))) {
         area = kPDFNoArea;
-    } else if (interactionMode == SKPresentationMode) {
+    } else if (pdfvFlags.presentationMode) {
         area = (area & kPDFLinkArea) | kPDFPageArea;
     } else if ((modifiers == NSEventModifierFlagCommand || modifiers == 
(NSEventModifierFlagCommand | NSEventModifierFlagShift) || modifiers == 
(NSEventModifierFlagCommand | NSEventModifierFlagOption))) {
         area = (area & kPDFPageArea) | SKSpecialToolArea;
@@ -5294,7 +5298,7 @@
 - (void)setCursorForAreaOfInterest:(PDFAreaOfInterest)area {
     if ((area & kPDFLinkArea))
         [[NSCursor pointingHandCursor] set];
-    else if (interactionMode == SKPresentationMode) {
+    else if (pdfvFlags.presentationMode) {
         if (pdfvFlags.cursorHidden)
             [[NSCursor emptyCursor] set];
         else if (pdfvFlags.useArrowCursorInPresentation || area == kPDFNoArea)
@@ -5381,7 +5385,7 @@
 }
 
 - (BOOL)accessibilityPerformShowAlternateUI {
-    if (interactionMode == SKPresentationMode) {
+    if (pdfvFlags.presentationMode) {
         if ([navWindow isVisible] == NO) {
             [navWindow showForWindow:[self window]];
             
NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor([self
 documentView]), NSAccessibilityLayoutChangedNotification, [NSDictionary 
dictionaryWithObjectsAndKeys:NSAccessibilityUnignoredChildrenForOnlyChild(navWindow),
 NSAccessibilityUIElementsKey, nil]);
@@ -5394,7 +5398,7 @@
 }
 
 - (BOOL)accessibilityPerformShowDefaultUI {
-    if (interactionMode == SKPresentationMode) {
+    if (pdfvFlags.presentationMode) {
         if ([navWindow isVisible]) {
             [navWindow fadeOut];
             
NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor([self
 documentView]), NSAccessibilityLayoutChangedNotification, nil);
@@ -5411,7 +5415,7 @@
 }
 
 - (BOOL)isAccessibilityAlternateUIVisible{
-    if (interactionMode == SKPresentationMode) {
+    if (pdfvFlags.presentationMode) {
         return [navWindow isVisible] || [cursorWindow isVisible];
     } else {
         return [[self delegate] 
respondsToSelector:@selector(PDFViewIsFindVisible:)] && [[self delegate] 
PDFViewIsFindVisible:self];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to