Commit c6706186 authored by David Fuhrmann's avatar David Fuhrmann

macosx: add multiple files dragged to dock icon together

close #4358

(cherry picked from commit 13e2c3bd)
(cherry picked from commit cfaaf916)
(cherry picked from commit a89495bb)
Signed-off-by: default avatarDavid Fuhrmann <david.fuhrmann@googlemail.com>
parent a591abb6
...@@ -196,7 +196,7 @@ struct intf_sys_t ...@@ -196,7 +196,7 @@ struct intf_sys_t
- (void)showFullscreenController; - (void)showFullscreenController;
- (void)updateDelays; - (void)updateDelays;
- (void)initStrings; - (void)initStrings;
- (BOOL)application:(NSApplication *)o_app openFile:(NSString *)o_filename; - (BOOL)application:(NSApplication *)o_app openFiles:(NSString *)o_filename;
- (IBAction)crashReporterAction:(id)sender; - (IBAction)crashReporterAction:(id)sender;
- (IBAction)openCrashLog:(id)sender; - (IBAction)openCrashLog:(id)sender;
......
...@@ -900,39 +900,48 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -900,39 +900,48 @@ static VLCMain *_o_sharedMainInstance = nil;
} }
#pragma mark - #pragma mark -
#pragma mark File opening #pragma mark File opening over dock icon
- (BOOL)application:(NSApplication *)o_app openFile:(NSString *)o_filename - (BOOL)application:(NSApplication *)o_app openFiles:(NSArray *)o_names
{ {
BOOL b_autoplay = config_GetInt( VLCIntf, "macosx-autoplay" ); BOOL b_autoplay = config_GetInt( VLCIntf, "macosx-autoplay" );
char *psz_uri = make_URI([o_filename UTF8String], "file" ); char *psz_uri = make_URI([[o_names objectAtIndex:0] UTF8String], "file" );
if( !psz_uri )
return( FALSE );
input_thread_t * p_input = pl_CurrentInput( VLCIntf ); // try to add file as subtitle
BOOL b_returned = NO; if( [o_names count] == 1 && psz_uri )
if (p_input)
{ {
b_returned = input_AddSubtitle( p_input, psz_uri, true ); input_thread_t * p_input = pl_CurrentInput( VLCIntf );
vlc_object_release( p_input ); if( p_input )
if(!b_returned)
{ {
free( psz_uri ); BOOL b_returned = NO;
return YES; b_returned = input_AddSubtitle( p_input, psz_uri, true );
vlc_object_release( p_input );
if( !b_returned )
{
free( psz_uri );
return YES;
}
} }
} }
else if( p_input ) free( psz_uri );
vlc_object_release( p_input );
NSDictionary *o_dic = [NSDictionary dictionaryWithObject:[NSString stringWithCString:psz_uri encoding:NSUTF8StringEncoding] forKey:@"ITEM_URL"]; NSArray *o_sorted_names = [o_names sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)];
NSMutableArray *o_result = [NSMutableArray arrayWithCapacity: [o_sorted_names count]];
for( int i = 0; i < [o_sorted_names count]; i++ )
{
psz_uri = make_URI([[o_sorted_names objectAtIndex: i] UTF8String], "file" );
if( !psz_uri )
continue;
free( psz_uri ); NSDictionary *o_dic = [NSDictionary dictionaryWithObject:[NSString stringWithCString:psz_uri encoding:NSUTF8StringEncoding] forKey:@"ITEM_URL"];
free( psz_uri );
[o_result addObject: o_dic];
}
if( b_autoplay ) if( b_autoplay )
[o_playlist appendArray: [NSArray arrayWithObject: o_dic] atPos: -1 enqueue: NO]; [o_playlist appendArray: o_result atPos: -1 enqueue: NO];
else else
[o_playlist appendArray: [NSArray arrayWithObject: o_dic] atPos: -1 enqueue: YES]; [o_playlist appendArray: o_result atPos: -1 enqueue: YES];
return( TRUE ); return( TRUE );
} }
......
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