Revision: 27789
http://sourceforge.net/p/bibdesk/svn/27789
Author: hofman
Date: 2022-08-11 09:16:25 +0000 (Thu, 11 Aug 2022)
Log Message:
-----------
Set cached favicon if available when loading starts. Also use our favicons on
10.12-, as the old code probably is not reliable on modern web sites.
Modified Paths:
--------------
trunk/bibdesk/BDSKAppController.m
trunk/bibdesk/BDSKBookmark.m
trunk/bibdesk/BDSKWebGroupViewController.m
trunk/bibdesk/BDSKWebView.m
Modified: trunk/bibdesk/BDSKAppController.m
===================================================================
--- trunk/bibdesk/BDSKAppController.m 2022-08-10 16:22:58 UTC (rev 27788)
+++ trunk/bibdesk/BDSKAppController.m 2022-08-11 09:16:25 UTC (rev 27789)
@@ -600,7 +600,7 @@
}
NSMenuItem *item = [menu addItemWithTitle:title
action:@selector(openBookmark:) keyEquivalent:@""];
[item setRepresentedObject:[NSURL URLWithString:[historyItem
URLString]]];
- [item setImageAndSize:RUNNING_BEFORE(10_13) ? [historyItem icon] :
([[BDSKWebIconDatabase sharedDatabase] iconForURLString:[historyItem
URLString]] ?: [NSImage imageNamed:@"Bookmark"])];
+ [item setImageAndSize:[[BDSKWebIconDatabase sharedDatabase]
iconForURLString:[historyItem URLString]] ?: [NSImage imageNamed:@"Bookmark"]];
}
}
Modified: trunk/bibdesk/BDSKBookmark.m
===================================================================
--- trunk/bibdesk/BDSKBookmark.m 2022-08-10 16:22:58 UTC (rev 27788)
+++ trunk/bibdesk/BDSKBookmark.m 2022-08-11 09:16:25 UTC (rev 27789)
@@ -312,7 +312,7 @@
}
}
-- (NSImage *)icon {
+- (NSImage *)defaultIcon {
static NSImage *icon = nil;
if (icon == nil) {
icon = [[NSImage alloc] initSmallBitmapWithDrawingHandler:^(NSRect
rect){
@@ -321,9 +321,13 @@
[[NSGraphicsContext currentContext]
setImageInterpolation:NSImageInterpolationDefault];
}];
}
- return [[BDSKWebIconDatabase sharedDatabase] iconForURLString:[[self URL]
absoluteString]] ?: icon;
+ return icon;
}
+- (NSImage *)icon {
+ return [[BDSKWebIconDatabase sharedDatabase] iconForURLString:[[self URL]
absoluteString]] ?: [self defaultIcon];
+}
+
- (NSString *)URLDescription {
return [[self URL] absoluteString];
}
Modified: trunk/bibdesk/BDSKWebGroupViewController.m
===================================================================
--- trunk/bibdesk/BDSKWebGroupViewController.m 2022-08-10 16:22:58 UTC (rev
27788)
+++ trunk/bibdesk/BDSKWebGroupViewController.m 2022-08-11 09:16:25 UTC (rev
27789)
@@ -206,7 +206,7 @@
title = [url isFileURL] ? [[url path] lastPathComponent] : [[url
absoluteString] stringByRemovingPercentEncoding];
}
NSMenuItem *menuItem = [menu addItemWithTitle:title
action:@selector(goBackForwardInHistory:) keyEquivalent:@""];
- [menuItem setImageAndSize:RUNNING_BEFORE(10_13) ? [item icon] :
([[BDSKWebIconDatabase sharedDatabase] iconForURLString:[item URLString]] ?:
[NSImage imageNamed:@"Bookmark"])];
+ [menuItem setImageAndSize:[[BDSKWebIconDatabase sharedDatabase]
iconForURLString:[item URLString]] ?: [NSImage imageNamed:@"Bookmark"]];
[menuItem setTarget:self];
[menuItem setRepresentedObject:item];
}
Modified: trunk/bibdesk/BDSKWebView.m
===================================================================
--- trunk/bibdesk/BDSKWebView.m 2022-08-10 16:22:58 UTC (rev 27788)
+++ trunk/bibdesk/BDSKWebView.m 2022-08-11 09:16:25 UTC (rev 27789)
@@ -78,6 +78,7 @@
@interface BDSKWebView () <BDSKDownloaderDelegate>
- (void)setFavicon:(NSImage *)icon;
- (void)retrieveFavicon;
+- (void)resetFavicon;
- (void)clearFavicon;
@end
@@ -208,9 +209,9 @@
if (icon != favicon) {
[favicon release];
favicon = [icon retain];
+ if ([[self frameLoadDelegate]
respondsToSelector:@selector(webView:didReceiveIcon:forFrame:)])
+ [[self frameLoadDelegate] webView:self didReceiveIcon:favicon
forFrame:[self mainFrame]];
}
- if ([[self frameLoadDelegate]
respondsToSelector:@selector(webView:didReceiveIcon:forFrame:)])
- [[self frameLoadDelegate] webView:self didReceiveIcon:favicon
forFrame:[self mainFrame]];
}
- (void)retrieveFavicon {
@@ -285,6 +286,11 @@
}
}
+- (void)resetFavicon {
+ [self clearFavicon];
+ [self setFavicon:[[BDSKWebIconDatabase sharedDatabase]
iconForURLString:[self mainFrameURL]]];
+}
+
- (void)clearFavicon {
[faviconDownload cancel];
BDSKDESTROY(faviconDownload);
@@ -313,8 +319,6 @@
}
- (NSImage *)mainFrameIcon {
- if (RUNNING_BEFORE(10_13))
- return [super mainFrameIcon];
return favicon ?: [[BDSKWebIconDatabase sharedDatabase]
iconForURLString:[self mainFrameURL]] ?: [NSImage imageNamed:@"Bookmark"];
}
@@ -384,9 +388,10 @@
- (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame
*)frame{
if (frame == [sender mainFrame]) {
- if ([sender respondsToSelector:@selector(clearFavicon)])
- [(BDSKWebView *)sender clearFavicon];
- [self webView:sender setIcon:nil];
+ if ([sender respondsToSelector:@selector(resetFavicon)])
+ [(BDSKWebView *)sender resetFavicon];
+ else
+ [self webView:sender setIcon:nil];
[self webView:sender setTitle:[NSLocalizedString(@"Loading",
@"Placeholder web group label") stringByAppendingEllipsis]];
}
[self webView:sender setLoading:[sender isLoading]];
@@ -408,10 +413,10 @@
NSURL *url = [[[frame dataSource] request] URL];
title = [url isFileURL] ? [[url path] lastPathComponent] : [[url
absoluteString] stringByRemovingPercentEncoding];
}
- if (RUNNING_BEFORE(10_13))
+ if ([sender respondsToSelector:@selector(retrieveFavicon)])
+ [(BDSKWebView *)sender retrieveFavicon];
+ else
[self webView:sender setIcon:[sender mainFrameIcon]];
- else if ([sender respondsToSelector:@selector(retrieveFavicon)])
- [(BDSKWebView *)sender retrieveFavicon];
[self webView:sender setTitle:title];
}
[self webView:sender setLoading:[sender isLoading]];
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