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

Reply via email to