summaryrefslogtreecommitdiffstats
path: root/src/widgets/graphicsview/qgraphicsscene_bsp_p.h
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2022-03-18 15:03:40 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2022-03-18 21:56:19 +0100
commit6492a9c8778040b5f2f8acf36c8140065099c7fb (patch)
tree1390a11f8f7ee2eaf45a4f05018d8e752fcf5d69 /src/widgets/graphicsview/qgraphicsscene_bsp_p.h
parent5e566ab373bd6161f82b00c5a1f24bd210051140 (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.h18
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