Skip to content

Commit 7abfb81

Browse files
authored
added callback on change object in pick point manager (#4766)
* added callback on change object in pick point manager * comments added * fixes after review
1 parent d16ab90 commit 7abfb81

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

source/MRViewer/MRPickPointManager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,8 @@ std::shared_ptr<SurfacePointWidget> PickPointManager::createPickWidget_( const s
306306
{
307307
if ( auto obj = objPtr.lock() )
308308
{
309+
if ( params.onUpdatePoints && !params.onUpdatePoints( obj ) )
310+
return;
309311
auto& points = pickedPoints_[obj];
310312
const auto pointCount = points.size();
311313
for ( auto i = (int)pointCount - 1; i >= 0; --i )

source/MRViewer/MRPickPointManager.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class MRVIEWER_CLASS PickPointManager : public MultiListener<
2222
public:
2323
using PickerPointCallBack = std::function<void( std::shared_ptr<VisualObject> obj, int index )>;
2424
using AllowCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj, int index )>;
25+
using ChangeObjectCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj )>;
2526

2627
struct Params
2728
{
@@ -78,6 +79,11 @@ class MRVIEWER_CLASS PickPointManager : public MultiListener<
7879

7980
/// This callback is invoked when a point is removed with its index before deletion
8081
PickerPointCallBack onPointRemove;
82+
83+
/// This callback is invoked when an object was changed and needed update of points
84+
/// Return false if need to skip internal updates
85+
ChangeObjectCallBack onUpdatePoints;
86+
8187
};
8288
Params params;
8389

0 commit comments

Comments
 (0)