Author: ericwa
Date: Tue Mar 25 17:26:33 2014
New Revision: 10635

URL: http://svn.gna.org/viewcvs/etoile?rev=10635&view=rev
Log:
ProjectDemo: fix drag & drop for document & project undo modes

Modified:
    
trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/EWDocumentWindowController.m
    trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m

Modified: 
trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/EWDocumentWindowController.m
URL: 
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/EWDocumentWindowController.m?rev=10635&r1=10634&r2=10635&view=diff
==============================================================================
--- 
trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/EWDocumentWindowController.m
 (original)
+++ 
trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/EWDocumentWindowController.m
 Tue Mar 25 17:26:33 2014
@@ -32,6 +32,11 @@
                                                                                
                 name: COObjectGraphContextObjectsDidChangeNotification
                                                                                
           object: self.objectGraphContext];
        
+       [[NSNotificationCenter defaultCenter] addObserver: self
+                                                                               
         selector: @selector(defaultsChanged:)
+                                                                               
                 name: NSUserDefaultsDidChangeNotification
+                                                                               
           object: nil];
+       
        return self;
 }
 
@@ -59,6 +64,11 @@
                                                                                
                 name: COObjectGraphContextObjectsDidChangeNotification
                                                                                
           object: self.objectGraphContext];
        
+       [[NSNotificationCenter defaultCenter] addObserver: self
+                                                                               
         selector: @selector(defaultsChanged:)
+                                                                               
                 name: NSUserDefaultsDidChangeNotification
+                                                                               
           object: nil];
+       
        return self;
 }
 
@@ -177,17 +187,23 @@
        {
                NSString *name = self.windowID;
 
-               // TODO: Re-enable
-//             if ([[self class] isProjectUndo])
-//             {
-//                     name = @"org.etoile.projectdemo";
-//             }
+               if ([[self class] isProjectUndo])
+               {
+                       name = @"org.etoile.projectdemo";
+               }
                
                _undoTrack = [COUndoTrack trackForName: name
                                                        withEditingContext: 
self.editingContext];
                _undoTrack.customRevisionMetadata = @{ @"username" : 
NSFullUserName() };
        }
        return _undoTrack;
+}
+
+- (void) defaultsChanged: (NSNotification*)notif
+{
+       // Re-cache undo track
+       _undoTrack = nil;
+       [self undoTrack];
 }
 
 // UI Stuff

Modified: 
trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m
URL: 
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m?rev=10635&r1=10634&r2=10635&view=diff
==============================================================================
--- trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m  
(original)
+++ trunk/Etoile/Frameworks/CoreObject/Samples/ProjectDemo/OutlineController.m  
Tue Mar 25 17:26:33 2014
@@ -673,8 +673,11 @@
                                NSUInteger oldIndex = [[oldParent contents] 
indexOfObject: outlineItem];
                                [oldParent removeItemAtIndex: oldIndex];
                        }
-                       
-            OutlineController *sourceController = (OutlineController 
*)[(ApplicationDelegate *)[NSApp delegate] controllerForDocumentRootObject: 
[oldParent document]];
+                       Document *document = [oldParent rootObject];
+                       ETAssert(document != nil);
+                       
+            OutlineController *sourceController = (OutlineController 
*)[(ApplicationDelegate *)[NSApp delegate] controllerForDocumentRootObject: 
document];
+                       ETAssert(sourceController != nil);
                        
                        if (![[self class] isProjectUndo])
                        {
@@ -684,7 +687,10 @@
                        else
                        {
                                // Commit both persistent roots in one commit
-                               [self.editingContext commitWithUndoTrack: [self 
undoTrack]];
+                               [self.editingContext commitWithIdentifier: 
@"org.etoile.ProjectDemo.drop"
+                                                                               
                 metadata: @{}
+                                                                               
                undoTrack: [self undoTrack]
+                                                                               
                        error: NULL];
                        }
         }
        }


_______________________________________________
Etoile-cvs mailing list
Etoile-cvs@gna.org
https://mail.gna.org/listinfo/etoile-cvs

Reply via email to