Revision: 15682
          http://sourceforge.net/p/skim-app/code/15682
Author:   hofman
Date:     2025-10-02 17:02:55 +0000 (Thu, 02 Oct 2025)
Log Message:
-----------
make loupe controller an NSWindowController

Modified Paths:
--------------
    trunk/SKLoupeController.h
    trunk/SKLoupeController.m

Modified: trunk/SKLoupeController.h
===================================================================
--- trunk/SKLoupeController.h   2025-10-02 16:54:33 UTC (rev 15681)
+++ trunk/SKLoupeController.h   2025-10-02 17:02:55 UTC (rev 15682)
@@ -42,8 +42,7 @@
 
 @class PDFView;
 
-@interface SKLoupeController : NSObject <CALayerDelegate> {
-    NSWindow *window;
+@interface SKLoupeController : NSWindowController <CALayerDelegate> {
     CALayer *layer;
     __weak PDFView *pdfView;
     CGFloat magnification;
@@ -51,7 +50,8 @@
 }
 
 - (instancetype)initWithPDFView:(PDFView *)aPdfView NS_DESIGNATED_INITIALIZER;
-- (instancetype)init NS_UNAVAILABLE;
+- (instancetype)initWithWindow:(nullable NSWindow *)window NS_UNAVAILABLE;
+- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
 
 @property (nonatomic) CGFloat magnification;
 @property (nonatomic) NSInteger level;

Modified: trunk/SKLoupeController.m
===================================================================
--- trunk/SKLoupeController.m   2025-10-02 16:54:33 UTC (rev 15681)
+++ trunk/SKLoupeController.m   2025-10-02 17:02:55 UTC (rev 15682)
@@ -57,7 +57,7 @@
 #define SKLargeMagnificationHeightKey @"SKLargeMagnificationHeight"
 
 @interface SKLoupeController ()
-- (void)makeWindow;
++ (NSWindow *)makeWindowForView:(NSView *)pdfView;
 - (void)handlePDFContentViewFrameChangedNotification:(NSNotification 
*)notification;
 @end
 
@@ -66,12 +66,15 @@
 @synthesize magnification, level;
 
 - (instancetype)initWithPDFView:(PDFView *)aPdfView {
-    self = [super init];
+    NSWindow *window = [[self class] makeWindowForView:aPdfView];
+    self = [super initWithWindow:window];
     if (self) {
         pdfView = aPdfView;
-        [self makeWindow];
         magnification = 0.0;
         level = 0;
+        layer = [[window contentView] layer];
+        [layer setDelegate:self];
+        [self updateColorFilters];
         [[NSNotificationCenter defaultCenter] addObserver:self
             selector:@selector(handlePDFContentViewFrameChangedNotification:)
                 name:NSViewBoundsDidChangeNotification object:[[pdfView 
scrollView] contentView]];
@@ -83,8 +86,8 @@
     [layer setDelegate:nil];
 }
 
-- (void)makeWindow {
-    layer = [[CALayer alloc] init];
++ (NSWindow *)makeWindowForView:(NSView *)pdfView {
+    CALayer *layer = [[CALayer alloc] init];
     [layer setCornerRadius:LOUPE_RADIUS];
     [layer setMasksToBounds:YES];
     [layer setActions:@{@"contents":[NSNull null]}];
@@ -95,13 +98,12 @@
         [layer setBorderWidth:LOUPE_BORDER_WIDTH];
         CGColorRelease(borderColor);
     }
-    [layer setDelegate:self];
     
-    window = [[SKAnimatedBorderlessWindow alloc] initWithContentRect:[pdfView 
convertRectToScreen:[pdfView bounds]]];
+    NSWindow *window = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:[pdfView convertRectToScreen:[pdfView bounds]]];
     [[window contentView] setLayer:layer];
     [[window contentView] setWantsLayer:YES];
     [window setHasShadow:YES];
-    [self updateColorFilters];
+    return window;
 }
 
 - (void)handlePDFContentViewFrameChangedNotification:(NSNotification 
*)notification {
@@ -110,6 +112,7 @@
 
 - (void)updateBackgroundColor {
     if (@available(macOS 10.14, *)) {
+        NSWindow *window = [self window];
         BOOL hasBackgroundView = NO;
         NSView *loupeView = [window contentView];
         if ([[loupeView subviews] count] > 0) {
@@ -161,6 +164,7 @@
 }
 
 - (void)updateColorFilters {
+    NSWindow *window = [self window];
     [[window contentView] setContentFilters:SKColorEffectFilters()];
     if (@available(macOS 10.14, *)) {
         if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
@@ -191,6 +195,7 @@
             magRect = NSIntegralRect(SKRectFromCenterAndSize(mouseLoc, 
magSize));
         }
         
+        NSWindow *window = [self window];
         NSView *loupeView = [window contentView];
         if (@available(macOS 10.14, *))
             loupeView = [[loupeView subviews] firstObject] ?: loupeView;
@@ -212,6 +217,7 @@
 }
 
 - (void)updateContents {
+    NSWindow *window = [self window];
     if ([window parentWindow]) {
         if (level > 2 && NSEqualSizes([window frame].size, [pdfView 
visibleContentRect].size) == NO)
             [self update];
@@ -221,6 +227,7 @@
 }
 
 - (BOOL)hide {
+    NSWindow *window = [self window];
     if ([window parentWindow] == nil)
         return NO;
     // show cursor
@@ -236,7 +243,7 @@
     if (NSPointInRect(mouseLoc, [pdfView visibleContentRect]) == NO)
         return;
     
-    NSRect magRect = [pdfView convertRectFromScreen:[window frame]];
+    NSRect magRect = [pdfView convertRectFromScreen:[[self window] frame]];
     
     CGFloat scaleFactor = [pdfView scaleFactor];
     CGColorRef shadowColor = NULL;

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

Reply via email to