Draft: More solid closing of Draft commands - fixes #2532
This commit is contained in:
@@ -251,13 +251,17 @@ class DraftTaskPanel:
|
||||
if hasattr(FreeCADGui,"draftToolBar"):
|
||||
return FreeCADGui.draftToolBar.validatePoint()
|
||||
else:
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
if FreeCADGui.ActiveDocument:
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
return True
|
||||
def reject(self):
|
||||
FreeCADGui.draftToolBar.isTaskOn = False
|
||||
FreeCADGui.draftToolBar.escape()
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
if FreeCADGui.ActiveDocument:
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
return True
|
||||
def isAllowedAlterDocument(self):
|
||||
return False
|
||||
|
||||
class DraftToolBar:
|
||||
"main draft Toolbar"
|
||||
@@ -806,6 +810,8 @@ class DraftToolBar:
|
||||
FreeCADGui.draftToolBar.escape()
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
return True
|
||||
def isAllowedAlterDocument(self):
|
||||
return False
|
||||
if FreeCADGui.Control.activeDialog():
|
||||
FreeCADGui.Control.closeDialog()
|
||||
todo.delay(FreeCADGui.Control.showDialog,dummy(extra))
|
||||
@@ -1438,7 +1444,8 @@ class DraftToolBar:
|
||||
if self.cancel:
|
||||
self.cancel()
|
||||
self.cancel = None
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
if FreeCADGui.ActiveDocument:
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
|
||||
def escape(self):
|
||||
"escapes the current command"
|
||||
|
||||
@@ -262,7 +262,11 @@ class DraftTool:
|
||||
if hasattr(FreeCADGui,"Snapper"):
|
||||
FreeCADGui.Snapper.off()
|
||||
if self.call:
|
||||
self.view.removeEventCallback("SoEvent",self.call)
|
||||
try:
|
||||
self.view.removeEventCallback("SoEvent",self.call)
|
||||
except RuntimeError:
|
||||
# the view has been deleted already
|
||||
pass
|
||||
self.call = None
|
||||
if self.commitList:
|
||||
todo.delayCommit(self.commitList)
|
||||
@@ -492,8 +496,13 @@ class Line(Creator):
|
||||
"terminates the operation and closes the poly if asked"
|
||||
if self.obj:
|
||||
# remove temporary object, if any
|
||||
old = self.obj.Name
|
||||
todo.delay(self.doc.removeObject,old)
|
||||
try:
|
||||
old = self.obj.Name
|
||||
except ReferenceError:
|
||||
# object already deleted, for some reason
|
||||
pass
|
||||
else:
|
||||
todo.delay(self.doc.removeObject,old)
|
||||
self.obj = None
|
||||
if self.oldWP:
|
||||
FreeCAD.DraftWorkingPlane = self.oldWP
|
||||
|
||||
Reference in New Issue
Block a user