Consolidate the properties panel: Position & taille, no more Taille/Survol/duplicate Disposition

- Merge "Taille dans le conteneur" into "Position & taille": a child
  element (posé dans un conteneur/répéteur/groupe de champs) now shows
  greyed-out X/Y (not applicable, it follows its parent's layout) and
  a single Largeur/Hauteur field per axis with a unit selector (%/px)
  instead of the old fixed-px-only sliders capped at 1000 — which was
  the root cause of a landscape-mode bug where a child couldn't be
  made wider than 1000px even though the actual screen was wider.
  New c_size control type (one style key per axis, not two competing
  sliders — an earlier px+% two-slider attempt let the untouched
  slider silently clobber the other's value on every autosave).
- Merge the two "Disposition" groups (visibility + scale, previously
  split apart in UNIVERSAL_CONTROLS by unrelated groups) into one.
- Remove the "Survol" panel: hovering is conceptually a flow trigger,
  not a static element property — to be reintroduced there. The
  underlying data-hover-text/bindHoverTexts runtime is untouched.
This commit is contained in:
william
2026-08-23 12:14:00 +02:00
parent d86b1a60c7
commit 4a593d07e4
9 changed files with 120 additions and 33 deletions
+8 -2
View File
@@ -18,7 +18,13 @@ def _add_element(client, slug, screen_id, widget):
# ---------- 3.1 — Interactions au survol ----------
def test_hover_text_control_saved_and_rendered(client, game):
def test_hover_text_control_removed_from_properties_panel(client, game):
"""Le réglage "Survol" a été retiré du panneau de propriétés (voir
universal_controls.py) : survoler un élément est conceptuellement un
déclencheur de la Logique de la scène, pas une propriété statique —
il sera réintroduit là-bas. Poster ctrl_survol_texte ne doit donc plus
avoir d'effet (le mécanisme data-hover-text/bindHoverTexts sous-jacent
reste en place pour un usage futur, voir les tests ci-dessous)."""
screen_id = _create_screen(client, game)
el_id = _add_element(client, game, screen_id, "titre")
client.post(f"/game/{game}/elements/{el_id}/save", data={
@@ -26,7 +32,7 @@ def test_hover_text_control_saved_and_rendered(client, game):
})
resp = client.get(f"/game/{game}/play")
html = resp.data.decode()
assert 'data-hover-text="mathilde.d@forgebase.fr"' in html
assert 'data-hover-text="' not in html
def test_hover_text_absent_by_default_no_regression(client, game):