From 9d9bb836a1b83fab5bc408ffd7d4305e0d8b965a Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Wed, 3 Jan 2018 22:32:37 +0100 Subject: fixed jumping when nodes are added --- tikzit/src/gui/tikzscene.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'tikzit/src/gui/tikzscene.cpp') diff --git a/tikzit/src/gui/tikzscene.cpp b/tikzit/src/gui/tikzscene.cpp index 2d9b49f..3431c0c 100644 --- a/tikzit/src/gui/tikzscene.cpp +++ b/tikzit/src/gui/tikzscene.cpp @@ -12,6 +12,16 @@ TikzScene::TikzScene(TikzDocument *tikzDocument, QObject *parent) : QGraphicsScene(parent), _tikzDocument(tikzDocument) { _modifyEdgeItem = 0; + _drawEdgeItem = new QGraphicsLineItem(); + setSceneRect(-310,-230,620,450); + + QPen pen; + pen.setColor(QColor::fromRgbF(0.5f, 0.0f, 0.5f)); + pen.setWidth(3); + _drawEdgeItem->setPen(pen); + _drawEdgeItem->setLine(0,0,0,0); + _drawEdgeItem->setVisible(false); + addItem(_drawEdgeItem); } TikzScene::~TikzScene() { @@ -272,7 +282,13 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) QPointF gridPos(round(mousePos.x()/gridSize)*gridSize, round(mousePos.y()/gridSize)*gridSize); Node *n = new Node(); n->setPoint(fromScreen(gridPos)); - AddNodeCommand *cmd = new AddNodeCommand(this, n); + + QRectF grow(gridPos.x() - GLOBAL_SCALEF, gridPos.y() - GLOBAL_SCALEF, 2 * GLOBAL_SCALEF, 2 * GLOBAL_SCALEF); + QRectF newBounds = sceneRect().united(grow); + qDebug() << grow; + qDebug() << newBounds; + + AddNodeCommand *cmd = new AddNodeCommand(this, n, newBounds); _tikzDocument->undoStack()->push(cmd); } break; @@ -343,6 +359,20 @@ void TikzScene::refreshAdjacentEdges(QList nodes) } } +void TikzScene::setBounds(QRectF bounds) +{ + if (bounds != sceneRect()) { + if (!views().empty()) { + QGraphicsView *v = views().first(); + QPointF c = v->mapToScene(v->viewport()->rect().center()); + setSceneRect(bounds); + v->centerOn(c); + } else { + setSceneRect(bounds); + } + } +} + QMap &TikzScene::nodeItems() { return _nodeItems; -- cgit v1.2.3