diff options
author | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-30 15:33:15 +0000 |
---|---|---|
committer | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-30 15:33:15 +0000 |
commit | a7184527c392a02cf34b85f7f40f9d59348dfb26 (patch) | |
tree | 63449c8886cbadf998bbc5bcead8af645e716983 /tikzit/src/gtk | |
parent | 31ff43125b0629b688a36c2a97c233ec878b3fbc (diff) |
Undo/redo support for ordering changes
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@404 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'tikzit/src/gtk')
-rw-r--r-- | tikzit/src/gtk/TikzDocument.m | 84 |
1 files changed, 48 insertions, 36 deletions
diff --git a/tikzit/src/gtk/TikzDocument.m b/tikzit/src/gtk/TikzDocument.m index 8672266..40411d9 100644 --- a/tikzit/src/gtk/TikzDocument.m +++ b/tikzit/src/gtk/TikzDocument.m @@ -697,20 +697,23 @@ if (!hasNodeSelection && !hasEdgeSelection) return; - //[self startUndoGroup]; + [self startUndoGroup]; + GraphChange *nodeChange; + GraphChange *edgeChange; if (hasNodeSelection) { - /*GraphChange *change =*/ - [graph bringNodesForward:[pickSupport selectedNodes]]; - //[self registerUndoForChange:change]; + nodeChange = [graph bringNodesForward:[pickSupport selectedNodes]]; + [self registerUndoForChange:nodeChange]; } if (hasEdgeSelection) { - /*GraphChange *change =*/ - [graph bringEdgesForward:[pickSupport selectedEdges]]; - //[self registerUndoForChange:change]; + edgeChange = [graph bringEdgesForward:[pickSupport selectedEdges]]; + [self registerUndoForChange:edgeChange]; } - //[self nameAndEndUndoGroup:@"Bring forward"]; + [self nameAndEndUndoGroup:@"Bring forward"]; [self regenerateTikz]; - //[self postGraphChange:change]; + if (hasNodeSelection) + [self postGraphChange:nodeChange]; + if (hasEdgeSelection) + [self postGraphChange:edgeChange]; } - (void) bringSelectionToFront { @@ -719,20 +722,23 @@ if (!hasNodeSelection && !hasEdgeSelection) return; - //[self startUndoGroup]; + [self startUndoGroup]; + GraphChange *nodeChange; + GraphChange *edgeChange; if (hasNodeSelection) { - /*GraphChange *change =*/ - [graph bringNodesToFront:[pickSupport selectedNodes]]; - //[self registerUndoForChange:change]; + nodeChange = [graph bringNodesToFront:[pickSupport selectedNodes]]; + [self registerUndoForChange:nodeChange]; } if (hasEdgeSelection) { - /*GraphChange *change =*/ - [graph bringEdgesToFront:[pickSupport selectedEdges]]; - //[self registerUndoForChange:change]; + edgeChange = [graph bringEdgesToFront:[pickSupport selectedEdges]]; + [self registerUndoForChange:edgeChange]; } - //[self nameAndEndUndoGroup:@"Bring to front"]; + [self nameAndEndUndoGroup:@"Bring to front"]; [self regenerateTikz]; - //[self postGraphChange:change]; + if (hasNodeSelection) + [self postGraphChange:nodeChange]; + if (hasEdgeSelection) + [self postGraphChange:edgeChange]; } - (void) sendSelectionBackward { @@ -741,20 +747,23 @@ if (!hasNodeSelection && !hasEdgeSelection) return; - //[self startUndoGroup]; + [self startUndoGroup]; + GraphChange *nodeChange; + GraphChange *edgeChange; if (hasNodeSelection) { - /*GraphChange *change =*/ - [graph sendNodesBackward:[pickSupport selectedNodes]]; - //[self registerUndoForChange:change]; + nodeChange = [graph sendNodesBackward:[pickSupport selectedNodes]]; + [self registerUndoForChange:nodeChange]; } if (hasEdgeSelection) { - /*GraphChange *change =*/ - [graph sendNodesBackward:[pickSupport selectedEdges]]; - //[self registerUndoForChange:change]; + edgeChange = [graph sendNodesBackward:[pickSupport selectedEdges]]; + [self registerUndoForChange:edgeChange]; } - //[self nameAndEndUndoGroup:@"Send backward"]; + [self nameAndEndUndoGroup:@"Send backward"]; [self regenerateTikz]; - //[self postGraphChange:change]; + if (hasNodeSelection) + [self postGraphChange:nodeChange]; + if (hasEdgeSelection) + [self postGraphChange:edgeChange]; } - (void) sendSelectionToBack { @@ -763,20 +772,23 @@ if (!hasNodeSelection && !hasEdgeSelection) return; - //[self startUndoGroup]; + [self startUndoGroup]; + GraphChange *nodeChange; + GraphChange *edgeChange; if (hasNodeSelection) { - /*GraphChange *change =*/ - [graph sendNodesToBack:[pickSupport selectedNodes]]; - //[self registerUndoForChange:change]; + nodeChange = [graph sendNodesToBack:[pickSupport selectedNodes]]; + [self registerUndoForChange:nodeChange]; } if (hasEdgeSelection) { - /*GraphChange *change =*/ - [graph sendNodesToBack:[pickSupport selectedEdges]]; - //[self registerUndoForChange:change]; + edgeChange = [graph sendNodesToBack:[pickSupport selectedEdges]]; + [self registerUndoForChange:edgeChange]; } - //[self nameAndEndUndoGroup:@"Send to back"]; + [self nameAndEndUndoGroup:@"Send to back"]; [self regenerateTikz]; - //[self postGraphChange:change]; + if (hasNodeSelection) + [self postGraphChange:nodeChange]; + if (hasEdgeSelection) + [self postGraphChange:edgeChange]; } - (BOOL) saveCopyToPath: (NSString*)p error: (NSError**)error { |