Skip to content

Commit 2d56016

Browse files
authored
Merge pull request #2605 from alicevision/fix/nodeSelectionPerfs
Refactor Node selection for better UX and performance
2 parents df4ad22 + 944ff15 commit 2d56016

File tree

11 files changed

+656
-499
lines changed

11 files changed

+656
-499
lines changed

.git-blame-ignore-revs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# [GraphEditor] Indentation fix
2+
87c0cef605e4ef2b359d7e678155e79b65b2e762
13
# [qt6][qml] Clean-up code and harmonize comments
24
5a0b1c0c9547b0d00f3f10fae6994d6d8ea0b45e
35
# [nodes] Linting: Clean-up files

meshroom/common/qt.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,15 @@ def _referenceItem(self, item):
283283

284284
self._objectByKey[key] = item
285285

286+
@QtCore.Slot(int, result=QtCore.QModelIndex)
287+
def index(self, row: int, column: int = 0, parent=QtCore.QModelIndex()):
288+
""" Returns the model index for the given row, column and parent index. """
289+
if parent.isValid() or column != 0:
290+
return QtCore.QModelIndex()
291+
if row < 0 or row >= self.size():
292+
return QtCore.QModelIndex()
293+
return self.createIndex(row, column, self._objects[row])
294+
286295
def _dereferenceItem(self, item):
287296
# Ask for object deletion if parented to the model
288297
if shiboken6.isValid(item) and item.parent() == self:

meshroom/ui/components/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11

22
def registerTypes():
3-
from PySide6.QtQml import qmlRegisterType
3+
from PySide6.QtQml import qmlRegisterType, qmlRegisterSingletonType
44
from meshroom.ui.components.clipboard import ClipboardHelper
55
from meshroom.ui.components.edge import EdgeMouseArea
66
from meshroom.ui.components.filepath import FilepathHelper
77
from meshroom.ui.components.scene3D import Scene3DHelper, TrackballController, Transformations3DHelper
88
from meshroom.ui.components.csvData import CsvData
9+
from meshroom.ui.components.geom2D import Geom2D
910

1011
qmlRegisterType(EdgeMouseArea, "GraphEditor", 1, 0, "EdgeMouseArea")
1112
qmlRegisterType(ClipboardHelper, "Meshroom.Helpers", 1, 0, "ClipboardHelper") # TODO: uncreatable
@@ -14,3 +15,5 @@ def registerTypes():
1415
qmlRegisterType(Transformations3DHelper, "Meshroom.Helpers", 1, 0, "Transformations3DHelper") # TODO: uncreatable
1516
qmlRegisterType(TrackballController, "Meshroom.Helpers", 1, 0, "TrackballController")
1617
qmlRegisterType(CsvData, "DataObjects", 1, 0, "CsvData")
18+
19+
qmlRegisterSingletonType(Geom2D, "Meshroom.Helpers", 1, 0, "Geom2D")

meshroom/ui/components/geom2D.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from PySide6.QtCore import QObject, Slot, QRectF
2+
3+
4+
class Geom2D(QObject):
5+
@Slot(QRectF, QRectF, result=bool)
6+
def rectRectIntersect(self, rect1: QRectF, rect2: QRectF) -> bool:
7+
"""Check if two rectangles intersect."""
8+
return rect1.intersects(rect2)

0 commit comments

Comments
 (0)