summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2020-04-13 22:30:51 +0100
committerAleks Kissinger <aleks0@gmail.com>2020-04-13 22:30:51 +0100
commit5ca0a2e48d0198102dabad4af5048a53e6938fe8 (patch)
tree76010b4f54e2b872eb484403eb29bad7d5ca0b2f
parente333ef9cb80e40637235198f9c113fa8cfe0fceb (diff)
automatically expact selection to path
-rw-r--r--src/data/style.cpp4
-rw-r--r--src/gui/tikzscene.cpp34
-rw-r--r--src/gui/tikzscene.h1
3 files changed, 34 insertions, 5 deletions
diff --git a/src/data/style.cpp b/src/data/style.cpp
index d0f011d..fe33ee0 100644
--- a/src/data/style.cpp
+++ b/src/data/style.cpp
@@ -62,7 +62,9 @@ QColor Style::fillColor(bool tikzitOverride) const
QBrush Style::brush() const
{
- return QBrush(fillColor());
+ QString col = propertyWithDefault("fill", "none", true);
+ if (col == "none") return Qt::NoBrush;
+ else return QBrush(tikzit->colorByName(col));
}
QString Style::shape(bool tikzitOverride) const
diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp
index 57ddb48..e510931 100644
--- a/src/gui/tikzscene.cpp
+++ b/src/gui/tikzscene.cpp
@@ -389,7 +389,6 @@ void TikzScene::makePath()
foreach (Edge *e, p) {
if (e != p.first()) oldEdgeData[e] = e->data()->copy();
}
- qDebug() << oldEdgeData;
_tikzDocument->undoStack()->beginMacro("Make Path");
_tikzDocument->undoStack()->push(new ReverseEdgesCommand(this, flip));
@@ -448,6 +447,7 @@ void TikzScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
_mouseDownPos = event->scenePos();
_draggingNodes = false;
+ _selectingEdge = nullptr;
// radius of a control point for bezier edges, in scene coordinates
qreal cpR = GLOBAL_SCALEF * (0.1);
@@ -528,9 +528,19 @@ void TikzScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
}
}
- auto its = items(_mouseDownPos);
- if (!its.isEmpty() && dynamic_cast<NodeItem*>(its[0]))
- _draggingNodes = true;
+ QList<QGraphicsItem*> its = items(_mouseDownPos);
+ if (!its.isEmpty()) {
+ if (dynamic_cast<NodeItem*>(its[0])) {
+ _draggingNodes = true;
+ } else {
+ foreach (QGraphicsItem *gi, its) {
+ if (EdgeItem *ei = dynamic_cast<EdgeItem*>(gi)) {
+ _selectingEdge = ei->edge();
+ break;
+ }
+ }
+ }
+ }
}
break;
@@ -730,6 +740,22 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
// otherwise, process mouse move normally
QGraphicsScene::mouseReleaseEvent(event);
+ if (_selectingEdge) {
+ bool sel = edgeItems()[_selectingEdge]->isSelected();
+ Path *p = _selectingEdge->path();
+ if (p) {
+ foreach (Edge *e, p->edges()) {
+ if (e != _selectingEdge)
+ edgeItems()[e]->setSelected(sel);
+ nodeItems()[e->source()]->setSelected(sel);
+ nodeItems()[e->target()]->setSelected(sel);
+ }
+ } else {
+ nodeItems()[_selectingEdge->source()]->setSelected(sel);
+ nodeItems()[_selectingEdge->target()]->setSelected(sel);
+ }
+ }
+
if (_rubberBandItem->isVisible()) {
QPainterPath sel;
sel.addRect(_rubberBandItem->rect());
diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h
index 2e72faf..3f035e2 100644
--- a/src/gui/tikzscene.h
+++ b/src/gui/tikzscene.h
@@ -118,6 +118,7 @@ private:
QGraphicsLineItem *_drawEdgeItem;
QGraphicsRectItem *_rubberBandItem;
EdgeItem *_modifyEdgeItem;
+ Edge *_selectingEdge;
NodeItem *_edgeStartNodeItem;
NodeItem *_edgeEndNodeItem;
bool _firstControlPoint;