From e1d7023ab44eade50dd0fd9bee33abdb44dac730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Taiguara=20Tupinamb=C3=A1s?= Date: Mon, 23 Jun 2025 14:27:15 -0300 Subject: [PATCH 01/11] improves NodeValidationState struct --- include/QtNodes/internal/NodeDelegateModel.hpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/include/QtNodes/internal/NodeDelegateModel.hpp b/include/QtNodes/internal/NodeDelegateModel.hpp index 1917e3599..b5a763360 100644 --- a/include/QtNodes/internal/NodeDelegateModel.hpp +++ b/include/QtNodes/internal/NodeDelegateModel.hpp @@ -19,10 +19,14 @@ namespace QtNodes { struct NodeValidationState { enum class State : int { - Valid, /// All required inputs are present and correct. - Warning, /// Some inputs are missing or questionable, processing may be unreliable. - Error /// Inputs or settings are invalid, preventing successful computation. + Valid = 0, ///< All required inputs are present and correct. + Warning = 1, ///< Some inputs are missing or questionable, processing may be unreliable. + Error = 2, ///< Inputs or settings are invalid, preventing successful computation. }; + bool isValid() { return _state == State::Valid; }; + QString const message() { return _stateMessage; } + State state() { return _state; } + State _state{State::Valid}; QString _stateMessage{""}; }; From 2e9109189e722c33d375d63781688aee69ba7404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Taiguara=20Tupinamb=C3=A1s?= Date: Mon, 23 Jun 2025 16:15:01 -0300 Subject: [PATCH 02/11] qt6 for linux-gcc --- .github/workflows/cmake_build.yml | 4 ++-- .gitignore | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake_build.yml b/.github/workflows/cmake_build.yml index 7daabd4ef..ab3267073 100644 --- a/.github/workflows/cmake_build.yml +++ b/.github/workflows/cmake_build.yml @@ -30,9 +30,9 @@ jobs: - toolchain: linux-gcc os: ubuntu-22.04 compiler: gcc - qt_version: "5.15.2" + qt_version: "6.3.0" modules: "" - use_qt6: "OFF" + use_qt6: "ON" - toolchain: macos-clang os: macos-latest diff --git a/.gitignore b/.gitignore index fc8ef420c..552a9b2f0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ CMakeLists.txt.user build*/ .vscode/ +qt-build + tags From 9a48404a5430a08e648d51e92b674a83ce531677 Mon Sep 17 00:00:00 2001 From: Gabrielnmds Date: Tue, 5 Aug 2025 14:39:47 -0300 Subject: [PATCH 03/11] refactor(node delegate model): remove unnecessary lines of code --- include/QtNodes/internal/NodeDelegateModel.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/QtNodes/internal/NodeDelegateModel.hpp b/include/QtNodes/internal/NodeDelegateModel.hpp index f52a45196..b77763aec 100644 --- a/include/QtNodes/internal/NodeDelegateModel.hpp +++ b/include/QtNodes/internal/NodeDelegateModel.hpp @@ -1,13 +1,10 @@ #pragma once -<<<<<<< HEAD #include #include #include -======= ->>>>>>> 545c018199f39ec7174e4a3ec43807d24b55c967 #include "Definitions.hpp" #include "Export.hpp" #include "NodeData.hpp" From dc32d839d199f1f5d0a39d3ded39336cc281dd8a Mon Sep 17 00:00:00 2001 From: Gabrielnmds Date: Tue, 5 Aug 2025 14:49:10 -0300 Subject: [PATCH 04/11] adds zoomFitAll and zoomFitSelected methods --- include/QtNodes/internal/GraphicsView.hpp | 4 ++++ src/GraphicsView.cpp | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/include/QtNodes/internal/GraphicsView.hpp b/include/QtNodes/internal/GraphicsView.hpp index 52068129f..04851fc9f 100644 --- a/include/QtNodes/internal/GraphicsView.hpp +++ b/include/QtNodes/internal/GraphicsView.hpp @@ -58,6 +58,10 @@ public Q_SLOTS: void onPasteObjects(); + void zoomFitAll(); + + void zoomFitSelected(); + Q_SIGNALS: void scaleChanged(double scale); diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index cbd87cc87..84628a915 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -407,3 +407,25 @@ QPointF GraphicsView::scenePastePosition() return mapToScene(origin); } + +void GraphicsView::zoomFitAll() +{ + fitInView(scene()->itemsBoundingRect(), Qt::KeepAspectRatio); + //clipCurrentScale(); +} + +void GraphicsView::zoomFitSelected() +{ + if(scene()->selectedItems().count() > 0){ + + QRectF unitedBoundingRect{}; + + for(QGraphicsItem * item : scene()->selectedItems()) + { + unitedBoundingRect = unitedBoundingRect.united(item->mapRectToScene(item->boundingRect())); + } + + fitInView(unitedBoundingRect, Qt::KeepAspectRatio); + //clipCurrentScale(); + } +} From 6737c1a18519fdadbfb0551c79b1062e452ddc22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Taiguara=20Tupinamb=C3=A1s?= Date: Thu, 11 Sep 2025 15:26:00 -0300 Subject: [PATCH 05/11] reverts workflow change --- .github/workflows/cmake_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake_build.yml b/.github/workflows/cmake_build.yml index 766fc2efa..b513864cb 100644 --- a/.github/workflows/cmake_build.yml +++ b/.github/workflows/cmake_build.yml @@ -30,9 +30,9 @@ jobs: - toolchain: linux-gcc os: ubuntu-22.04 compiler: gcc - qt_version: "6.3.0" + qt_version: "5.15.2" modules: "" - use_qt6: "ON" + use_qt6: "OFF" - toolchain: macos-clang os: macos-latest From 9dddedc4126e9a009f2267b2225751deb3117f99 Mon Sep 17 00:00:00 2001 From: Gabrielnmds Date: Mon, 15 Sep 2025 15:57:50 -0300 Subject: [PATCH 06/11] Add zoomFit examples --- .../QtNodes/internal/BasicGraphicsScene.hpp | 8 +++ src/BasicGraphicsScene.cpp | 70 +++++++++++++++++++ src/GraphicsView.cpp | 14 ++-- 3 files changed, 86 insertions(+), 6 deletions(-) diff --git a/include/QtNodes/internal/BasicGraphicsScene.hpp b/include/QtNodes/internal/BasicGraphicsScene.hpp index 83424c5d8..331c2c90b 100644 --- a/include/QtNodes/internal/BasicGraphicsScene.hpp +++ b/include/QtNodes/internal/BasicGraphicsScene.hpp @@ -28,6 +28,7 @@ class AbstractNodePainter; class ConnectionGraphicsObject; class NodeGraphicsObject; class NodeStyle; +class GraphicsView; /// An instance of QGraphicsScene, holds connections and nodes. class NODE_EDITOR_PUBLIC BasicGraphicsScene : public QGraphicsScene @@ -110,6 +111,8 @@ class NODE_EDITOR_PUBLIC BasicGraphicsScene : public QGraphicsScene */ virtual QMenu *createSceneMenu(QPointF const scenePos); + QMenu *createZoomMenu(QPointF const scenePos); + Q_SIGNALS: void modified(BasicGraphicsScene *); void nodeMoved(NodeId const nodeId, QPointF const &newLocation); @@ -124,6 +127,10 @@ class NODE_EDITOR_PUBLIC BasicGraphicsScene : public QGraphicsScene /// Signal allows showing custom context menu upon clicking a node. void nodeContextMenu(NodeId const nodeId, QPointF const pos); + /// Signals to call Graphics View's zoomFit methods + void zoomFitAllClicked(); + void zoomFitSelectedClicked(); + private: /** * @brief Creates Node and Connection graphics objects. @@ -163,6 +170,7 @@ public Q_SLOTS: std::unique_ptr _nodeGeometry; std::unique_ptr _nodePainter; std::unique_ptr _connectionPainter; + std::unique_ptr _graphicsView; bool _nodeDrag; QUndoStack *_undoStack; Qt::Orientation _orientation; diff --git a/src/BasicGraphicsScene.cpp b/src/BasicGraphicsScene.cpp index 7cec5ec45..84771c746 100644 --- a/src/BasicGraphicsScene.cpp +++ b/src/BasicGraphicsScene.cpp @@ -8,9 +8,14 @@ #include "DefaultNodePainter.hpp" #include "DefaultVerticalNodeGeometry.hpp" #include "NodeGraphicsObject.hpp" +#include "GraphicsView.hpp" #include +#include +#include +#include +#include #include #include @@ -37,6 +42,7 @@ BasicGraphicsScene::BasicGraphicsScene(AbstractGraphModel &graphModel, QObject * , _nodeGeometry(std::make_unique(_graphModel)) , _nodePainter(std::make_unique()) , _connectionPainter(std::make_unique()) + , _graphicsView(std::make_unique()) , _nodeDrag(false) , _undoStack(new QUndoStack(this)) , _orientation(Qt::Horizontal) @@ -198,6 +204,70 @@ QMenu *BasicGraphicsScene::createSceneMenu(QPointF const scenePos) return nullptr; } +QMenu *BasicGraphicsScene::createZoomMenu(QPointF const scenePos) +{ + QMenu *menu = new QMenu(); + + auto *txtBox = new QLineEdit(menu); + txtBox->setPlaceholderText(QStringLiteral("Filter")); + txtBox->setClearButtonEnabled(true); + + auto *txtBoxAction = new QWidgetAction(menu); + txtBoxAction->setDefaultWidget(txtBox); + menu->addAction(txtBoxAction); + + QTreeWidget *treeView = new QTreeWidget(menu); + treeView->header()->close(); + + treeView->setMaximumHeight(100); + treeView->setMaximumWidth(150); + + auto *treeViewAction = new QWidgetAction(menu); + treeViewAction->setDefaultWidget(treeView); + menu->addAction(treeViewAction); + + auto freezeItem = new QTreeWidgetItem(treeView); + freezeItem->setText(0, "Zoom Fit All"); + + auto unfreezeItem = new QTreeWidgetItem(treeView); + unfreezeItem->setText(0, "Zoom Fit Selected"); + + treeView->expandAll(); + + connect(treeView, &QTreeWidget::itemClicked, [this, menu, scenePos](QTreeWidgetItem *item, int) { + if (item->text(0) == "Zoom Fit All") { + //ZoomFit + //Q_EMIT zoomFitAllClicked(); + + menu->close(); + return; + } + if (item->text(0) == "Zoom Fit Selected") { + //ZoomFit + //Q_EMIT zoomFitSelectedClicked(); + + menu->close(); + return; + } + }); + + // Filtro + connect(txtBox, &QLineEdit::textChanged, [treeView](const QString &text) { + QTreeWidgetItemIterator it(treeView); + while (*it) { + auto modelName = (*it)->text(0); + const bool match = (modelName.contains(text, Qt::CaseInsensitive)); + (*it)->setHidden(!match); + ++it; + } + }); + + txtBox->setFocus(); + menu->setAttribute(Qt::WA_DeleteOnClose); + + return menu; +} + void BasicGraphicsScene::traverseGraphAndPopulateGraphicsObjects() { auto allNodeIds = _graphModel.allNodeIds(); diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index 84628a915..ce0699d02 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -166,18 +166,20 @@ void GraphicsView::centerScene() void GraphicsView::contextMenuEvent(QContextMenuEvent *event) { + QGraphicsView::contextMenuEvent(event); + QMenu *menu; + if (itemAt(event->pos())) { - QGraphicsView::contextMenuEvent(event); - return; + menu = nodeScene()->createZoomMenu(mapToScene(event->pos())); + } else { + menu = nodeScene()->createSceneMenu(mapToScene(event->pos())); } - auto const scenePos = mapToScene(event->pos()); - - QMenu *menu = nodeScene()->createSceneMenu(scenePos); - if (menu) { menu->exec(event->globalPos()); } + + return; } void GraphicsView::wheelEvent(QWheelEvent *event) From 5c22d7dac82f6ea10e7cb2ccd78ad780b350df40 Mon Sep 17 00:00:00 2001 From: Gabrielnmds Date: Mon, 15 Sep 2025 19:06:44 -0300 Subject: [PATCH 07/11] Fixes zoomFit functionalities in the zoomFit menu --- include/QtNodes/internal/BasicGraphicsScene.hpp | 2 -- src/BasicGraphicsScene.cpp | 10 +++------- src/GraphicsView.cpp | 6 ++++-- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/include/QtNodes/internal/BasicGraphicsScene.hpp b/include/QtNodes/internal/BasicGraphicsScene.hpp index 331c2c90b..1d66318dd 100644 --- a/include/QtNodes/internal/BasicGraphicsScene.hpp +++ b/include/QtNodes/internal/BasicGraphicsScene.hpp @@ -28,7 +28,6 @@ class AbstractNodePainter; class ConnectionGraphicsObject; class NodeGraphicsObject; class NodeStyle; -class GraphicsView; /// An instance of QGraphicsScene, holds connections and nodes. class NODE_EDITOR_PUBLIC BasicGraphicsScene : public QGraphicsScene @@ -170,7 +169,6 @@ public Q_SLOTS: std::unique_ptr _nodeGeometry; std::unique_ptr _nodePainter; std::unique_ptr _connectionPainter; - std::unique_ptr _graphicsView; bool _nodeDrag; QUndoStack *_undoStack; Qt::Orientation _orientation; diff --git a/src/BasicGraphicsScene.cpp b/src/BasicGraphicsScene.cpp index 84771c746..2c476494f 100644 --- a/src/BasicGraphicsScene.cpp +++ b/src/BasicGraphicsScene.cpp @@ -8,7 +8,6 @@ #include "DefaultNodePainter.hpp" #include "DefaultVerticalNodeGeometry.hpp" #include "NodeGraphicsObject.hpp" -#include "GraphicsView.hpp" #include @@ -42,7 +41,6 @@ BasicGraphicsScene::BasicGraphicsScene(AbstractGraphModel &graphModel, QObject * , _nodeGeometry(std::make_unique(_graphModel)) , _nodePainter(std::make_unique()) , _connectionPainter(std::make_unique()) - , _graphicsView(std::make_unique()) , _nodeDrag(false) , _undoStack(new QUndoStack(this)) , _orientation(Qt::Horizontal) @@ -236,22 +234,20 @@ QMenu *BasicGraphicsScene::createZoomMenu(QPointF const scenePos) connect(treeView, &QTreeWidget::itemClicked, [this, menu, scenePos](QTreeWidgetItem *item, int) { if (item->text(0) == "Zoom Fit All") { - //ZoomFit - //Q_EMIT zoomFitAllClicked(); + Q_EMIT zoomFitAllClicked(); menu->close(); return; } if (item->text(0) == "Zoom Fit Selected") { - //ZoomFit - //Q_EMIT zoomFitSelectedClicked(); + Q_EMIT zoomFitSelectedClicked(); menu->close(); return; } }); - // Filtro + // Filter connect(txtBox, &QLineEdit::textChanged, [treeView](const QString &text) { QTreeWidgetItemIterator it(treeView); while (*it) { diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index ce0699d02..715b8435c 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -147,6 +147,10 @@ void GraphicsView::setScene(BasicGraphicsScene *scene) auto redoAction = scene->undoStack().createRedoAction(this, tr("&Redo")); redoAction->setShortcuts(QKeySequence::Redo); addAction(redoAction); + + /// Connections to context menu funcionality + connect(scene, &BasicGraphicsScene::zoomFitAllClicked, this, &GraphicsView::zoomFitAll); + connect(scene, &BasicGraphicsScene::zoomFitSelectedClicked, this, &GraphicsView::zoomFitSelected); } void GraphicsView::centerScene() @@ -413,7 +417,6 @@ QPointF GraphicsView::scenePastePosition() void GraphicsView::zoomFitAll() { fitInView(scene()->itemsBoundingRect(), Qt::KeepAspectRatio); - //clipCurrentScale(); } void GraphicsView::zoomFitSelected() @@ -428,6 +431,5 @@ void GraphicsView::zoomFitSelected() } fitInView(unitedBoundingRect, Qt::KeepAspectRatio); - //clipCurrentScale(); } } From 72bf82237b417543f3f3bd97051386b0797c9def Mon Sep 17 00:00:00 2001 From: Gabrielnmds Date: Wed, 24 Sep 2025 10:53:49 -0300 Subject: [PATCH 08/11] add Q_UNUSED to scenePos parameter --- src/BasicGraphicsScene.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/BasicGraphicsScene.cpp b/src/BasicGraphicsScene.cpp index 2c476494f..c612994ca 100644 --- a/src/BasicGraphicsScene.cpp +++ b/src/BasicGraphicsScene.cpp @@ -204,6 +204,8 @@ QMenu *BasicGraphicsScene::createSceneMenu(QPointF const scenePos) QMenu *BasicGraphicsScene::createZoomMenu(QPointF const scenePos) { + Q_UNUSED(scenePos); + QMenu *menu = new QMenu(); auto *txtBox = new QLineEdit(menu); @@ -232,7 +234,7 @@ QMenu *BasicGraphicsScene::createZoomMenu(QPointF const scenePos) treeView->expandAll(); - connect(treeView, &QTreeWidget::itemClicked, [this, menu, scenePos](QTreeWidgetItem *item, int) { + connect(treeView, &QTreeWidget::itemClicked, [this, menu](QTreeWidgetItem *item, int) { if (item->text(0) == "Zoom Fit All") { Q_EMIT zoomFitAllClicked(); From e4116f7bf8f1ce689cd6718c7a4a9c527f880d9f Mon Sep 17 00:00:00 2001 From: Gabrielnmds Date: Fri, 12 Dec 2025 15:55:44 -0300 Subject: [PATCH 09/11] Refactor(zoom fit): makes the zoom fit functionality optional --- .../QtNodes/internal/NodeDelegateModel.hpp | 6 ++++ src/GraphicsView.cpp | 29 ++++++++++++++----- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/include/QtNodes/internal/NodeDelegateModel.hpp b/include/QtNodes/internal/NodeDelegateModel.hpp index 4190462c8..f17ec6ae7 100644 --- a/include/QtNodes/internal/NodeDelegateModel.hpp +++ b/include/QtNodes/internal/NodeDelegateModel.hpp @@ -103,6 +103,10 @@ class NODE_EDITOR_PUBLIC NodeDelegateModel virtual bool resizable() const { return false; } + bool zoomFitMenu() const { return _zoomFitMenu; } + + void setZoomFitMenu(bool state) { _zoomFitMenu = state; } + public Q_SLOTS: virtual void inputConnectionCreated(ConnectionId const &) {} virtual void inputConnectionDeleted(ConnectionId const &) {} @@ -147,6 +151,8 @@ public Q_SLOTS: NodeStyle _nodeStyle; NodeValidationState _nodeValidationState; + + bool _zoomFitMenu{false}; }; } // namespace QtNodes diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index 715b8435c..6bfb97444 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -150,7 +150,10 @@ void GraphicsView::setScene(BasicGraphicsScene *scene) /// Connections to context menu funcionality connect(scene, &BasicGraphicsScene::zoomFitAllClicked, this, &GraphicsView::zoomFitAll); - connect(scene, &BasicGraphicsScene::zoomFitSelectedClicked, this, &GraphicsView::zoomFitSelected); + connect(scene, + &BasicGraphicsScene::zoomFitSelectedClicked, + this, + &GraphicsView::zoomFitSelected); } void GraphicsView::centerScene() @@ -174,8 +177,19 @@ void GraphicsView::contextMenuEvent(QContextMenuEvent *event) QMenu *menu; if (itemAt(event->pos())) { - menu = nodeScene()->createZoomMenu(mapToScene(event->pos())); - } else { + bool isZoomFitMenu; + + if (auto *dfModel = dynamic_cast(&nodeScene()->graphModel())) { + if (auto n = qgraphicsitem_cast(itemAt(event->pos()))) { + if (auto *delegate = dfModel->delegateModel(n->nodeId())) { + isZoomFitMenu = delegate->zoomFitMenu(); + } + } + } + if (itemAt(event->pos()) && isZoomFitMenu) { + menu = nodeScene()->createZoomMenu(mapToScene(event->pos())); + } + } else if (!itemAt(event->pos())) { menu = nodeScene()->createSceneMenu(mapToScene(event->pos())); } @@ -421,13 +435,12 @@ void GraphicsView::zoomFitAll() void GraphicsView::zoomFitSelected() { - if(scene()->selectedItems().count() > 0){ - + if (scene()->selectedItems().count() > 0) { QRectF unitedBoundingRect{}; - for(QGraphicsItem * item : scene()->selectedItems()) - { - unitedBoundingRect = unitedBoundingRect.united(item->mapRectToScene(item->boundingRect())); + for (QGraphicsItem *item : scene()->selectedItems()) { + unitedBoundingRect = unitedBoundingRect.united( + item->mapRectToScene(item->boundingRect())); } fitInView(unitedBoundingRect, Qt::KeepAspectRatio); From d31b40088086f1a1cb69aa221fcc6127dc8411e7 Mon Sep 17 00:00:00 2001 From: Gabrielnmds Date: Fri, 12 Dec 2025 17:12:21 -0300 Subject: [PATCH 10/11] Refactor(zoom fit): fixes the API code for zoomFit method --- src/GraphicsView.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index 6bfb97444..ea263f8cd 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -2,6 +2,7 @@ #include "BasicGraphicsScene.hpp" #include "ConnectionGraphicsObject.hpp" +#include "DataFlowGraphModel.hpp" #include "NodeGraphicsObject.hpp" #include "StyleCollection.hpp" #include "UndoCommands.hpp" @@ -23,6 +24,7 @@ #include using QtNodes::BasicGraphicsScene; +using QtNodes::DataFlowGraphModel; using QtNodes::GraphicsView; GraphicsView::GraphicsView(QWidget *parent) @@ -176,19 +178,18 @@ void GraphicsView::contextMenuEvent(QContextMenuEvent *event) QGraphicsView::contextMenuEvent(event); QMenu *menu; - if (itemAt(event->pos())) { - bool isZoomFitMenu; + bool isZoomFitMenu; - if (auto *dfModel = dynamic_cast(&nodeScene()->graphModel())) { - if (auto n = qgraphicsitem_cast(itemAt(event->pos()))) { - if (auto *delegate = dfModel->delegateModel(n->nodeId())) { - isZoomFitMenu = delegate->zoomFitMenu(); - } + if (auto *dfModel = dynamic_cast(&nodeScene()->graphModel())) { + if (auto n = qgraphicsitem_cast(itemAt(event->pos()))) { + if (auto *delegate = dfModel->delegateModel(n->nodeId())) { + isZoomFitMenu = delegate->zoomFitMenu(); } } - if (itemAt(event->pos()) && isZoomFitMenu) { - menu = nodeScene()->createZoomMenu(mapToScene(event->pos())); - } + } + if (itemAt(event->pos()) && isZoomFitMenu) { + menu = nodeScene()->createZoomMenu(mapToScene(event->pos())); + } else if (!itemAt(event->pos())) { menu = nodeScene()->createSceneMenu(mapToScene(event->pos())); } From 8a6824fd7dc0a8c54f0f20514f87c4bea7b7c3c0 Mon Sep 17 00:00:00 2001 From: Gabrielnmds Date: Mon, 15 Dec 2025 15:19:03 -0300 Subject: [PATCH 11/11] refactor(zoom fit): minor code fixes --- src/GraphicsView.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GraphicsView.cpp b/src/GraphicsView.cpp index ea263f8cd..10eac34cb 100644 --- a/src/GraphicsView.cpp +++ b/src/GraphicsView.cpp @@ -176,7 +176,7 @@ void GraphicsView::centerScene() void GraphicsView::contextMenuEvent(QContextMenuEvent *event) { QGraphicsView::contextMenuEvent(event); - QMenu *menu; + QMenu *menu = nullptr; bool isZoomFitMenu;