[vlc-commits] [Git][videolan/vlc][master] macosx: VLCTimeField: do not use identifier
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Wed Mar 26 21:43:56 UTC 2025
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
6434ab75 by Marvin Scholz at 2025-03-26T21:30:29+00:00
macosx: VLCTimeField: do not use identifier
Overriding setIdentifier is something that should not be done and
also that identifier is supposed to be unique so it is not really
suitable for our use-case here.
Additionally on older macOS versions this selector is sometimes called
with a nil identifier leading to a crash.
Just go back to a dedicated property for this without hooking into
the view identifier.
- - - - -
3 changed files:
- modules/gui/macosx/views/VLCTimeField.h
- modules/gui/macosx/views/VLCTimeField.m
- modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
Changes:
=====================================
modules/gui/macosx/views/VLCTimeField.h
=====================================
@@ -35,6 +35,7 @@ extern NSString * const VLCTimeFieldDisplayTimeAsRemaining;
@interface VLCTimeField : NSTextField
+ at property (readwrite, assign, nonatomic) NSString *preferencesIdentifier;
@property (readwrite, assign, nonatomic) BOOL isTimeRemaining;
- (void)setTime:(NSString *)time withRemainingTime:(NSString *)remainingTime;
=====================================
modules/gui/macosx/views/VLCTimeField.m
=====================================
@@ -46,11 +46,11 @@ NSString * const VLCTimeFieldDisplayTimeAsRemaining = @"DisplayTimeAsTimeRemaini
[NSUserDefaults.standardUserDefaults registerDefaults:appDefaults];
}
-
-- (void)setIdentifier:(NSUserInterfaceItemIdentifier)identifier
+- (void)setPreferencesIdentifier:(NSString *)preferencesIdentifier
{
- [super setIdentifier:identifier];
- self.isTimeRemaining = [NSUserDefaults.standardUserDefaults boolForKey:self.identifier];
+ _preferencesIdentifier = preferencesIdentifier;
+ self.isTimeRemaining = [NSUserDefaults.standardUserDefaults
+ boolForKey:self.preferencesIdentifier];
}
- (void)setIsTimeRemaining:(BOOL)isTimeRemaining
@@ -58,7 +58,8 @@ NSString * const VLCTimeFieldDisplayTimeAsRemaining = @"DisplayTimeAsTimeRemaini
_isTimeRemaining = isTimeRemaining;
if (self.identifier) {
- [NSUserDefaults.standardUserDefaults setBool:_isTimeRemaining forKey:self.identifier];
+ [NSUserDefaults.standardUserDefaults setBool:_isTimeRemaining
+ forKey:self.preferencesIdentifier];
}
[self updateTimeValue];
@@ -107,8 +108,8 @@ NSString * const VLCTimeFieldDisplayTimeAsRemaining = @"DisplayTimeAsTimeRemaini
- (BOOL)timeRemaining
{
- if (self.identifier) {
- return [NSUserDefaults.standardUserDefaults boolForKey:self.identifier];
+ if (self.preferencesIdentifier) {
+ return [NSUserDefaults.standardUserDefaults boolForKey:self.preferencesIdentifier];
} else {
return _isTimeRemaining;
}
=====================================
modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
=====================================
@@ -215,13 +215,13 @@
self.muteVolumeButton.accessibilityLabel = self.muteVolumeButton.toolTip;
self.timeField.needsDisplay = YES;
- self.timeField.identifier = VLCTimeFieldDisplayTimeAsElapsed;
+ self.timeField.preferencesIdentifier = VLCTimeFieldDisplayTimeAsElapsed;
self.trailingTimeField.isTimeRemaining = NO;
self.timeField.accessibilityLabel = _NS("Playback time");
self.trailingTimeField.isTimeRemaining = !self.timeField.isTimeRemaining;
self.trailingTimeField.needsDisplay = YES;
- self.timeField.identifier = VLCTimeFieldDisplayTimeAsRemaining;
+ self.timeField.preferencesIdentifier = VLCTimeFieldDisplayTimeAsRemaining;
self.trailingTimeField.isTimeRemaining = YES;
self.trailingTimeField.accessibilityLabel = _NS("Playback time");
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/6434ab751c657586aebaf3f5d4c09949ad20e518
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/6434ab751c657586aebaf3f5d4c09949ad20e518
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list