Revision: 27279
http://sourceforge.net/p/bibdesk/svn/27279
Author: hofman
Date: 2022-03-07 17:07:13 +0000 (Mon, 07 Mar 2022)
Log Message:
-----------
Implement delegate setter for pboard helper instead of setting the delegate in
init and terminate
Modified Paths:
--------------
trunk/bibdesk/BDSKItemPasteboardHelper.h
trunk/bibdesk/BDSKItemPasteboardHelper.m
trunk/bibdesk/BibDocument.m
trunk/bibdesk/BibDocument_DataSource.m
Modified: trunk/bibdesk/BDSKItemPasteboardHelper.h
===================================================================
--- trunk/bibdesk/BDSKItemPasteboardHelper.h 2022-03-07 16:46:37 UTC (rev
27278)
+++ trunk/bibdesk/BDSKItemPasteboardHelper.h 2022-03-07 17:07:13 UTC (rev
27279)
@@ -53,10 +53,8 @@
id<BDSKItemPasteboardHelperDelegate> delegate;
}
-- (id)initWithDelegate:(id<BDSKItemPasteboardHelperDelegate>)aDelegate;
+@property (nonatomic, assign) id <BDSKItemPasteboardHelperDelegate> delegate;
-- (void)terminate;
-
- (void)writeItems:(NSArray *)items textRepresentation:(id)text
forDragCopyType:(BDSKDragCopyType)dragCopyType toPasteboard:(NSPasteboard
*)pboard;
- (NSArray *)promisedItemsForPasteboard:(NSPasteboard *)pboard;
Modified: trunk/bibdesk/BDSKItemPasteboardHelper.m
===================================================================
--- trunk/bibdesk/BDSKItemPasteboardHelper.m 2022-03-07 16:46:37 UTC (rev
27278)
+++ trunk/bibdesk/BDSKItemPasteboardHelper.m 2022-03-07 17:07:13 UTC (rev
27279)
@@ -57,18 +57,8 @@
@implementation BDSKItemPasteboardHelper
-- (id)init {
- return [self initWithDelegate:nil];
-}
+@synthesize delegate;
-- (id)initWithDelegate:(id<BDSKItemPasteboardHelperDelegate>)aDelegate {
- if (self = [super init]) {
- promisedPboardTypes = nil;
- delegate = aDelegate;
- }
- return self;
-}
-
- (void)dealloc {
// we should have already cleared everything in the final call to
removePromisedTypesForPasteboard:
BDSKDESTROY(promisedPboardTypes);
@@ -75,38 +65,40 @@
[super dealloc];
}
-- (void)terminate {
- if (delegate) {
- for (NSString *name in [promisedPboardTypes allKeys]) {
- NSPasteboard *pboard = [NSPasteboard pasteboardWithName:name];
- if ([self pasteboardIsValid:pboard] == NO) {
- [self clearPromisedTypesForPasteboard:pboard];
- continue;
- }
- NSMutableDictionary *dict = [promisedPboardTypes
objectForKey:name];
- if (pboard == nil) continue;
- NSArray *items = [[[dict objectForKey:@"items"] copy] autorelease];
- if (items == nil) continue;
- [dict removeObjectForKey:@"items"];
- NSArray *types = [[[dict objectForKey:@"types"] copy] autorelease];
- if ([types containsObject:BDSKPasteboardTypePublications]) {
- [dict setObject:[BibItem archivedPublications:items]
forKey:@"archivedData"];
- }
- if ([types containsObject:NSPasteboardTypePDF] || [types
containsObject:NSPasteboardTypeRTF] || [types
containsObject:NSPasteboardTypeString]) {
- // the remaining type needs a texTask
- // get intermediate data so we don't need the delegate and the
items
- NSString *bibString = nil;
- bibString = [delegate pasteboardHelper:self
bibTeXStringForItems:items];
- if (bibString != nil) {
- [dict setObject:bibString forKey:@"bibTeXString"];
- [dict setObject:[items valueForKey:@"citeKey"]
forKey:@"citeKeys"];
- } else {
+- (void)setDelegate:(id<BDSKItemPasteboardHelperDelegate>)newDelegate {
+ if (newDelegate != delegate) {
+ if (delegate) {
+ for (NSString *name in [promisedPboardTypes allKeys]) {
+ NSPasteboard *pboard = [NSPasteboard pasteboardWithName:name];
+ if ([self pasteboardIsValid:pboard] == NO) {
[self clearPromisedTypesForPasteboard:pboard];
+ continue;
}
+ NSMutableDictionary *dict = [promisedPboardTypes
objectForKey:name];
+ if (pboard == nil) continue;
+ NSArray *items = [[[dict objectForKey:@"items"] copy]
autorelease];
+ if (items == nil) continue;
+ [dict removeObjectForKey:@"items"];
+ NSArray *types = [[[dict objectForKey:@"types"] copy]
autorelease];
+ if ([types containsObject:BDSKPasteboardTypePublications]) {
+ [dict setObject:[BibItem archivedPublications:items]
forKey:@"archivedData"];
+ }
+ if ([types containsObject:NSPasteboardTypePDF] || [types
containsObject:NSPasteboardTypeRTF] || [types
containsObject:NSPasteboardTypeString]) {
+ // the remaining type needs a texTask
+ // get intermediate data so we don't need the delegate and
the items
+ NSString *bibString = nil;
+ bibString = [delegate pasteboardHelper:self
bibTeXStringForItems:items];
+ if (bibString != nil) {
+ [dict setObject:bibString forKey:@"bibTeXString"];
+ [dict setObject:[items valueForKey:@"citeKey"]
forKey:@"citeKeys"];
+ } else {
+ [self clearPromisedTypesForPasteboard:pboard];
+ }
+ }
}
}
+ delegate = newDelegate;
}
- delegate = nil;
}
#pragma mark Promising and adding data
Modified: trunk/bibdesk/BibDocument.m
===================================================================
--- trunk/bibdesk/BibDocument.m 2022-03-07 16:46:37 UTC (rev 27278)
+++ trunk/bibdesk/BibDocument.m 2022-03-07 17:07:13 UTC (rev 27279)
@@ -732,7 +732,7 @@
// the outline view retains its items, so clean them up as well
[groupOutlineView reloadData];
- [pboardHelper terminate];
+ [pboardHelper setDelegate:nil];
[pboardHelper release];
pboardHelper = nil;
@@ -1589,8 +1589,10 @@
- (NSData *)LTBDataAndReturnError:(NSError **)error{
NSPasteboard *pboard = [NSPasteboard pasteboardWithUniqueName];
- if (pboardHelper == nil)
- pboardHelper = [[BDSKItemPasteboardHelper alloc]
initWithDelegate:self];
+ if (pboardHelper == nil) {
+ pboardHelper = [[BDSKItemPasteboardHelper alloc] init];
+ [pboardHelper setDelegate:self];
+ }
[pboardHelper writeItems:[self publicationsForSaving]
textRepresentation:nil forDragCopyType:BDSKDragCopyLTB toPasteboard:pboard];
NSArray *ltbStrings = [pboard readObjectsForClasses:[NSArray
arrayWithObject:[NSString class]] options:[NSDictionary dictionary]];
[pboard clearContents]; // this will clear the pasteboard helper for this
pasteboard
Modified: trunk/bibdesk/BibDocument_DataSource.m
===================================================================
--- trunk/bibdesk/BibDocument_DataSource.m 2022-03-07 16:46:37 UTC (rev
27278)
+++ trunk/bibdesk/BibDocument_DataSource.m 2022-03-07 17:07:13 UTC (rev
27279)
@@ -448,8 +448,10 @@
}
}
- if (pboardHelper == nil)
- pboardHelper = [[BDSKItemPasteboardHelper alloc]
initWithDelegate:self];
+ if (pboardHelper == nil) {
+ pboardHelper = [[BDSKItemPasteboardHelper alloc] init];
+ [pboardHelper setDelegate:self];
+ }
[pboardHelper writeItems:pubs textRepresentation:text
forDragCopyType:dragCopyType toPasteboard:pboard];
return YES;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit