From 9b40fc0a854cb444e6250dbddc185c15f3f8503f Mon Sep 17 00:00:00 2001 From: Domi31tls Date: Wed, 17 Jun 2026 18:05:45 +0200 Subject: [PATCH] fix(gui): rendre les profils scrollables a la molette Ajoute un conteneur scrollable dedie au sous-onglet Profils pour permettre le defilement souris du formulaire complet. Tests GUI: test_gui_v6_profiles.py et test_gui_v6_*.py. --- gui_v6/tabs/tab_config.py | 5 +++++ tests/unit/test_gui_v6_profiles.py | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/gui_v6/tabs/tab_config.py b/gui_v6/tabs/tab_config.py index cdec500..5d0ba86 100644 --- a/gui_v6/tabs/tab_config.py +++ b/gui_v6/tabs/tab_config.py @@ -491,6 +491,11 @@ class ConfigTab(ctk.CTkFrame): p = self._p from gui_v6.editable_list import EditableTermList + content = ctk.CTkScrollableFrame(parent, fg_color="transparent") + content.pack(fill="both", expand=True) + self._profile_scroll = content + parent = content + self._section_intro( parent, "Un profil regroupe les moteurs, les masques, les règles et les mots à conserver ou masquer.", diff --git a/tests/unit/test_gui_v6_profiles.py b/tests/unit/test_gui_v6_profiles.py index b888d4b..a0741c5 100644 --- a/tests/unit/test_gui_v6_profiles.py +++ b/tests/unit/test_gui_v6_profiles.py @@ -162,6 +162,22 @@ def test_profils_editor_creates_and_persists(ctk_root, tmp_path, monkeypatch): tab.destroy() +def test_profils_panel_has_dedicated_mouse_scroll(ctk_root, tmp_path, monkeypatch): + """Retour Dom : le formulaire Profils doit pouvoir défiler à la molette.""" + import customtkinter as ctk + + from gui_v6.tabs import tab_config + + monkeypatch.setattr(tab_config, "_app_base_dir", lambda: tmp_path) + tab = tab_config.ConfigTab(ctk_root) + tab._show_sub("pro") + tab.update_idletasks() + + assert isinstance(tab._profile_scroll, ctk.CTkScrollableFrame) + assert hasattr(tab._profile_scroll, "_parent_canvas") + tab.destroy() + + def test_profils_default_profile_is_read_only(ctk_root, tmp_path, monkeypatch): """Un profil par défaut n'est pas éditable (bouton Enregistrer désactivé).""" from gui_v6.tabs import tab_config