From 3344bc804caced6fc3f74d724434141ba91068cd Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Mon, 24 Nov 2025 05:30:09 +0100 Subject: [PATCH] Draft: fix number_length for imperial dimensions (#25369) * The number_length function did not take imperial dimensions into account. For `9" + 7/8"` it would return 1. * In ArchRoof reference number_length function from DraftGui.py to avoid duplicate code. --- src/Mod/BIM/ArchRoof.py | 10 +--------- src/Mod/Draft/DraftGui.py | 11 ++++++----- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/Mod/BIM/ArchRoof.py b/src/Mod/BIM/ArchRoof.py index 9dc07eb0d9..5620016608 100644 --- a/src/Mod/BIM/ArchRoof.py +++ b/src/Mod/BIM/ArchRoof.py @@ -1108,13 +1108,5 @@ if FreeCAD.GuiUp: def eventFilter(self, widget, event): if event.type() == QtCore.QEvent.FocusIn: - widget.setSelection(0, self.number_length(widget.text())) + widget.setSelection(0, FreeCADGui.draftToolBar.number_length(widget.text())) return super().eventFilter(widget, event) - - def number_length(self, str): - # Code taken from DraftGui.py. - nl = 0 - for char in str: - if char in "0123456789.,-": - nl += 1 - return nl diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index e32b000ba3..6546146f79 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -803,11 +803,12 @@ class DraftToolBar: self.xValue.setFocus() self.xValue.setSelection(0, self.number_length(self.xValue.text())) - def number_length(self, str): - nl = 0 - for char in str: - if char in "0123456789.,-": - nl += 1 + def number_length(self, st): + nl = len(st) + for char in st[::-1]: + if char in "0123456789.,-+/": + break + nl -= 1 return nl def extraLineUi(self):