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

Reply via email to