diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-03-18 15:03:40 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-03-18 21:56:19 +0100 |
commit | 6492a9c8778040b5f2f8acf36c8140065099c7fb (patch) | |
tree | 1390a11f8f7ee2eaf45a4f05018d8e752fcf5d69 /src/widgets/graphicsview/qgraphicsscene_bsp_p.h | |
parent | 5e566ab373bd6161f82b00c5a1f24bd210051140 (diff) |
Refactor: use lambdas for visitor pattern in QGraphicsSceneBspTree
This way, the visitor implementations are directly where they are used,
without the need for a virtual function call. The allocation of the
visitors on the heap was anyway overkill (they could just have been
allocated on the stack where they were used).
Change-Id: Ic41fd285e3a45daaf2e17aa5aeee07e754127a00
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/graphicsview/qgraphicsscene_bsp_p.h')
-rw-r--r-- | src/widgets/graphicsview/qgraphicsscene_bsp_p.h | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/src/widgets/graphicsview/qgraphicsscene_bsp_p.h b/src/widgets/graphicsview/qgraphicsscene_bsp_p.h index d81c0776ed..9327c396cb 100644 --- a/src/widgets/graphicsview/qgraphicsscene_bsp_p.h +++ b/src/widgets/graphicsview/qgraphicsscene_bsp_p.h @@ -61,10 +61,6 @@ QT_REQUIRE_CONFIG(graphicsview); QT_BEGIN_NAMESPACE class QGraphicsItem; -class QGraphicsSceneBspTreeVisitor; -class QGraphicsSceneInsertItemBspTreeVisitor; -class QGraphicsSceneRemoveItemBspTreeVisitor; -class QGraphicsSceneFindItemBspTreeVisitor; class QGraphicsSceneBspTree { @@ -102,24 +98,14 @@ public: private: void initialize(const QRectF &rect, int depth, int index); - void climbTree(QGraphicsSceneBspTreeVisitor *visitor, const QRectF &rect, int index = 0) const; + template<typename Visitor> + void climbTree(Visitor &&visitor, const QRectF &rect, int index = 0) const; QRectF rectForIndex(int index) const; QList<Node> nodes; QList<QList<QGraphicsItem *>> leaves; int leafCnt; QRectF rect; - - QGraphicsSceneInsertItemBspTreeVisitor *insertVisitor; - QGraphicsSceneRemoveItemBspTreeVisitor *removeVisitor; - QGraphicsSceneFindItemBspTreeVisitor *findVisitor; -}; - -class QGraphicsSceneBspTreeVisitor -{ -public: - virtual ~QGraphicsSceneBspTreeVisitor() { } - virtual void visit(QList<QGraphicsItem *> *items) = 0; }; QT_END_NAMESPACE |