Place assets by dragging them from the panel into the view
The context menu entry is gone; dragging replaces it entirely. The drop target is the view under the pointer, not the active tab, so the same gesture works for scenes and for container templates. While dragging, an outline shows the footprint the object will have plus a crosshair on its origin, turning red when the drop would be refused. Preview and command share one function (placementRejection), so the outline cannot promise something the drop then rejects. A left-press used to select the list row immediately. Since the container tab follows the selection, it switched to the very container being dragged and every drop would have nested it inside itself. The list now selects on release without a drag: picking something up is not the same as choosing it.
This commit is contained in:
1 parent
14562cf157
commit
75d377af39
18 files changed
+545
-77
No files matched your search
@@ -1,2 +0,0 @@
|
||||
momentan funktioniert das platzieren eines asset in der scene/container per "Place in ..." über das kontextmenü.
|
||||
zukünftig soll es per drag and drop passieren
|
||||
@@ -0,0 +1,29 @@
|
||||
momentan funktioniert das platzieren eines asset in der scene/container per "Place in ..." über das kontextmenü.
|
||||
zukünftig soll es per drag and drop passieren
|
||||
|
||||
---
|
||||
|
||||
**Umgesetzt (2026-09-09).** Drag and Drop ersetzt den Menueintrag vollstaendig — auf deine
|
||||
Ansage hin ist "Place in scene"/"Place in container" aus dem Kontextmenue verschwunden.
|
||||
Doppelklick auf die Zeile platziert weiterhin in die Mitte der sichtbaren Ansicht.
|
||||
|
||||
- **Ziehen:** die Zeile im Assets-Panel wird nach 4 px Weg zum Drag; ein Ghost mit dem
|
||||
Asset-Namen haengt am Cursor (`src/ui/drag.ts`). Die `ListView` erkennt die Geste nur und
|
||||
gibt sie per `onDragOut` nach aussen ab — sie kennt kein Ziel ausserhalb ihrer selbst.
|
||||
- **Vorschau:** ueber einer Ansicht zeigt ein Umriss die **Groesse**, die das Objekt haben wird,
|
||||
plus Fadenkreuz auf dem Ursprung. Rot = der Drop wird abgelehnt.
|
||||
- **Ziel:** die Ansicht unter dem Zeiger, nicht der aktive Tab. Scene-Tab → aktive Szene,
|
||||
Container-Tab → offene Vorlage. `ContainerCanvas` erbt das von `SceneViewport`.
|
||||
- **Regel:** `placementRejection` (`src/core/model/placement.ts`) — dieselbe Funktion, die
|
||||
`PlaceAssetCommand` ausfuehrt. Die Vorschau kann also nichts versprechen, was der Drop
|
||||
danach verweigert. Heute lehnt sie ab: Szenen und Container, die in sich selbst landen.
|
||||
|
||||
**Zwei Fallen, die beim Bauen erst sichtbar wurden:**
|
||||
|
||||
1. Ein Drag beginnt mit einem **Linksklick**, und der selektiert die Zeile — der Container-Tab
|
||||
folgte der Selektion und haette sich mitten im Drag auf genau den Container umgeschaltet,
|
||||
der gerade gezogen wird. Das Ziel waere unter dem Zeiger weggerutscht und jeder Drop haette
|
||||
sich selbst verschachtelt. `followSelection` haelt jetzt still, solange ein Drag laeuft.
|
||||
Vorher schuetzte davor der Rechtsklick, der nicht selektiert; mit Drag&Drop trug das nicht mehr.
|
||||
2. Ein Drag endet oft dort, wo die Zielansicht **nichts davon mitbekommt** (ueber einem anderen
|
||||
Panel, ausserhalb des Canvas). Ohne `onDragChange` waere die Vorschau stehengeblieben.
|
||||
Reference in new issue
Block a user