[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