summaryrefslogtreecommitdiff
path: root/src/gui/tikzscene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/tikzscene.cpp')
-rw-r--r--src/gui/tikzscene.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp
index 39f8b76..b9afe4a 100644
--- a/src/gui/tikzscene.cpp
+++ b/src/gui/tikzscene.cpp
@@ -179,6 +179,35 @@ void TikzScene::extendSelectionRight()
}
}
+void TikzScene::reorderSelection(bool toFront)
+{
+ QVector<Node*> nodeOrd, nodeOrd1;
+ QVector<Edge*> edgeOrd, edgeOrd1;
+ QSet<Node*> selNodes;
+ QSet<Edge*> selEdges;
+ getSelection(selNodes, selEdges);
+ foreach (Node *n, graph()->nodes()) {
+ if (selNodes.contains(n)) nodeOrd1 << n;
+ else nodeOrd << n;
+ }
+
+ foreach (Edge *e, graph()->edges()) {
+ if (selEdges.contains(e)) edgeOrd1 << e;
+ else edgeOrd << e;
+ }
+
+ if (toFront) {
+ nodeOrd += nodeOrd1;
+ edgeOrd += edgeOrd1;
+ } else {
+ nodeOrd = nodeOrd1 + nodeOrd;
+ edgeOrd = edgeOrd1 + edgeOrd;
+ }
+
+ ReorderCommand *cmd = new ReorderCommand(this, graph()->nodes(), nodeOrd, graph()->edges(), edgeOrd);
+ _tikzDocument->undoStack()->push(cmd);
+}
+
void TikzScene::refreshZIndices()
{
qreal z = 0.0;