diff --git a/src/Mod/Arch/ArchStructure.py b/src/Mod/Arch/ArchStructure.py index a14204338..0f25364da 100644 --- a/src/Mod/Arch/ArchStructure.py +++ b/src/Mod/Arch/ArchStructure.py @@ -481,11 +481,12 @@ class _CommandStructure: def update(self,point,info): "this function is called by the Snapper when the mouse is moved" - if self.Height >= self.Length: - delta = Vector(0,0,self.Height/2) - else: - delta = Vector(self.Length/2,0,0) - self.tracker.pos(point.add(delta)) + if FreeCADGui.Control.activeDialog(): + if self.Height >= self.Length: + delta = Vector(0,0,self.Height/2) + else: + delta = Vector(self.Length/2,0,0) + self.tracker.pos(point.add(delta)) def setWidth(self,d): self.Width = d diff --git a/src/Mod/Arch/ArchWall.py b/src/Mod/Arch/ArchWall.py index 24ed95110..47d8c4b1c 100644 --- a/src/Mod/Arch/ArchWall.py +++ b/src/Mod/Arch/ArchWall.py @@ -246,20 +246,21 @@ class _CommandWall: def update(self,point,info): "this function is called by the Snapper when the mouse is moved" - b = self.points[0] - n = FreeCAD.DraftWorkingPlane.axis - bv = point.sub(b) - dv = bv.cross(n) - dv = DraftVecUtils.scaleTo(dv,self.Width/2) - if self.Align == "Center": - self.tracker.update([b,point]) - elif self.Align == "Left": - self.tracker.update([b.add(dv),point.add(dv)]) - else: - dv = dv.negative() - self.tracker.update([b.add(dv),point.add(dv)]) - if self.Length: - self.Length.setValue(bv.Length) + if FreeCADGui.Control.activeDialog(): + b = self.points[0] + n = FreeCAD.DraftWorkingPlane.axis + bv = point.sub(b) + dv = bv.cross(n) + dv = DraftVecUtils.scaleTo(dv,self.Width/2) + if self.Align == "Center": + self.tracker.update([b,point]) + elif self.Align == "Left": + self.tracker.update([b.add(dv),point.add(dv)]) + else: + dv = dv.negative() + self.tracker.update([b.add(dv),point.add(dv)]) + if self.Length: + self.Length.setValue(bv.Length) def taskbox(self): "sets up a taskbox widget" diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index e24baa06b..b8bd5bb82 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -561,6 +561,12 @@ class DraftToolBar: # create a dummy task to block the UI during the works class dummy: "an empty dialog" + def __init__(self,extra=None): + if extra: + if isinstance(extra,list): + self.form = extra + else: + self.form = [extra] def getStandardButtons(self): return int(QtGui.QDialogButtonBox.Cancel) def accept(self): @@ -571,8 +577,9 @@ class DraftToolBar: FreeCADGui.draftToolBar.escape() FreeCADGui.ActiveDocument.resetEdit() return True - if not FreeCADGui.Control.activeDialog(): - todo.delay(FreeCADGui.Control.showDialog,dummy()) + if FreeCADGui.Control.activeDialog(): + FreeCADGui.Control.closeDialog() + todo.delay(FreeCADGui.Control.showDialog,dummy(extra)) self.setTitle(title) def redraw(self):