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