From 04fe94210f4e17514631791760cbf3007a4d409a Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Thu, 14 Jun 2012 17:14:30 +0100 Subject: Re-render bend incident edges when node style changes The node shape affects where edges terminate. This affects the shape of bent edges. --- tikzit/src/common/Edge.m | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'tikzit/src/common/Edge.m') diff --git a/tikzit/src/common/Edge.m b/tikzit/src/common/Edge.m index ab1aea6..0da38db 100644 --- a/tikzit/src/common/Edge.m +++ b/tikzit/src/common/Edge.m @@ -308,6 +308,9 @@ - (Node*)source {return source;} - (void)setSource:(Node *)s { if (source != s) { + [source removeObserver:self + forKeyPath:@"style"]; + [source release]; source = [s retain]; @@ -315,6 +318,11 @@ bendMode = EdgeBendModeInOut; weight = 1.0f; } + + [source addObserver:self + forKeyPath:@"style" + options:NSKeyValueObservingOptionNew + context:NULL]; dirty = YES; } @@ -323,6 +331,9 @@ - (Node*)target {return target;} - (void)setTarget:(Node *)t { if (target != t) { + [target removeObserver:self + forKeyPath:@"style"]; + [target release]; target = [t retain]; @@ -330,46 +341,52 @@ bendMode = EdgeBendModeInOut; weight = 1.0f; } + + [target addObserver:self + forKeyPath:@"style" + options:NSKeyValueObservingOptionNew + context:NULL]; dirty = YES; } } +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(NSDictionary *)change + context:(void *)context + +{ + dirty = YES; +} + // edgeNode and hasEdgeNode use a bit of key-value observing to help the mac GUI keep up - (Node*)edgeNode {return edgeNode;} - (void)setEdgeNode:(Node *)n { -#if defined (__APPLE__) [self willChangeValueForKey:@"edgeNode"]; [self willChangeValueForKey:@"hasEdgeNode"]; -#endif if (edgeNode != n) { hasEdgeNode = (n != nil); [edgeNode release]; edgeNode = [n retain]; // don't set dirty bit, because control points don't need update } -#if defined (__APPLE__) [self didChangeValueForKey:@"edgeNode"]; [self didChangeValueForKey:@"hasEdgeNode"]; -#endif } - (BOOL)hasEdgeNode { return hasEdgeNode; } - (void)setHasEdgeNode:(BOOL)b { -#if defined (__APPLE__) [self willChangeValueForKey:@"edgeNode"]; [self willChangeValueForKey:@"hasEdgeNode"]; -#endif hasEdgeNode = b; if (hasEdgeNode && edgeNode == nil) { edgeNode = [[Node alloc] init]; } -#if defined (__APPLE__) [self didChangeValueForKey:@"edgeNode"]; [self didChangeValueForKey:@"hasEdgeNode"]; -#endif } @synthesize data; -- cgit v1.2.3