Annule la réservation d'espace des panneaux, corrige le vrai bug (drag invisible sous eux)
Retour en arrière sur le commit précédent : les panneaux flottants doivent RESTER en position:fixed par-dessus le canevas pour maximiser l'espace utile (remarque explicite) — leur réserver une marge permanente allait à l'encontre de ce principe et ne réglait rien. Vrai bug identifié : un objet glissé (déplacé ou redimensionné) sous l'un de ces panneaux (z-index:60) disparaissait littéralement à l'écran PENDANT le geste — toujours déplacé/enregistré correctement en dessous, juste invisible, donnant l'impression qu'on ne pouvait pas y déposer d'objet. Élevé au-dessus des panneaux (z-index très haut) le temps du glisser/redimensionnement SEULEMENT, restauré ensuite. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
d705f58c4a
commit
046c38b4dc
@@ -48,10 +48,23 @@ function onSceneObjectMouseDown(e, id) {
|
||||
var startLeft = parseFloat(el.style.left) || 0, startTop = parseFloat(el.style.top) || 0;
|
||||
var width = parseFloat(el.style.width) || 0, height = parseFloat(el.style.height) || 0;
|
||||
var moved = false;
|
||||
// Les panneaux flottants "🧩 Objets"/"⚙️ Propriétés" (voir static/style.css
|
||||
// .floatPanel, z-index:60) restent DÉLIBÉRÉMENT en position:fixed
|
||||
// PAR-DESSUS le canevas, pour maximiser l'espace utile — mais un objet
|
||||
// glissé sous l'un d'eux, à son z-index habituel (bien plus bas), y
|
||||
// disparaissait littéralement à l'écran PENDANT le glisser (toujours
|
||||
// déplacé/enregistré correctement en dessous, juste invisible pendant
|
||||
// le geste) : impossible de voir où on le dépose. Passé au-dessus des
|
||||
// panneaux (z-index très élevé) le temps du glisser SEULEMENT, restauré
|
||||
// à sa valeur d'origine à la fin.
|
||||
var previousZIndex = el.style.zIndex;
|
||||
|
||||
function onMove(ev) {
|
||||
var dx = ev.clientX - startX, dy = ev.clientY - startY;
|
||||
if (Math.abs(dx) > 3 || Math.abs(dy) > 3) moved = true;
|
||||
if (Math.abs(dx) > 3 || Math.abs(dy) > 3) {
|
||||
if (!moved) el.style.zIndex = 9999;
|
||||
moved = true;
|
||||
}
|
||||
var newLeft = Math.max(0, Math.min(SCENE_WIDTH - width, startLeft + dx));
|
||||
var newTop = Math.max(0, Math.min(SCENE_HEIGHT - height, startTop + dy));
|
||||
el.style.left = newLeft + 'px';
|
||||
@@ -61,6 +74,7 @@ function onSceneObjectMouseDown(e, id) {
|
||||
document.removeEventListener('mousemove', onMove);
|
||||
document.removeEventListener('mouseup', onUp);
|
||||
if (moved) {
|
||||
el.style.zIndex = previousZIndex;
|
||||
var newLeft = parseFloat(el.style.left), newTop = parseFloat(el.style.top);
|
||||
updateScenePosFields(newLeft, newTop, width, height);
|
||||
saveSceneObjectGeometry(id, newLeft, newTop, width, height);
|
||||
@@ -79,6 +93,11 @@ function onSceneObjectResizeMouseDown(e, id) {
|
||||
var startX = e.clientX, startY = e.clientY;
|
||||
var startWidth = parseFloat(el.style.width) || 0, startHeight = parseFloat(el.style.height) || 0;
|
||||
var left = parseFloat(el.style.left) || 0, top = parseFloat(el.style.top) || 0;
|
||||
// Voir la même note dans onSceneObjectMouseDown ci-dessus : au-dessus
|
||||
// des panneaux flottants le temps du geste, pour rester visible même
|
||||
// en redimensionnant sous l'un d'eux.
|
||||
var previousZIndex = el.style.zIndex;
|
||||
el.style.zIndex = 9999;
|
||||
|
||||
function onMove(ev) {
|
||||
var dx = ev.clientX - startX, dy = ev.clientY - startY;
|
||||
@@ -90,6 +109,7 @@ function onSceneObjectResizeMouseDown(e, id) {
|
||||
function onUp() {
|
||||
document.removeEventListener('mousemove', onMove);
|
||||
document.removeEventListener('mouseup', onUp);
|
||||
el.style.zIndex = previousZIndex;
|
||||
var newWidth = parseFloat(el.style.width), newHeight = parseFloat(el.style.height);
|
||||
updateScenePosFields(left, top, newWidth, newHeight);
|
||||
saveSceneObjectGeometry(id, left, top, newWidth, newHeight);
|
||||
|
||||
Reference in New Issue
Block a user