This commit is contained in:
Gregory John Casamento 2019-09-27 04:49:29 -04:00
parent 09268f3e17
commit 8f3f8c08df
2 changed files with 22 additions and 5 deletions

View file

@ -74,13 +74,8 @@ DEFINE_BLOCK_TYPE(GSBatchAccessorCompositeBlock, void, GSBatchAccessorCompletion
@interface NSFileCoordinator : NSObject @interface NSFileCoordinator : NSObject
{ {
id _accessArbiter;
id _fileReactor;
id _purposeIdentifier; id _purposeIdentifier;
NSURL *_recentFilePresenterURL;
id _accessClaimIDOrIDs;
BOOL _isCancelled; BOOL _isCancelled;
NSMutableDictionary *_movedItems;
} }
+ (NSArray *) filePresenters; + (NSArray *) filePresenters;

View file

@ -29,9 +29,12 @@
#import <Foundation/NSDictionary.h> #import <Foundation/NSDictionary.h>
#import <Foundation/NSFilePresenter.h> #import <Foundation/NSFilePresenter.h>
#import <Foundation/NSOperation.h> #import <Foundation/NSOperation.h>
#import <Foundation/NSString.h>
static NSMutableArray *__presenters = nil; static NSMutableArray *__presenters = nil;
static NSMutableDictionary *__presenterMap = nil; static NSMutableDictionary *__presenterMap = nil;
static unsigned int __pid = 0;
static NSMutableDictionary *__presenterIdDict = nil;
@implementation NSFileAccessIntent @implementation NSFileAccessIntent
- (instancetype) init - (instancetype) init
@ -80,6 +83,7 @@ static NSMutableDictionary *__presenterMap = nil;
{ {
__presenters = [[NSMutableArray alloc] init]; __presenters = [[NSMutableArray alloc] init];
__presenterMap = [[NSMutableDictionary alloc] init]; __presenterMap = [[NSMutableDictionary alloc] init];
__presenterIdDict = [[NSMutableDictionary alloc] init];
} }
} }
@ -92,12 +96,29 @@ static NSMutableDictionary *__presenterMap = nil;
{ {
[__presenters addObject: presenter]; [__presenters addObject: presenter];
[__presenterMap setObject: presenter forKey: [presenter presentedItemURL]]; [__presenterMap setObject: presenter forKey: [presenter presentedItemURL]];
[__presenterIdDict setObject: presenter forKey: [presenter purposeIdentifier]];
} }
+ (void) removeFilePresenter: (id)presenter + (void) removeFilePresenter: (id)presenter
{ {
[__presenters removeObject: presenter]; [__presenters removeObject: presenter];
[__presenterMap removeObjectForKey: [presenter presentedItemURL]]; [__presenterMap removeObjectForKey: [presenter presentedItemURL]];
[__presenterIdDict removeObjectForKey: [presenter purposeIdentifier]];
}
- (instancetype) init
{
self = [super init];
if(self != nil)
{
NSString *p = nil;
__pid++;
p = [NSString stringWithFormat: @"%d",__pid];
_purposeIdentifier = RETAIN(p);
_isCancelled = NO;
}
return self;
} }
- (NSString *) purposeIdentifier - (NSString *) purposeIdentifier
@ -120,6 +141,7 @@ static NSMutableDictionary *__presenterMap = nil;
NSOperationQueue *q = [o presentedItemOperationQueue]; NSOperationQueue *q = [o presentedItemOperationQueue];
[q cancelAllOperations]; [q cancelAllOperations];
} }
_isCancelled = YES;
} }
- (void)coordinateAccessWithIntents: (NSArray *)intents - (void)coordinateAccessWithIntents: (NSArray *)intents