Revision: 12427
          http://sourceforge.net/p/skim-app/code/12427
Author:   hofman
Date:     2021-09-30 14:43:33 +0000 (Thu, 30 Sep 2021)
Log Message:
-----------
Apply color invert filters to whole scrollview, otherwise the filter does not 
use the correct resolution of the filtered images. Note that this affects the 
background color and the scrollers.

Modified Paths:
--------------
    trunk/SKPDFView.m
    trunk/SKSecondaryPDFView.m
    trunk/SKSnapshotPDFView.m

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2021-09-29 15:44:01 UTC (rev 12426)
+++ trunk/SKPDFView.m   2021-09-30 14:43:33 UTC (rev 12427)
@@ -343,11 +343,13 @@
     [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKeys:[[self class] defaultKeysToObserve] 
context:&SKPDFViewDefaultsObservationContext];
     
     SKSetHasDefaultAppearance(self);
-    SKSetHasLightAppearance([[self scrollView] contentView]);
+    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey]) {
+        SKSetHasLightAppearance([self scrollView]);
+        [[[self scrollView] self] setContentFilters:SKColorInvertFilters()];
+    } else {
+        SKSetHasLightAppearance([[self scrollView] contentView]);
+    }
     [self handleScrollerStyleChangedNotification:nil];
-    
-    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
-        [[[self scrollView] contentView] 
setContentFilters:SKColorInvertFilters()];
 }
 
 - (id)initWithFrame:(NSRect)frameRect {
@@ -3090,13 +3092,9 @@
 - (void)viewDidChangeEffectiveAppearance {
     [super viewDidChangeEffectiveAppearance];
     if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey]) {
-        [[[self scrollView] contentView] 
setContentFilters:SKColorInvertFilters()];
-        if (loupeWindow) {
-            NSView *loupeView = [loupeWindow contentView];
-            if (RUNNING_AFTER(10_13))
-                loupeView = [[loupeView subviews] firstObject] ?: loupeView;
-            [[[[loupeView layer] sublayers] firstObject] 
setFilters:SKColorInvertFilters()];
-        }
+        [[self scrollView] setContentFilters:SKColorInvertFilters()];
+        if (loupeWindow)
+            [[loupeWindow contentView] 
setContentFilters:SKColorInvertFilters()];
     }
 }
 
@@ -3247,15 +3245,17 @@
     NSWindow *overlay = nil;
     if (wantsAdded && [self wantsLayer]) {
         [[self layer] addSublayer:layer];
+        if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
+            [layer setFilters:SKColorInvertFilters()];
     } else {
         overlay = [[SKAnimatedBorderlessWindow alloc] 
initWithContentRect:[self convertRectToScreen:[self bounds]]];
         [[overlay contentView] setWantsLayer:YES];
         [[[overlay contentView] layer] addSublayer:layer];
+        if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
+            [[overlay contentView] setContentFilters:SKColorInvertFilters()];
         if (wantsAdded)
             [[self window] addChildWindow:overlay ordered:NSWindowAbove];
     }
-    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
-        [layer setFilters:SKColorInvertFilters()];
     return overlay;
 }
 
@@ -4846,7 +4846,7 @@
 #pragma clang diagnostic pop
         if (material == 0) {
             __block CGColorRef cgColor = NULL;
-            SKRunWithAppearance(NSApp, ^{
+            SKRunWithAppearance([self scrollView], ^{
                 if ([bgColor alphaComponent] < 1.0)
                     cgColor = [[[NSColor blackColor] 
blendedColorWithFraction:[bgColor alphaComponent] ofColor:[bgColor 
colorWithAlphaComponent:1.0]] CGColor];
                 if (cgColor == NULL)
@@ -4853,8 +4853,11 @@
                     cgColor = [bgColor CGColor] ?: 
CGColorGetConstantColor(kCGColorBlack);
             });
             [loupeLayer setBackgroundColor:cgColor];
-            if (hasBackgroundView)
+            if (hasBackgroundView) {
                 [loupeWindow setContentView:loupeView];
+                if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
+                    [loupeView setContentFilters:SKColorInvertFilters()];
+            }
         } else if (hasBackgroundView) {
             [(NSVisualEffectView *)[loupeWindow contentView] 
setMaterial:material];
         } else {
@@ -4865,6 +4868,10 @@
             [loupeView setAutoresizingMask:NSViewWidthSizable | 
NSViewHeightSizable];
             [loupeWindow setContentView:view];
             [view addSubview:loupeView];
+            if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey]) {
+                [view setContentFilters:SKColorInvertFilters()];
+                [loupeView setContentFilters:[NSArray array]];
+            }
             [loupeView release];
             if (NSIsEmptyRect([view bounds]) == NO)
                 [view setMaskImage:[NSImage maskImageWithSize:[view 
bounds].size cornerRadius:LOUPE_RADIUS]];
@@ -4932,6 +4939,8 @@
             loupeWindow = [self newOverlayLayer:loupeLayer wantsAdded:NO];
             [loupeWindow setHasShadow:YES];
             [self updateLoupeBackgroundColor];
+            if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
+                SKSetHasLightAppearance(loupeWindow);
             
             [[NSNotificationCenter defaultCenter] addObserver:self
                 
selector:@selector(handlePDFContentViewFrameChangedNotification:)

Modified: trunk/SKSecondaryPDFView.m
===================================================================
--- trunk/SKSecondaryPDFView.m  2021-09-29 15:44:01 UTC (rev 12426)
+++ trunk/SKSecondaryPDFView.m  2021-09-30 14:43:33 UTC (rev 12427)
@@ -101,12 +101,14 @@
     selectsText = [[NSUserDefaults standardUserDefaults] 
boolForKey:SKLastSecondarySelectsTextKey];
     
     SKSetHasDefaultAppearance(self);
-    SKSetHasLightAppearance([[self scrollView] contentView]);
+    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey]) {
+        SKSetHasLightAppearance([self scrollView]);
+        [[self scrollView] setContentFilters:SKColorInvertFilters()];
+    } else {
+        SKSetHasLightAppearance([[self scrollView] contentView]);
+    }
     [self handleScrollerStyleChangedNotification:nil];
     
-    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
-        [[[self scrollView] contentView] 
setContentFilters:SKColorInvertFilters()];
-    
     [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(handleScrollerStyleChangedNotification:)
                                                  
name:NSPreferredScrollerStyleDidChangeNotification object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(handlePageChangedNotification:)
@@ -168,7 +170,7 @@
 - (void)viewDidChangeEffectiveAppearance {
     [super viewDidChangeEffectiveAppearance];
     if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
-        [[[self scrollView] contentView] 
setContentFilters:SKColorInvertFilters()];
+        [[self scrollView] setContentFilters:SKColorInvertFilters()];
 }
 
 #pragma mark Popup buttons

Modified: trunk/SKSnapshotPDFView.m
===================================================================
--- trunk/SKSnapshotPDFView.m   2021-09-29 15:44:01 UTC (rev 12426)
+++ trunk/SKSnapshotPDFView.m   2021-09-30 14:43:33 UTC (rev 12427)
@@ -100,12 +100,14 @@
     minHistoryIndex = 0;
     
     SKSetHasDefaultAppearance(self);
-    SKSetHasLightAppearance([[self scrollView] contentView]);
+    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey]) {
+        SKSetHasLightAppearance([self scrollView]);
+        [[[self scrollView] contentView] 
setContentFilters:SKColorInvertFilters()];
+    } else {
+        SKSetHasLightAppearance([[self scrollView] contentView]);
+    }
     [self handleScrollerStyleChangedNotification:nil];
     
-    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
-        [[[self scrollView] contentView] 
setContentFilters:SKColorInvertFilters()];
-    
     [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(handleScrollerStyleChangedNotification:)
                                                  
name:NSPreferredScrollerStyleDidChangeNotification object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(handlePDFViewFrameChangedNotification:)
@@ -273,7 +275,7 @@
 - (void)viewDidChangeEffectiveAppearance {
     [super viewDidChangeEffectiveAppearance];
     if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
-        [[[self scrollView] contentView] 
setContentFilters:SKColorInvertFilters()];
+        [[self scrollView] setContentFilters:SKColorInvertFilters()];
 }
 
 - (void)handlePDFViewFrameChangedNotification:(NSNotification *)notification {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to