Revision: 22658
http://sourceforge.net/p/bibdesk/svn/22658
Author: hofman
Date: 2018-09-23 18:38:11 +0000 (Sun, 23 Sep 2018)
Log Message:
-----------
check writability and whether location is required when adding or removing
without location specifier
Modified Paths:
--------------
trunk/bibdesk/BDSKAddCommand.m
trunk/bibdesk/BDSKRemoveCommand.m
Modified: trunk/bibdesk/BDSKAddCommand.m
===================================================================
--- trunk/bibdesk/BDSKAddCommand.m 2018-09-23 12:14:17 UTC (rev 22657)
+++ trunk/bibdesk/BDSKAddCommand.m 2018-09-23 18:38:11 UTC (rev 22658)
@@ -88,8 +88,11 @@
if ([locationSpecifier isKindOfClass:[NSPositionalSpecifier
class]]) {
[locationSpecifier
setInsertionClassDescription:insertionClassDescription];
insertionContainer = [locationSpecifier insertionContainer];
+ containerClassDescription = [insertionContainer
scriptClassDescription];
insertionKey = [locationSpecifier insertionKey];
insertionIndex = [locationSpecifier insertionIndex];
+ if ([containerClassDescription
isLocationRequiredToCreateForKey:insertionKey])
+ insertionContainer = nil;
} else if ([locationSpecifier isKindOfClass:[NSPropertySpecifier
class]]) {
insertionContainer = [[locationSpecifier containerSpecifier]
objectsByEvaluatingSpecifier];
insertionKey = [locationSpecifier key];
@@ -103,6 +106,7 @@
for (NSString *key in [containerClassDescription
toManyRelationshipKeys]) {
NSScriptClassDescription *keyClassDescription =
[containerClassDescription classDescriptionForKey:key];
if ([insertionClassDescription
isKindOfClassDescription:keyClassDescription] &&
+ [containerClassDescription
hasWritablePropertyForKey:key] &&
[containerClassDescription
isLocationRequiredToCreateForKey:key] == NO) {
insertionKey = key;
break;
Modified: trunk/bibdesk/BDSKRemoveCommand.m
===================================================================
--- trunk/bibdesk/BDSKRemoveCommand.m 2018-09-23 12:14:17 UTC (rev 22657)
+++ trunk/bibdesk/BDSKRemoveCommand.m 2018-09-23 18:38:11 UTC (rev 22658)
@@ -100,7 +100,8 @@
containerClassDescription = [removeContainer
scriptClassDescription];
for (NSString *key in [containerClassDescription
toManyRelationshipKeys]) {
NSScriptClassDescription *keyClassDescription =
[containerClassDescription classDescriptionForKey:key];
- if ([removeClassDescription
isKindOfClassDescription:keyClassDescription]) {
+ if ([removeClassDescription
isKindOfClassDescription:keyClassDescription] &&
+ [containerClassDescription
hasWritablePropertyForKey:key]) {
removeKey = key;
break;
}
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