[macOS] Fix touch bar observer crash.
This commit is contained in:
@ -66,6 +66,7 @@ GODOT_CLANG_WARNING_PUSH_AND_IGNORE("-Wdeprecated-declarations") // OpenGL is de
|
|||||||
bool last_pen_inverted;
|
bool last_pen_inverted;
|
||||||
bool ime_suppress_next_keyup;
|
bool ime_suppress_next_keyup;
|
||||||
id layer_delegate;
|
id layer_delegate;
|
||||||
|
NSMutableSet<NSString *> *registered_observers;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)processScrollEvent:(NSEvent *)event button:(MouseButton)button factor:(double)factor;
|
- (void)processScrollEvent:(NSEvent *)event button:(MouseButton)button factor:(double)factor;
|
||||||
|
|||||||
@ -109,6 +109,22 @@
|
|||||||
self.layer.needsDisplayOnBoundsChange = YES;
|
self.layer.needsDisplayOnBoundsChange = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)addObserver:(NSObject *)targetObserver forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context {
|
||||||
|
[registered_observers addObject:[[targetObserver description] stringByAppendingString:keyPath]];
|
||||||
|
[super addObserver:targetObserver forKeyPath:keyPath options:options context:context];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)removeObserver:(NSObject *)targetObserver forKeyPath:(NSString *)keyPath {
|
||||||
|
if ([registered_observers containsObject:[[targetObserver description] stringByAppendingString:keyPath]]) {
|
||||||
|
@try {
|
||||||
|
[super removeObserver:targetObserver forKeyPath:keyPath];
|
||||||
|
[registered_observers removeObject:[[targetObserver description] stringByAppendingString:keyPath]];
|
||||||
|
} @catch (NSException *exception) {
|
||||||
|
ERR_PRINT("NSException: " + String::utf8([exception reason].UTF8String));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (id)init {
|
- (id)init {
|
||||||
self = [super init];
|
self = [super init];
|
||||||
layer_delegate = [[GodotContentLayerDelegate alloc] init];
|
layer_delegate = [[GodotContentLayerDelegate alloc] init];
|
||||||
@ -118,6 +134,7 @@
|
|||||||
mouse_down_control = false;
|
mouse_down_control = false;
|
||||||
ignore_momentum_scroll = false;
|
ignore_momentum_scroll = false;
|
||||||
last_pen_inverted = false;
|
last_pen_inverted = false;
|
||||||
|
registered_observers = [[NSMutableSet alloc] init];
|
||||||
[self updateTrackingAreas];
|
[self updateTrackingAreas];
|
||||||
|
|
||||||
self.layerContentsRedrawPolicy = NSViewLayerContentsRedrawDuringViewResize;
|
self.layerContentsRedrawPolicy = NSViewLayerContentsRedrawDuringViewResize;
|
||||||
|
|||||||
Reference in New Issue
Block a user