Commit 4fac1895 authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: improve the handling of broken prefs and make sure that the user is...

macosx: improve the handling of broken prefs and make sure that the user is unable to re-break them without using the command-line or a text editor
parent bfd2978e
...@@ -75,4 +75,6 @@ ...@@ -75,4 +75,6 @@
- (void)setAspectRatioLocked:(BOOL)b_value; - (void)setAspectRatioLocked:(BOOL)b_value;
- (BOOL)aspectRatioIsLocked; - (BOOL)aspectRatioIsLocked;
- (void)toggleFullscreen; - (void)toggleFullscreen;
- (BOOL)fixPreferences;
@end @end
...@@ -638,4 +638,41 @@ static VLCCoreInteraction *_o_sharedInstance = nil; ...@@ -638,4 +638,41 @@ static VLCCoreInteraction *_o_sharedInstance = nil;
} }
} }
#pragma mark -
#pragma mark uncommon stuff
- (BOOL)fixPreferences
{
NSMutableString * o_workString;
NSRange returnedRange;
NSRange fullRange;
BOOL b_needsRestart = NO;
#define fixpref( pref ) \
o_workString = [[NSMutableString alloc] initWithFormat:@"%s", config_GetPsz( VLCIntf, pref )]; \
if ([o_workString length] > 0) \
{ \
returnedRange = [o_workString rangeOfString:@"macosx" options: NSCaseInsensitiveSearch]; \
if (returnedRange.location != NSNotFound) \
{ \
if ([o_workString isEqualToString:@"macosx"]) \
[o_workString setString:@""]; \
fullRange = NSMakeRange( 0, [o_workString length] ); \
[o_workString replaceOccurrencesOfString:@":macosx" withString:@"" options: NSCaseInsensitiveSearch range: fullRange]; \
fullRange = NSMakeRange( 0, [o_workString length] ); \
[o_workString replaceOccurrencesOfString:@"macosx:" withString:@"" options: NSCaseInsensitiveSearch range: fullRange]; \
\
config_PutPsz( VLCIntf, pref, [o_workString UTF8String] ); \
b_needsRestart = YES; \
} \
} \
[o_workString release]
fixpref( "control" );
fixpref( "extraintf" );
#undef fixpref
return b_needsRestart;
}
@end @end
...@@ -1899,38 +1899,10 @@ unsigned int CocoaKeyToVLC( unichar i_key ) ...@@ -1899,38 +1899,10 @@ unsigned int CocoaKeyToVLC( unichar i_key )
if( version == 1 ) if( version == 1 )
{ {
NSMutableString * o_workString;
NSRange returnedRange;
NSRange fullRange;
BOOL b_needsRestart = NO;
#define fixpref( pref ) \
o_workString = [[NSMutableString alloc] initWithFormat:@"%s", config_GetPsz( VLCIntf, pref )]; \
if ([o_workString length] > 0) \
{ \
returnedRange = [o_workString rangeOfString:@"macosx" options: NSCaseInsensitiveSearch]; \
if (returnedRange.location != NSNotFound) \
{ \
fullRange = NSMakeRange( 0, [o_workString length] ); \
[o_workString replaceOccurrencesOfString:@":macosx" withString:@"" options: NSCaseInsensitiveSearch range: fullRange]; \
fullRange = NSMakeRange( 0, [o_workString length] ); \
[o_workString replaceOccurrencesOfString:@"macosx:" withString:@"" options: NSCaseInsensitiveSearch range: fullRange]; \
fullRange = NSMakeRange( 0, [o_workString length] ); \
[o_workString replaceOccurrencesOfString:@"macosx" withString:@"" options: NSCaseInsensitiveSearch range: fullRange]; \
config_PutPsz( VLCIntf, pref, [o_workString UTF8String] ); \
b_needsRestart = YES; \
} \
} \
[o_workString release]
fixpref( "control" );
fixpref( "extraintf" );
#undef fixpref
[[NSUserDefaults standardUserDefaults] setInteger:kCurrentPreferencesVersion forKey:kVLCPreferencesVersion]; [[NSUserDefaults standardUserDefaults] setInteger:kCurrentPreferencesVersion forKey:kVLCPreferencesVersion];
[[NSUserDefaults standardUserDefaults] synchronize]; [[NSUserDefaults standardUserDefaults] synchronize];
if (!b_needsRestart) if (![[VLCCoreInteraction sharedInstance] fixPreferences])
return; return;
else else
config_SaveConfigFile( VLCIntf ); // we need to do manually, since we won't quit libvlc cleanly config_SaveConfigFile( VLCIntf ); // we need to do manually, since we won't quit libvlc cleanly
...@@ -1959,7 +1931,7 @@ unsigned int CocoaKeyToVLC( unichar i_key ) ...@@ -1959,7 +1931,7 @@ unsigned int CocoaKeyToVLC( unichar i_key )
return; return;
} }
NSArray * ourPreferences = [NSArray arrayWithObjects:@"org.videolan.vlc.plist", @"VLC", nil]; NSArray * ourPreferences = [NSArray arrayWithObjects:@"org.videolan.vlc.plist", @"VLC", @"org.videolan.vlc", nil];
/* Move the file to trash so that user can find them later */ /* Move the file to trash so that user can find them later */
[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:preferences destination:nil files:ourPreferences tag:0]; [[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:preferences destination:nil files:ourPreferences tag:0];
......
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
#import "prefs.h" #import "prefs.h"
#import "simple_prefs.h" #import "simple_prefs.h"
#import "prefs_widgets.h" #import "prefs_widgets.h"
#import "CoreInteraction.h"
#import <vlc_keys.h> #import <vlc_keys.h>
#import <vlc_modules.h> #import <vlc_modules.h>
#import <vlc_plugin.h> #import <vlc_plugin.h>
...@@ -213,6 +214,7 @@ static VLCPrefs *_o_sharedMainInstance = nil; ...@@ -213,6 +214,7 @@ static VLCPrefs *_o_sharedMainInstance = nil;
{ {
/* TODO: call savePrefs on Root item */ /* TODO: call savePrefs on Root item */
[_rootTreeItem applyChanges]; [_rootTreeItem applyChanges];
[[VLCCoreInteraction sharedInstance] fixPreferences];
config_SaveConfigFile( p_intf ); config_SaveConfigFile( p_intf );
[o_prefs_window orderOut:self]; [o_prefs_window orderOut:self];
} }
......
...@@ -1011,6 +1011,8 @@ static inline void save_module_list( intf_thread_t * p_intf, id object, const ch ...@@ -1011,6 +1011,8 @@ static inline void save_module_list( intf_thread_t * p_intf, id object, const ch
b_hotkeyChanged = NO; b_hotkeyChanged = NO;
} }
[[VLCCoreInteraction sharedInstance] fixPreferences];
/* okay, let's save our changes to vlcrc */ /* okay, let's save our changes to vlcrc */
config_SaveConfigFile( p_intf ); config_SaveConfigFile( p_intf );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment