From b2b2bc86d0f92b02cd3ffc3ac66ad9549aa32bbe Mon Sep 17 00:00:00 2001 From: Loren Eteval Date: Wed, 7 Oct 2026 12:28:04 +0800 Subject: [PATCH] Improve sing-tun settings readability Signed-off-by: Loren Eteval --- Furious/Window/SingTUNSettingsDialog.py | 2 ++ tests/test_sing_tun.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/Furious/Window/SingTUNSettingsDialog.py b/Furious/Window/SingTUNSettingsDialog.py index 05f4d9c9..eeee85f2 100644 --- a/Furious/Window/SingTUNSettingsDialog.py +++ b/Furious/Window/SingTUNSettingsDialog.py @@ -359,6 +359,7 @@ class SingTUNSettingsDialog(AppQTransientDialog): option = QStyleOptionFrame() widget.initStyleOption(option) + margins = widget.textMargins() textWidth = widget.fontMetrics().horizontalAdvance(widget.placeholderText()) size = widget.style().sizeFromContents( @@ -371,6 +372,7 @@ class SingTUNSettingsDialog(AppQTransientDialog): widget, ) width = max(180, size.width() + 80) + widget.setMinimumWidth(width) widget.setMaximumWidth(width) diff --git a/tests/test_sing_tun.py b/tests/test_sing_tun.py index 8e46a889..2dfbbbd5 100644 --- a/tests/test_sing_tun.py +++ b/tests/test_sing_tun.py @@ -630,8 +630,10 @@ class SingTUNUIAndStorageTest(unittest.TestCase): for language in ('EN', 'RU', 'ZH'): with self.subTest(language=language), isolatedSettings(): AppSettings.set('Language', language) + dialog = self._dialog({}) original = dialog.document() + dialog.open() dialog.activateWindow() processQtEvents() @@ -665,6 +667,7 @@ class SingTUNUIAndStorageTest(unittest.TestCase): ) ordered = [dialog.fields[key] for key in keys] + ordered[0].setFocus() processQtEvents() @@ -706,8 +709,10 @@ class SingTUNUIAndStorageTest(unittest.TestCase): def testDurationInputsFitTranslatedPlaceholdersWithoutChangingValues(self): with isolatedSettings(): AppSettings.set('Language', 'EN') + dialog = self._dialog({}) original = dialog.document() + dialog.tabs.setCurrentIndex(1) dialog.open() processQtEvents() @@ -722,11 +727,13 @@ class SingTUNUIAndStorageTest(unittest.TestCase): field = dialog.fields[key] option = QStyleOptionFrame() field.initStyleOption(option) + content = field.style().subElementRect( QStyle.SubElement.SE_LineEditContents, option, field ) margins = field.textMargins() available = content.width() - margins.left() - margins.right() + self.assertGreaterEqual( available, field.fontMetrics().horizontalAdvance( @@ -884,7 +891,9 @@ class SingTUNUIAndStorageTest(unittest.TestCase): processQtEvents() name = dialog.fields['primaryAdapterInterfaceName'] address = dialog.fields['primaryAdapterInterfaceIP'] + self.assertLess(name.geometry().bottom(), address.geometry().top()) + for key, width in ( ('primaryAdapterInterfaceName', 360), ('primaryAdapterInterfaceIP', 360), @@ -903,6 +912,7 @@ class SingTUNUIAndStorageTest(unittest.TestCase): ) ] ordered[0].setFocus() + for current, following in zip(ordered, ordered[1:]): QTest.keyClick(current, QtCore.Qt.Key_Tab) self.assertTrue(following.hasFocus())