@@ -1385,13 +1385,17 @@ def cb(point):
13851385 self .view = Draft .get3DView ()
13861386
13871387 # remove any previous leftover callbacks
1388- if self .callbackClick :
1389- self .view .removeEventCallbackPivy (coin .SoMouseButtonEvent .getClassTypeId (), self .callbackClick )
1390- if self .callbackMove :
1391- self .view .removeEventCallbackPivy (coin .SoLocation2Event .getClassTypeId (), self .callbackMove )
1392- if self .callbackClick or self .callbackMove :
1393- # Next line fixes https://github.com/FreeCAD/FreeCAD/issues/10469:
1394- gui_utils .end_all_events ()
1388+ try :
1389+ if self .callbackClick :
1390+ self .view .removeEventCallbackPivy (coin .SoMouseButtonEvent .getClassTypeId (), self .callbackClick )
1391+ if self .callbackMove :
1392+ self .view .removeEventCallbackPivy (coin .SoLocation2Event .getClassTypeId (), self .callbackMove )
1393+ if self .callbackClick or self .callbackMove :
1394+ # Next line fixes https://github.com/FreeCAD/FreeCAD/issues/10469:
1395+ gui_utils .end_all_events ()
1396+ except RuntimeError :
1397+ # the view has been deleted already
1398+ pass
13951399 self .callbackClick = None
13961400 self .callbackMove = None
13971401
@@ -1428,13 +1432,17 @@ def click(event_cb):
14281432 accept ()
14291433
14301434 def accept ():
1431- if self .callbackClick :
1432- self .view .removeEventCallbackPivy (coin .SoMouseButtonEvent .getClassTypeId (), self .callbackClick )
1433- if self .callbackMove :
1434- self .view .removeEventCallbackPivy (coin .SoLocation2Event .getClassTypeId (), self .callbackMove )
1435- if self .callbackClick or self .callbackMove :
1436- # Next line fixes https://github.com/FreeCAD/FreeCAD/issues/10469:
1437- gui_utils .end_all_events ()
1435+ try :
1436+ if self .callbackClick :
1437+ self .view .removeEventCallbackPivy (coin .SoMouseButtonEvent .getClassTypeId (), self .callbackClick )
1438+ if self .callbackMove :
1439+ self .view .removeEventCallbackPivy (coin .SoLocation2Event .getClassTypeId (), self .callbackMove )
1440+ if self .callbackClick or self .callbackMove :
1441+ # Next line fixes https://github.com/FreeCAD/FreeCAD/issues/10469:
1442+ gui_utils .end_all_events ()
1443+ except RuntimeError :
1444+ # the view has been deleted already
1445+ pass
14381446 self .callbackClick = None
14391447 self .callbackMove = None
14401448 Gui .Snapper .off ()
@@ -1450,13 +1458,17 @@ def accept():
14501458 self .pt = None
14511459
14521460 def cancel ():
1453- if self .callbackClick :
1454- self .view .removeEventCallbackPivy (coin .SoMouseButtonEvent .getClassTypeId (), self .callbackClick )
1455- if self .callbackMove :
1456- self .view .removeEventCallbackPivy (coin .SoLocation2Event .getClassTypeId (), self .callbackMove )
1457- if self .callbackClick or self .callbackMove :
1458- # Next line fixes https://github.com/FreeCAD/FreeCAD/issues/10469:
1459- gui_utils .end_all_events ()
1461+ try :
1462+ if self .callbackClick :
1463+ self .view .removeEventCallbackPivy (coin .SoMouseButtonEvent .getClassTypeId (), self .callbackClick )
1464+ if self .callbackMove :
1465+ self .view .removeEventCallbackPivy (coin .SoLocation2Event .getClassTypeId (), self .callbackMove )
1466+ if self .callbackClick or self .callbackMove :
1467+ # Next line fixes https://github.com/FreeCAD/FreeCAD/issues/10469:
1468+ gui_utils .end_all_events ()
1469+ except RuntimeError :
1470+ # the view has been deleted already
1471+ pass
14601472 self .callbackClick = None
14611473 self .callbackMove = None
14621474 Gui .Snapper .off ()
0 commit comments