Revision: 14215
          http://sourceforge.net/p/skim-app/code/14215
Author:   hofman
Date:     2024-04-18 09:34:03 +0000 (Thu, 18 Apr 2024)
Log Message:
-----------
Convenience method in NSWin dow category to add an imageview with a window, 
instead of a backgroundImage property in our borderless window subclass.

Modified Paths:
--------------
    trunk/NSCursor_SKExtensions.m
    trunk/NSWindow_SKExtensions.h
    trunk/NSWindow_SKExtensions.m
    trunk/SKAnimatedBorderlessWindow.h
    trunk/SKAnimatedBorderlessWindow.m
    trunk/SKApplicationController.m
    trunk/SKImageToolTipWindow.h
    trunk/SKImageToolTipWindow.m
    trunk/SKMainWindowController_FullScreen.m
    trunk/SKSnapshotWindowController.m

Modified: trunk/NSCursor_SKExtensions.m
===================================================================
--- trunk/NSCursor_SKExtensions.m       2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/NSCursor_SKExtensions.m       2024-04-18 09:34:03 UTC (rev 14215)
@@ -41,6 +41,7 @@
 #import "SKRuntime.h"
 #import "SKAnimatedBorderlessWindow.h"
 #import "NSGeometry_SKExtensions.h"
+#import "NSWindow_SKExtensions.h"
 
 static inline void hideLaserPointer(void);
 
@@ -276,7 +277,7 @@
     NSPoint p = [NSEvent mouseLocation];
     p = NSMakePoint(round(p.x), round(p.y));
     if (laserPointerWindow) {
-        [(SKAnimatedBorderlessWindow *)laserPointerWindow 
setBackgroundImage:[self image]];
+        [[[[laserPointerWindow contentView] subviews] firstObject] 
setImage:[self image]];
         [laserPointerWindow setFrame:SKRectFromCenterAndSize(p, 
[laserPointerWindow frame].size) display:YES];
     } else {
         NSImage *image = [self image];
@@ -284,7 +285,7 @@
         CGFloat s = 2.0 * round(0.5 * (size ? [size doubleValue] : 1.0) * 
[image size].width);
         laserPointerWindow = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:SKRectFromCenterAndSquareSize(p, s)];
         [laserPointerWindow setLevel:(NSWindowLevel)kCGCursorWindowLevel];
-        [(SKAnimatedBorderlessWindow *)laserPointerWindow 
setBackgroundImage:image];
+        [laserPointerWindow addImageViewWithImage:image];
         [laserPointerWindow setHidesOnDeactivate:YES];
         [laserPointerWindow orderFrontRegardless];
     }

Modified: trunk/NSWindow_SKExtensions.h
===================================================================
--- trunk/NSWindow_SKExtensions.h       2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/NSWindow_SKExtensions.h       2024-04-18 09:34:03 UTC (rev 14215)
@@ -47,6 +47,8 @@
 
 - (void)handleRevertScriptCommand:(NSScriptCommand *)command;
 
+- (NSImageView *)addImageViewWithImage:(nullable NSImage *)image;
+
 @end
 
 NS_ASSUME_NONNULL_END

Modified: trunk/NSWindow_SKExtensions.m
===================================================================
--- trunk/NSWindow_SKExtensions.m       2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/NSWindow_SKExtensions.m       2024-04-18 09:34:03 UTC (rev 14215)
@@ -136,6 +136,17 @@
     }
 }
 
+- (NSImageView *)addImageViewWithImage:(NSImage *)image {
+    NSImageView *imageView = [[NSImageView alloc] initWithFrame:[[self 
contentView] bounds]];
+    [imageView setEditable:NO];
+    [imageView setImageFrameStyle:NSImageFrameNone];
+    [imageView setImageScaling:NSImageScaleProportionallyUpOrDown];
+    [imageView setImage:image];
+    [imageView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
+    [[self contentView] addSubview:imageView];
+    return imageView;
+}
+
 - (BOOL)isRestorable { return NO; }
 
 @end

Modified: trunk/SKAnimatedBorderlessWindow.h
===================================================================
--- trunk/SKAnimatedBorderlessWindow.h  2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/SKAnimatedBorderlessWindow.h  2024-04-18 09:34:03 UTC (rev 14215)
@@ -50,7 +50,6 @@
 @property (nonatomic) CGFloat defaultAlphaValue;
 @property (nonatomic) NSTimeInterval autoHideTimeInterval;
 @property (nonatomic, readonly) NSTimeInterval fadeInDuration, fadeOutDuration;
-@property (nonatomic, nullable, strong) NSImage *backgroundImage;
 
 - (void)fadeIn;
 - (void)fadeOut;

Modified: trunk/SKAnimatedBorderlessWindow.m
===================================================================
--- trunk/SKAnimatedBorderlessWindow.m  2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/SKAnimatedBorderlessWindow.m  2024-04-18 09:34:03 UTC (rev 14215)
@@ -39,6 +39,7 @@
 #import "SKAnimatedBorderlessWindow.h"
 #import "SKStringConstants.h"
 #import "NSView_SKExtensions.h"
+#import "NSWindow_SKExtensions.h"
 
 #define ALPHA_VALUE 1.0
 #define FADE_IN_DURATION 0.3
@@ -49,7 +50,7 @@
 @implementation SKAnimatedBorderlessWindow
 
 @synthesize defaultAlphaValue, autoHideTimeInterval;
-@dynamic fadeInDuration, fadeOutDuration, backgroundImage;
+@dynamic fadeInDuration, fadeOutDuration;
 
 - (instancetype)initWithContentRect:(NSRect)contentRect {
     self = [super initWithContentRect:contentRect 
styleMask:NSWindowStyleMaskBorderless backing:NSBackingStoreBuffered defer:NO];
@@ -158,27 +159,4 @@
     [self fadeOutAfterTimeout];
 }
 
-- (NSImage *)backgroundImage {
-    NSImageView *imageView = [[[self contentView] subviews] firstObject];
-    return [imageView respondsToSelector:@selector(image)] ? [imageView image] 
: nil;
-}
-
-- (void)setBackgroundImage:(NSImage *)newBackgroundImage {
-    NSImageView *imageView = [[[self contentView] subviews] firstObject];
-    if ([imageView respondsToSelector:@selector(setImage:)] == NO) {
-        if (newBackgroundImage) {
-            imageView = [[NSImageView alloc] init];
-            [imageView setEditable:NO];
-            [imageView setImageFrameStyle:NSImageFrameNone];
-            [imageView setImageScaling:NSImageScaleProportionallyUpOrDown];
-            [imageView setAutoresizingMask:NSViewWidthSizable | 
NSViewHeightSizable];
-            [imageView setFrame:[[self contentView] bounds]];
-            [[self contentView] addSubview:imageView positioned:NSWindowBelow 
relativeTo:nil];
-        } else {
-            imageView = nil;
-        }
-    }
-    [imageView setImage:newBackgroundImage];
-}
-
 @end

Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m     2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/SKApplicationController.m     2024-04-18 09:34:03 UTC (rev 14215)
@@ -79,6 +79,7 @@
 #import "SKDisplayPrefs.h"
 #import "NSData_SKExtensions.h"
 #import "PDFPage_SKExtensions.h"
+#import "NSWindow_SKExtensions.h"
 
 #define WEBSITE_URL @"https://skim-app.sourceforge.io/";
 #define WIKI_URL    @"https://sourceforge.net/p/skim-app/wiki/";
@@ -356,7 +357,7 @@
             [contentView setMaskImage:[NSImage 
maskImageWithSize:contentRect.size cornerRadius:10.0]];
          }
         [remoteStateWindow center];
-        [remoteStateWindow setBackgroundImage:[NSImage 
imageNamed:remoteScrolling ? SKImageNameRemoteStateScroll : 
SKImageNameRemoteStateResize]];
+        [remoteStateWindow addImageViewWithImage:[NSImage 
imageNamed:remoteScrolling ? SKImageNameRemoteStateScroll : 
SKImageNameRemoteStateResize]];
         [remoteStateWindow orderFrontRegardless];
     }
 }

Modified: trunk/SKImageToolTipWindow.h
===================================================================
--- trunk/SKImageToolTipWindow.h        2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/SKImageToolTipWindow.h        2024-04-18 09:34:03 UTC (rev 14215)
@@ -46,6 +46,7 @@
     id <SKImageToolTipContext> context;
     NSPoint point;
     CGFloat scale;
+    NSImageView *imageView;
 }
 
 @property (class, nonatomic, readonly) SKImageToolTipWindow 
*sharedToolTipWindow;

Modified: trunk/SKImageToolTipWindow.m
===================================================================
--- trunk/SKImageToolTipWindow.m        2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/SKImageToolTipWindow.m        2024-04-18 09:34:03 UTC (rev 14215)
@@ -42,6 +42,7 @@
 #import "SKStringConstants.h"
 #import "NSColor_SKExtensions.h"
 #import "NSGraphics_SKExtensions.h"
+#import "NSWindow_SKExtensions.h"
 
 #define WINDOW_OFFSET           18.0
 #define ALPHA_VALUE             0.95
@@ -91,7 +92,8 @@
         } else {
             [self setBackgroundColor:[NSColor 
colorWithGenericGamma22White:0.97 alpha:1.0]];
         }
-
+        
+        imageView = [self addImageViewWithImage:nil];
     }
     return self;
 }
@@ -116,7 +118,7 @@
     BOOL isOpaque = [[[image representations] firstObject] isOpaque];
     
     if (image) {
-        [self setBackgroundImage:image];
+        [imageView setImage:image];
         
         [[self contentView] setContentFilters:isOpaque ? 
SKColorEffectFilters() : @[]];
         

Modified: trunk/SKMainWindowController_FullScreen.m
===================================================================
--- trunk/SKMainWindowController_FullScreen.m   2024-04-17 14:40:10 UTC (rev 
14214)
+++ trunk/SKMainWindowController_FullScreen.m   2024-04-18 09:34:03 UTC (rev 
14215)
@@ -65,6 +65,7 @@
 #import "NSColor_SKExtensions.h"
 #import "SKStatusBar.h"
 #import "SKAnimatedBorderlessWindow.h"
+#import "NSWindow_SKExtensions.h"
 
 #define MAINWINDOWFRAME_KEY         @"windowFrame"
 #define LEFTSIDEPANEWIDTH_KEY       @"leftSidePaneWidth"
@@ -337,7 +338,7 @@
         animationWindow = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:[window frame]];
     else
         [animationWindow setFrame:[window frame] display:NO];
-    [(SKAnimatedBorderlessWindow *)animationWindow setBackgroundImage:image];
+    [animationWindow addImageViewWithImage:image];
     [animationWindow setHasShadow:[window hasShadow]];
     [animationWindow setLevel:[window level]];
     [animationWindow orderWindow:NSWindowAbove relativeTo:window];
@@ -387,16 +388,9 @@
     NSImage *image = [[NSImage alloc] initWithSize:rect.size];
     [image addRepresentation:imageRep];
     
-    NSImageView *imageView = [[NSImageView alloc] initWithFrame:rect];
-    [imageView setEditable:NO];
-    [imageView setImageFrameStyle:NSImageFrameNone];
-    [imageView setImageScaling:NSImageScaleProportionallyUpOrDown];
-    [imageView setImage:image];
-    [imageView setContentFilters:SKColorEffectFilters()];
-    [imageView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
     if ([pdfView window] == window)
         [pdfView removeFromSuperview];
-    [[window contentView] addSubview:imageView];
+    [[window addImageViewWithImage:image] 
setContentFilters:SKColorEffectFilters()];
 }
 
 #pragma mark API

Modified: trunk/SKSnapshotWindowController.m
===================================================================
--- trunk/SKSnapshotWindowController.m  2024-04-17 14:40:10 UTC (rev 14214)
+++ trunk/SKSnapshotWindowController.m  2024-04-18 09:34:03 UTC (rev 14215)
@@ -590,18 +590,6 @@
     return NSMakeRect(NSMinX(targetRect) - scaleFactor * NSMinX(sourceRect), 
NSMinY(targetRect) - scaleFactor * NSMinY(sourceRect), scaleFactor * 
windowSize.width, scaleFactor * windowSize.height);
 }
 
-static NSImageView *addImageView(NSView *view, NSImage *image) {
-    NSImageView *imageView = [[NSImageView alloc] init];
-    [imageView setEditable:NO];
-    [imageView setImageFrameStyle:NSImageFrameNone];
-    [imageView setImageScaling:NSImageScaleProportionallyUpOrDown];
-    [imageView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
-    [imageView setFrame:[view bounds]];
-    [view addSubview:imageView];
-    [imageView setImage:image];
-    return imageView;
-}
-
 static void roundCornersAndApplyFiltersToImageRep(NSBitmapImageRep *imageRep, 
NSArray *filters, NSRect rect) {
     NSRect bounds = {NSZeroPoint, [imageRep size]};
     CGFloat r = 10.0;
@@ -663,8 +651,8 @@
         [miniaturizeWindow setLevel:NSFloatingWindowLevel];
         [miniaturizeWindow setHasShadow:YES];
         [[miniaturizeWindow contentView] setWantsLayer:YES];
-        NSImageView *imageView = addImageView([miniaturizeWindow contentView], 
windowImage);
-        NSImageView *contentImageView = addImageView([miniaturizeWindow 
contentView], contentImage);
+        NSImageView *imageView = [miniaturizeWindow 
addImageViewWithImage:windowImage];
+        NSImageView *contentImageView = [miniaturizeWindow 
addImageViewWithImage:contentImage];
         [contentImageView setContentFilters:filters];
         if (miniaturize == NO)
             [imageView setAlphaValue:0.0];

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