Skip to content

Commit

Permalink
Fixes issue MacDownApp#1104 (Rendering pane flashing)
Browse files Browse the repository at this point in the history
For issue MacDownApp#747, a change was introduced that uses private API to disable
caching on the preview pane's web view. This was ostensibly to make it
so that if images referenced in the markdown document are changed on
disk, their changes are reflected in the preview pane.

Unfortunately, perhaps due to some underlying changes to WebKit/WebView,
disabling caching will also disable caching for all sorts of other
things like stylesheets and the base html document loaded from disk.
This results in a momentary flash of empty content if one is typing
quickly.

Reverting the changes for MacDownApp#747 resolves the flashing issue, but does
regress the issue regarding images being persistently cached.

However, the flashing issue appears to be bothering more people than the
image issue, so I believe it would be appropriate to temporarily regress
the image caching bug to resolve the flashing bug. Supposedly, a plan
exists to migrate to WKWebView, which would hopefully resolve both of
these issues simultaneously.
  • Loading branch information
buzzert committed Jan 12, 2022
1 parent 3e2a2bf commit 23042a4
Showing 1 changed file with 0 additions and 15 deletions.
15 changes: 0 additions & 15 deletions MacDown/Code/Application/MPMainController.m
Original file line number Diff line number Diff line change
Expand Up @@ -102,21 +102,6 @@ @implementation MPMainController

- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
// Using private API [WebCache setDisabled:YES] to disable WebView's cache
id webCacheClass = (id)NSClassFromString(@"WebCache");
if (webCacheClass) {
// Ignoring "undeclared selector" warning
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
BOOL setDisabledValue = YES;
NSMethodSignature *signature = [webCacheClass methodSignatureForSelector:@selector(setDisabled:)];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
invocation.selector = @selector(setDisabled:);
invocation.target = [webCacheClass class];
[invocation setArgument:&setDisabledValue atIndex:2];
[invocation invoke];
#pragma clang diagnostic pop
}
[[NSAppleEventManager sharedAppleEventManager]
setEventHandler:self
andSelector:@selector(openUrlSchemeAppleEvent:withReplyEvent:)
Expand Down

0 comments on commit 23042a4

Please sign in to comment.