summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@cs.ox.ac.uk>2013-02-12 16:08:59 +0000
committerAlex Merry <alex.merry@cs.ox.ac.uk>2013-02-12 16:21:47 +0000
commit0a7223674204a6e8ee311e226b2b5ddef88803a3 (patch)
tree0c93ec903531c5b2eee065ca36e621ecd782610a /tikzit/src/gtk
parent904fa7d389b98a3ce7735f2979652be43f28ee2a (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.m22
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]];
}
}