diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 26dbc79e18..b81f401459 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -1,6 +1,23 @@ = Changelog -== v2023.4.0 (unreleased) +== v2023.6.0 (unreleased) + +=== Architectural decision records + +=== Breaking changes + +=== Dependency update + +=== Bug fixes + +- https://github.com/eclipse-sirius/sirius-components/issues/1304[#1304] [tree] Fix an issue where dropping an element from the tree to an unsynchronized diagram took the selected element instead of the dragged one. + +=== New Features + +=== Improvements + + +== v2023.4.0 === Architectural decision records diff --git a/packages/trees/frontend/sirius-components-trees/src/treeitems/TreeItem.tsx b/packages/trees/frontend/sirius-components-trees/src/treeitems/TreeItem.tsx index cf7444d10d..16604f957f 100644 --- a/packages/trees/frontend/sirius-components-trees/src/treeitems/TreeItem.tsx +++ b/packages/trees/frontend/sirius-components-trees/src/treeitems/TreeItem.tsx @@ -11,11 +11,11 @@ * Obeo - initial API and implementation *******************************************************************************/ import { gql, useMutation } from '@apollo/client'; -import { DRAG_SOURCES_TYPE, Selection, ServerContext } from '@eclipse-sirius/sirius-components-core'; +import { DRAG_SOURCES_TYPE, Selection, SelectionEntry, ServerContext } from '@eclipse-sirius/sirius-components-core'; import IconButton from '@material-ui/core/IconButton'; -import { makeStyles } from '@material-ui/core/styles'; import TextField from '@material-ui/core/TextField'; import Typography from '@material-ui/core/Typography'; +import { makeStyles } from '@material-ui/core/styles'; import CropDinIcon from '@material-ui/icons/CropDin'; import MoreVertIcon from '@material-ui/icons/MoreVert'; import React, { useContext, useEffect, useRef, useState } from 'react'; @@ -376,8 +376,14 @@ export const TreeItem = ({ const draggable = kind.startsWith('siriusComponents://semantic'); const dragStart: React.DragEventHandler = (event) => { const entries = selection.entries.filter((entry) => entry.kind.startsWith('siriusComponents://semantic')); + if (entries.length > 0) { - event.dataTransfer.setData(DRAG_SOURCES_TYPE, JSON.stringify(entries)); + if (!selection.entries.map((entry) => entry.id).includes(item.id)) { + const itemEntry: SelectionEntry = { id: item.id, label: item.label, kind: item.kind }; + event.dataTransfer.setData(DRAG_SOURCES_TYPE, JSON.stringify([itemEntry])); + } else { + event.dataTransfer.setData(DRAG_SOURCES_TYPE, JSON.stringify(entries)); + } } }; const dragOver: React.DragEventHandler = (event) => {