Revision: 29632
http://sourceforge.net/p/bibdesk/svn/29632
Author: hofman
Date: 2025-09-26 17:03:52 +0000 (Fri, 26 Sep 2025)
Log Message:
-----------
Pass webview for download so we can use its windpw for save panel sheet
Modified Paths:
--------------
trunk/bibdesk/BDSKDownloadManager.h
trunk/bibdesk/BDSKDownloadManager.m
trunk/bibdesk/BDSKTextImportController.m
Modified: trunk/bibdesk/BDSKDownloadManager.h
===================================================================
--- trunk/bibdesk/BDSKDownloadManager.h 2025-09-26 16:40:07 UTC (rev 29631)
+++ trunk/bibdesk/BDSKDownloadManager.h 2025-09-26 17:03:52 UTC (rev 29632)
@@ -65,7 +65,7 @@
- (void)cancel:(NSInteger)uniqueID;
- (void)remove:(NSInteger)uniqueID;
-- (void)addDownload:(id)download request:(NSURLRequest *)request;
+- (void)addDownload:(id)download request:(NSURLRequest *)request
forView:(nullable NSView *)view;
@end
@@ -86,13 +86,15 @@
BDSKDownloadStatus status;
id download;
NSDate *date;
+ __weak NSView *view;
}
-- (instancetype)initWithDownload:(id)aDownload URL:(NSURL *)aURL;
+- (instancetype)initWithDownload:(id)aDownload URL:(NSURL *)aURL
forView:(nullable NSView *)aView;
@property (nonatomic, readonly) id download;
@property (nonatomic, readonly) NSInteger uniqueID;
@property (nonatomic, readonly) NSURL *URL;
+@property (nonatomic, nullable, readonly) NSView *view;
@property (nonatomic, nullable, strong) NSURL *fileURL;
@property (nonatomic, nullable, readonly) NSString *fileName;
@property (nonatomic, nullable, strong) NSURL *tempFileURL;
Modified: trunk/bibdesk/BDSKDownloadManager.m
===================================================================
--- trunk/bibdesk/BDSKDownloadManager.m 2025-09-26 16:40:07 UTC (rev 29631)
+++ trunk/bibdesk/BDSKDownloadManager.m 2025-09-26 17:03:52 UTC (rev 29632)
@@ -120,8 +120,8 @@
[[NSNotificationCenter defaultCenter]
postNotificationName:BDSKDownloadsDidChangeNotification object:self];
}
-- (void)addDownload:(id)download request:(NSURLRequest *)request {
- [downloads addObject:[[BDSKWebDownload alloc] initWithDownload:download
URL:[request URL]]];
+- (void)addDownload:(id)download request:(NSURLRequest *)request
forView:(NSView *)view {
+ [downloads addObject:[[BDSKWebDownload alloc] initWithDownload:download
URL:[request URL] forView:view]];
[self notifyUpdate];
}
@@ -272,6 +272,8 @@
}
completionHandler(fileURL);
};
+ if (window == nil)
+ window = [[[self webDownloadForDownload:download] view] window];
if (window)
[sPanel beginSheetModalForWindow:window completionHandler:handler];
else
@@ -284,15 +286,16 @@
@implementation BDSKWebDownload
-@synthesize download, uniqueID, URL, fileURL, tempFileURL, status,
suggestedFilename;
+@synthesize download, uniqueID, view, URL, fileURL, tempFileURL, status,
suggestedFilename;
@dynamic fileName, dateDescription;
-- (instancetype)initWithDownload:(id)aDownload URL:(NSURL *)aURL {
+- (instancetype)initWithDownload:(id)aDownload URL:(NSURL *)aURL
forView:(NSView *)aView {
self = [super init];
if (self) {
static NSInteger currentUniqueID = 0;
uniqueID = ++currentUniqueID;
URL = aURL;
+ view = aView;
fileURL = nil;
status = BDSKDownloadStatusDownloading;
download = aDownload;
@@ -334,6 +337,7 @@
download = nil;
suggestedFilename = nil;
tempFileURL = nil;
+ view = nil;
if (status == BDSKDownloadStatusFailed)
fileURL = nil;
}
@@ -361,7 +365,7 @@
@implementation BDSKWebDownloadDelegate
- (void)downloadDidBegin:(NSURLDownload *)download {
- [downloadManager addDownload:download request:[download request]];
+ [downloadManager addDownload:download request:[download request]
forView:nil];
}
- (void)downloadDidFinish:(NSURLDownload *)download {
Modified: trunk/bibdesk/BDSKTextImportController.m
===================================================================
--- trunk/bibdesk/BDSKTextImportController.m 2025-09-26 16:40:07 UTC (rev
29631)
+++ trunk/bibdesk/BDSKTextImportController.m 2025-09-26 17:03:52 UTC (rev
29632)
@@ -983,7 +983,7 @@
} else {
NSURLRequest *request = [NSURLRequest
requestWithURL:[[navigationResponse response] URL]];
BDSKDownload *aDownload = [[BDSKDownloader sharedDownloader]
startFileDownloadWithRequest:request delegate:[[BDSKDownloadManager
sharedManager] bdskDownloadDelegate]];
- [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:request];
+ [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:request forView:webView];
decisionHandler(WKNavigationResponsePolicyCancel);
}
}
@@ -997,7 +997,7 @@
} else if ([[[navigationAction request]
valueForHTTPHeaderField:@"Content-Disposition"] hasPrefix:@"attachment"]) {
NSURLRequest *request = [navigationAction request];
BDSKDownload *aDownload = [[BDSKDownloader sharedDownloader]
startFileDownloadWithRequest:request delegate:[[BDSKDownloadManager
sharedManager] bdskDownloadDelegate]];
- [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:request];
+ [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:request forView:webView];
decisionHandler(WKNavigationActionPolicyCancel, preferences);
} else {
decisionHandler(WKNavigationActionPolicyAllow, preferences);
@@ -1006,12 +1006,12 @@
- (void)webView:(WKWebView *)aWebView navigationAction:(WKNavigationAction
*)navigationAction didBecomeDownload:(WKDownload *)aDownload
API_AVAILABLE(macos(11.3)) {
[aDownload setDelegate:[[BDSKDownloadManager sharedManager]
wkDownloadDelegate]];
- [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:[aDownload originalRequest]];
+ [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:[aDownload originalRequest] forView:webView];
}
- (void)webView:(WKWebView *)aWebView navigationResponse:(WKNavigationResponse
*)navigationResponse didBecomeDownload:(WKDownload *)aDownload
API_AVAILABLE(macos(11.3)) {
[aDownload setDelegate:[[BDSKDownloadManager sharedManager]
wkDownloadDelegate]];
- [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:[aDownload originalRequest]];
+ [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:[aDownload originalRequest] forView:webView];
}
#pragma mark BDSKUIDelegate protocol
@@ -1114,11 +1114,11 @@
if (@available(macOS 11.3, *)) {
[webView startDownloadUsingRequest:request
completionHandler:^(WKDownload *aDownload){
[aDownload setDelegate:[[BDSKDownloadManager sharedManager]
wkDownloadDelegate]];
- [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:request];
+ [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:request forView:webView];
}];
} else {
BDSKDownload *aDownload = [[BDSKDownloader sharedDownloader]
startFileDownloadWithRequest:request delegate:[[BDSKDownloadManager
sharedManager] bdskDownloadDelegate]];
- [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:request];
+ [[BDSKDownloadManager sharedManager] addDownload:aDownload
request:request forView:webView];
}
} else {
[[NSWorkspace sharedWorkspace] openURLWithDefaultApp:url];
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit