mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
Remove possibility to rename item on click a short delay after item has been selected (#5847)
Users noticed that they unwillingly edited object names when they only wanted to click/double-click/drag the object
This commit is contained in:
@@ -78,9 +78,6 @@
|
||||
text-overflow: ellipsis;
|
||||
user-select: none;
|
||||
}
|
||||
.tree-view .item-name.editable {
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.tree-view .item-name.placeholder {
|
||||
color: var(--theme-text-secondary-color);
|
||||
|
@@ -23,7 +23,6 @@ import { dataObjectToProps } from '../../Utils/HTMLDataset';
|
||||
const stopPropagation = e => e.stopPropagation();
|
||||
|
||||
const DELAY_BEFORE_OPENING_FOLDER_ON_DRAG_HOVER = 800;
|
||||
const DELAY_BEFORE_ENABLING_NAME_EDITION_AFTER_SELECTION_ON_DESKTOP = 1000;
|
||||
const DELAY_BEFORE_OPENING_CONTEXT_MENU_ON_MOBILE = 1000;
|
||||
|
||||
const onInputKeyDown = (event: KeyboardEvent) => {
|
||||
@@ -121,7 +120,6 @@ const TreeViewRow = <Item: ItemBaseAttributes>(props: Props<Item>) => {
|
||||
onOpen,
|
||||
onSelect,
|
||||
onBlurField,
|
||||
onStartRenaming,
|
||||
onEndRenaming,
|
||||
renamedItemId,
|
||||
onContextMenu,
|
||||
@@ -136,10 +134,6 @@ const TreeViewRow = <Item: ItemBaseAttributes>(props: Props<Item>) => {
|
||||
const left = node.depth * 15;
|
||||
const forceUpdate = useForceUpdate();
|
||||
const isStayingOverRef = React.useRef<boolean>(false);
|
||||
const [
|
||||
hasDelayPassedBeforeEditingName,
|
||||
setHasDelayPassedBeforeEditingName,
|
||||
] = React.useState<boolean>(false);
|
||||
const openWhenOverTimeoutId = React.useRef<?TimeoutID>(null);
|
||||
const [whereToDrop, setWhereToDrop] = React.useState<
|
||||
'before' | 'after' | 'inside'
|
||||
@@ -221,30 +215,8 @@ const TreeViewRow = <Item: ItemBaseAttributes>(props: Props<Item>) => {
|
||||
[onOpen, node, forceUpdate, isStayingOverRef.current]
|
||||
);
|
||||
|
||||
/**
|
||||
* Effect allows editing the name of the node after a delay has passed
|
||||
* after its selection by the user.
|
||||
*/
|
||||
React.useEffect(
|
||||
() => {
|
||||
if (isMobileScreen) return;
|
||||
if (node.selected) {
|
||||
if (!hasDelayPassedBeforeEditingName) {
|
||||
const timeoutId = setTimeout(() => {
|
||||
setHasDelayPassedBeforeEditingName(true);
|
||||
}, DELAY_BEFORE_ENABLING_NAME_EDITION_AFTER_SELECTION_ON_DESKTOP);
|
||||
return () => clearTimeout(timeoutId);
|
||||
}
|
||||
} else {
|
||||
setHasDelayPassedBeforeEditingName(false);
|
||||
}
|
||||
},
|
||||
[node.selected, isMobileScreen, hasDelayPassedBeforeEditingName]
|
||||
);
|
||||
|
||||
const endRenaming = React.useCallback(
|
||||
(newValue: string) => {
|
||||
setHasDelayPassedBeforeEditingName(false);
|
||||
onEndRenaming(node.item, newValue);
|
||||
},
|
||||
[onEndRenaming, node.item]
|
||||
@@ -414,26 +386,7 @@ const TreeViewRow = <Item: ItemBaseAttributes>(props: Props<Item>) => {
|
||||
: node.item.isPlaceholder
|
||||
? ' placeholder'
|
||||
: ''
|
||||
}${
|
||||
node.item.isRoot || node.item.isPlaceholder
|
||||
? ''
|
||||
: hasDelayPassedBeforeEditingName
|
||||
? ' editable'
|
||||
: ''
|
||||
}`}
|
||||
onClick={
|
||||
node.item.isRoot ||
|
||||
node.item.isPlaceholder ||
|
||||
isMobileScreen ||
|
||||
!hasDelayPassedBeforeEditingName
|
||||
? null
|
||||
: e => {
|
||||
if (!e.metaKey && !e.shiftKey) {
|
||||
e.stopPropagation();
|
||||
onStartRenaming(node.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
>
|
||||
{node.name}
|
||||
</span>
|
||||
|
@@ -45,7 +45,6 @@ export type ItemData<Item> = {|
|
||||
onSelect: ({| node: FlattenedNode<Item>, exclusive?: boolean |}) => void,
|
||||
onBlurField: () => void,
|
||||
flattenedData: FlattenedNode<Item>[],
|
||||
onStartRenaming: (nodeId: ?string) => void,
|
||||
onEndRenaming: (item: Item, newName: string) => void,
|
||||
onContextMenu: ({|
|
||||
item: Item,
|
||||
@@ -68,7 +67,6 @@ const getItemProps = memoizeOne(
|
||||
onOpen: (FlattenedNode<Item>) => void,
|
||||
onSelect: ({| node: FlattenedNode<Item>, exclusive?: boolean |}) => void,
|
||||
onBlurField: () => void,
|
||||
onStartRenaming: (nodeId: ?string) => void,
|
||||
onEndRenaming: (item: Item, newName: string) => void,
|
||||
renamedItemId: ?string,
|
||||
onContextMenu: ({|
|
||||
@@ -88,7 +86,6 @@ const getItemProps = memoizeOne(
|
||||
onSelect,
|
||||
onBlurField,
|
||||
flattenedData,
|
||||
onStartRenaming,
|
||||
onEndRenaming,
|
||||
renamedItemId,
|
||||
onContextMenu,
|
||||
@@ -492,7 +489,6 @@ const TreeView = <Item: ItemBaseAttributes>(
|
||||
onOpen,
|
||||
onSelect,
|
||||
onBlurField,
|
||||
setRenamedItemId,
|
||||
onEndRenaming,
|
||||
renamedItemId,
|
||||
openContextMenu,
|
||||
|
Reference in New Issue
Block a user