summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-09-21 18:35:24 +0200
committerAleks Kissinger <aleks0@gmail.com>2018-09-21 18:35:24 +0200
commit331c5d069e79b387eb8964c546dde8109ccf4798 (patch)
treeb7691414199034f7f7314bb48d1aad6d42537b0a /src
parent1f57600e248bc4171dbf72e211b3b061045ebeb4 (diff)
fixed bug with fractional coordinates on linux
Diffstat (limited to 'src')
-rw-r--r--src/data/graph.cpp10
-rw-r--r--src/data/tikzlexer.l6
-rw-r--r--src/gui/tikzscene.cpp4
3 files changed, 14 insertions, 6 deletions
diff --git a/src/data/graph.cpp b/src/data/graph.cpp
index 7d71ceb..2c9a84e 100644
--- a/src/data/graph.cpp
+++ b/src/data/graph.cpp
@@ -269,10 +269,12 @@ Graph *Graph::copyOfSubgraphWithNodes(QSet<Node *> nds)
Graph *g = new Graph();
g->setData(_data->copy());
QMap<Node*,Node*> nodeTable;
- foreach (Node *n, nds) {
- Node *n1 = n->copy();
- nodeTable.insert(n, n1);
- g->addNode(n1);
+ foreach (Node *n, nodes()) {
+ if (nds.contains(n)) {
+ Node *n1 = n->copy();
+ nodeTable.insert(n, n1);
+ g->addNode(n1);
+ }
}
foreach (Edge *e, edges()) {
if (nds.contains(e->source()) && nds.contains(e->target())) {
diff --git a/src/data/tikzlexer.l b/src/data/tikzlexer.l
index 0a67d1d..0d80467 100644
--- a/src/data/tikzlexer.l
+++ b/src/data/tikzlexer.l
@@ -90,12 +90,14 @@ FLOAT \-?[0-9]*(\.[0-9]+)?
}
<xcoord>{FLOAT} {
yylval->pt = new QPointF();
- yylval->pt->setX(strtod(yytext,NULL));
+ QString s(yytext);
+ yylval->pt->setX(s.toDouble());
BEGIN(ycoord);
}
<ycoord>, { }
<ycoord>{FLOAT} {
- yylval->pt->setY(strtod(yytext,NULL));
+ QString s(yytext);
+ yylval->pt->setY(s.toDouble());
}
<ycoord>\) {
BEGIN(INITIAL);
diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp
index 2a37014..1c6f0bb 100644
--- a/src/gui/tikzscene.cpp
+++ b/src/gui/tikzscene.cpp
@@ -621,6 +621,7 @@ void TikzScene::deleteSelectedItems()
void TikzScene::copyToClipboard()
{
Graph *g = graph()->copyOfSubgraphWithNodes(getSelectedNodes());
+ //qDebug() << g->tikz();
QGuiApplication::clipboard()->setText(g->tikz());
delete g;
}
@@ -641,8 +642,11 @@ void TikzScene::pasteFromClipboard()
// attempt to parse whatever's on the clipboard, if we get a
// non-empty tikz graph, insert it.
if (ass.parse(tikz) && !g->nodes().isEmpty()) {
+ qDebug() << "CLIPBOARD:" << tikz;
+ qDebug() << "PARSED:" << g->tikz();
// make sure names in the new subgraph are fresh
g->renameApart(graph());
+ qDebug() << "FRESH:" << g->tikz();
QRectF srcRect = g->realBbox();
QRectF tgtRect = graph()->realBbox();