diff -r 5e7280814916 -r 5cd92c743958 src/Tools/Graphview/graph_panel.scala --- a/src/Tools/Graphview/graph_panel.scala Sun Jan 04 16:45:41 2015 +0100 +++ b/src/Tools/Graphview/graph_panel.scala Sun Jan 04 21:01:27 2015 +0100 @@ -164,9 +164,7 @@ object Mouse_Interaction { - type Dummy = (Graph_Display.Edge, Int) - - private var draginfo: (Point, List[Graph_Display.Node], List[Dummy]) = null + private var draginfo: (Point, List[Graph_Display.Node], List[(Graph_Display.Edge, Int)]) = null val react: PartialFunction[Event, Unit] = { @@ -178,19 +176,20 @@ case e @ MouseClicked(_, p, m, n, _) => click(p, m, n, e) } - def dummy(at: Point2D): Option[Dummy] = + def dummy(at: Point2D): Option[(Graph_Display.Edge, Int)] = { val m = visualizer.metrics() visualizer.model.make_visible_graph().edges_iterator.map( - edge => visualizer.Coordinates(edge).zipWithIndex.map((edge, _))).flatten.find( - { - case (_, ((x, y), _)) => - visualizer.Drawer.shape(m, Graph_Display.Node.dummy). - contains(at.getX() - x, at.getY() - y) - }) match { - case None => None - case Some((edge, (_, index))) => Some((edge, index)) - } + edge => + visualizer.Coordinates.get_dummies(edge).zipWithIndex.map((edge, _))).flatten.find( + { + case (_, (p, _)) => + visualizer.Drawer.shape(m, Graph_Display.Node.dummy). + contains(at.getX() - p.x, at.getY() - p.y) + }) match { + case None => None + case Some((edge, (_, index))) => Some((edge, index)) + } } def pressed(at: Point) @@ -248,9 +247,9 @@ } } - def drag(draginfo: (Point, List[Graph_Display.Node], List[Dummy]), to: Point) + def drag(info: (Point, List[Graph_Display.Node], List[(Graph_Display.Edge, Int)]), to: Point) { - val (from, p, d) = draginfo + val (from, p, d) = info val s = Transform.scale_discrete val (dx, dy) = (to.x - from.x, to.y - from.y) @@ -262,10 +261,10 @@ paint_panel.peer.scrollRectToVisible(r) case (Nil, ds) => - ds.foreach(d => visualizer.Coordinates.translate(d, (dx / s, dy / s))) + ds.foreach(d => visualizer.Coordinates.translate_dummy(d, dx / s, dy / s)) case (ls, _) => - ls.foreach(l => visualizer.Coordinates.translate(l, (dx / s, dy / s))) + ls.foreach(l => visualizer.Coordinates.translate_node(l, dx / s, dy / s)) } } }