From f4b2d6cb8b9d7e68a5ad59e1e8102de2a42c85d4 Mon Sep 17 00:00:00 2001 From: vocx-fc Date: Fri, 5 Jun 2020 00:11:12 -0500 Subject: [PATCH] Draft: reset the list of strings in the Label viewprovider When the value of the `Text` is changed, in the Coin node only the first element in the list of strings is updated, the other elements remain the same, resulting in an incorrect label. So we empty the value of the Coin string with `setValue("")`, and then we can assign the new string list, producing the correct expected result. --- .../Draft/draftviewproviders/view_label.py | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Mod/Draft/draftviewproviders/view_label.py b/src/Mod/Draft/draftviewproviders/view_label.py index e88783a8a4..9495b21058 100644 --- a/src/Mod/Draft/draftviewproviders/view_label.py +++ b/src/Mod/Draft/draftviewproviders/view_label.py @@ -210,15 +210,17 @@ class ViewProviderLabel(ViewProviderDraftAnnotation): else: self.text2d.justification = coin.SoText2.LEFT self.text3d.justification = coin.SoAsciiText.LEFT - elif prop == "Text": - if obj.Text: - if sys.version_info.major >= 3: - self.text2d.string.setValues([l for l in obj.Text if l]) - self.text3d.string.setValues([l for l in obj.Text if l]) - else: - self.text2d.string.setValues([l.encode("utf8") for l in obj.Text if l]) - self.text3d.string.setValues([l.encode("utf8") for l in obj.Text if l]) - self.onChanged(obj.ViewObject,"TextAlignment") + elif prop == "Text" and obj.Text: + self.text2d.string.setValue("") + self.text3d.string.setValue("") + + if sys.version_info.major >= 3: + self.text2d.string.setValues([l for l in obj.Text if l]) + self.text3d.string.setValues([l for l in obj.Text if l]) + else: + self.text2d.string.setValues([l.encode("utf8") for l in obj.Text if l]) + self.text3d.string.setValues([l.encode("utf8") for l in obj.Text if l]) + self.onChanged(obj.ViewObject, "TextAlignment") def getTextSize(self,vobj): if vobj.DisplayMode == "3D text":