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