diff options
author | Alex Merry <alex.merry@cs.ox.ac.uk> | 2013-02-12 16:08:59 +0000 |
---|---|---|
committer | Alex Merry <alex.merry@cs.ox.ac.uk> | 2013-02-12 16:21:47 +0000 |
commit | 0a7223674204a6e8ee311e226b2b5ddef88803a3 (patch) | |
tree | 0c93ec903531c5b2eee065ca36e621ecd782610a /tikzit/src/gtk | |
parent | 904fa7d389b98a3ce7735f2979652be43f28ee2a (diff) |
Make sure edge bounds include decorations
Fixes rendering of newly-drawn edges in GTK+ version.
Diffstat (limited to 'tikzit/src/gtk')
-rw-r--r-- | tikzit/src/gtk/Edge+Render.m | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/tikzit/src/gtk/Edge+Render.m b/tikzit/src/gtk/Edge+Render.m index 1f5c41a..3cc2a14 100644 --- a/tikzit/src/gtk/Edge+Render.m +++ b/tikzit/src/gtk/Edge+Render.m @@ -30,15 +30,13 @@ static const float cpLineWidth = 1.0; return cpRadius; } -- (float) controlDistanceWithTransformer:(Transformer*)transformer { - NSPoint c_source = [transformer toScreen:src]; - NSPoint c_target = [transformer toScreen:targ]; - const float dx = (c_target.x - c_source.x); - const float dy = (c_target.y - c_source.y); +- (float) controlDistance { + const float dx = (targ.x - src.x); + const float dy = (targ.y - src.y); if (dx == 0 && dy == 0) { - return [transformer scaleToScreen:weight]; + return weight; } else { - return NSDistanceBetweenPoints(c_source, c_target) * weight; + return NSDistanceBetweenPoints(src, targ) * weight; } } @@ -237,12 +235,14 @@ static const float cpLineWidth = 1.0; } - (NSRect) renderedBoundsWithTransformer:(Transformer*)t whenSelected:(BOOL)selected { - NSRect bRect = [t rectToScreen:[self boundingRect]]; if (selected) { - float c_dist = [self controlDistanceWithTransformer:t]; - return NSInsetRect (bRect, -c_dist, -c_dist); + float c_dist = [self controlDistance] + cpRadius; // include handle + NSRect cp1circ = NSMakeRect (head.x - c_dist, head.y - c_dist, 2*c_dist, 2*c_dist); + NSRect cp2circ = NSMakeRect (tail.x - c_dist, tail.y - c_dist, 2*c_dist, 2*c_dist); + NSRect rect = NSUnionRect ([self boundingRect], NSUnionRect (cp1circ, cp2circ)); + return [t rectToScreen:rect]; } else { - return bRect; + return [t rectToScreen:[self boundingRect]]; } } |