Revision: 29164
http://sourceforge.net/p/bibdesk/svn/29164
Author: hofman
Date: 2025-04-21 15:53:35 +0000 (Mon, 21 Apr 2025)
Log Message:
-----------
only register for key and main change notifications when we have a window and
the background color is nil
Modified Paths:
--------------
trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m
Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m
===================================================================
--- trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m 2025-04-21
15:34:31 UTC (rev 29163)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m 2025-04-21
15:53:35 UTC (rev 29164)
@@ -266,6 +266,8 @@
- (void)_stopPreviewing;
- (void)_updatePreviewer;
- (void)handlePreviewerWillClose:(NSNotification *)aNote;
+- (void)_registerForKeyOrMainStateNotifications;
+- (void)_unregisterForKeyOrMainStateNotifications;
@end
@@ -495,6 +497,12 @@
- (void)setBackgroundColor:(NSColor *)aColor;
{
if (_backgroundColor != aColor) {
+ if ([self window]) {
+ if (_backgroundColor == nil)
+ [self _unregisterForKeyOrMainStateNotifications];
+ else if (aColor == nil)
+ [self _registerForKeyOrMainStateNotifications];
+ }
_backgroundColor = [aColor copy];
[_backgroundView setBackgroundColor:_backgroundColor];
}
@@ -1116,11 +1124,19 @@
}
}
-- (void)viewWillMoveToWindow:(NSWindow *)newWindow {
+- (void)_registerForKeyOrMainStateNotifications {
NSWindow *window = [self window];
- if (newWindow == nil && [[_sliderWindow parentWindow] isEqual:window]) {
- [_sliderWindow orderOut:nil];
+ if (window) {
+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
+ [nc addObserver:self
selector:@selector(_handleKeyOrMainStateNotification:)
name:NSWindowDidBecomeMainNotification object:window];
+ [nc addObserver:self
selector:@selector(_handleKeyOrMainStateNotification:)
name:NSWindowDidResignMainNotification object:window];
+ [nc addObserver:self
selector:@selector(_handleKeyOrMainStateNotification:)
name:NSWindowDidBecomeKeyNotification object:window];
+ [nc addObserver:self
selector:@selector(_handleKeyOrMainStateNotification:)
name:NSWindowDidResignKeyNotification object:window];
}
+}
+
+- (void)_unregisterForKeyOrMainStateNotifications {
+ NSWindow *window = [self window];
if (window) {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc removeObserver:self name:NSWindowDidBecomeMainNotification
object:window];
@@ -1128,18 +1144,23 @@
[nc removeObserver:self name:NSWindowDidBecomeKeyNotification
object:window];
[nc removeObserver:self name:NSWindowDidResignKeyNotification
object:window];
}
+}
+
+- (void)viewWillMoveToWindow:(NSWindow *)newWindow {
+ NSWindow *window = [self window];
+ if (newWindow == nil && [[_sliderWindow parentWindow] isEqual:window]) {
+ [_sliderWindow orderOut:nil];
+ }
+ if (window && _backgroundColor == nil) {
+ [self _unregisterForKeyOrMainStateNotifications];
+ }
[super viewWillMoveToWindow:newWindow];
}
- (void)viewDidMoveToWindow {
// for redrawing background color
- NSWindow *window = [self window];
- if (window) {
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- [nc addObserver:self
selector:@selector(_handleKeyOrMainStateNotification:)
name:NSWindowDidBecomeMainNotification object:window];
- [nc addObserver:self
selector:@selector(_handleKeyOrMainStateNotification:)
name:NSWindowDidResignMainNotification object:window];
- [nc addObserver:self
selector:@selector(_handleKeyOrMainStateNotification:)
name:NSWindowDidBecomeKeyNotification object:window];
- [nc addObserver:self
selector:@selector(_handleKeyOrMainStateNotification:)
name:NSWindowDidResignKeyNotification object:window];
+ if ([self window] && _backgroundColor == nil) {
+ [self _registerForKeyOrMainStateNotifications];
}
[super viewDidMoveToWindow];
}
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