Draft: More solid closing of Draft commands - fixes #2532

This commit is contained in:
Yorik van Havre
2017-06-29 12:17:36 -03:00
parent 51c6ca053a
commit 74e7940024
2 changed files with 22 additions and 6 deletions

View File

@@ -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"

View File

@@ -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