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