Skip to content

Commit 795ce38

Browse files
author
Morten Barklund
authored
Fixed layer selection by reverting focus to canvas (#1188)
1 parent cd60871 commit 795ce38

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

assets/src/edit-story/components/panels/layer/layerList.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* External dependencies
1919
*/
2020
import styled from 'styled-components';
21-
import { Fragment } from 'react';
21+
import { Fragment, useCallback } from 'react';
2222
import PropTypes from 'prop-types';
2323

2424
/**
@@ -30,6 +30,7 @@ import {
3030
ReorderableItem,
3131
} from '../../reorderable';
3232
import { useStory } from '../../../app';
33+
import useFocusCanvas from '../../canvas/useFocusCanvas';
3334
import { LAYER_HEIGHT } from './constants';
3435
import Layer from './layer';
3536

@@ -55,6 +56,15 @@ function LayerPanel({ layers }) {
5556

5657
const numLayers = layers && layers.length;
5758

59+
const focusCanvas = useFocusCanvas();
60+
const handleStartReordering = useCallback(
61+
(id) => () => {
62+
setSelectedElementsById({ elementIds: [id] });
63+
focusCanvas();
64+
},
65+
[setSelectedElementsById, focusCanvas]
66+
);
67+
5868
if (!numLayers) {
5969
return null;
6070
}
@@ -75,9 +85,7 @@ function LayerPanel({ layers }) {
7585
<LayerSeparator position={layer.position + 1} />
7686
<ReorderableItem
7787
position={layer.position}
78-
onStartReordering={() =>
79-
setSelectedElementsById({ elementIds: [layer.id] })
80-
}
88+
onStartReordering={handleStartReordering(layer.id)}
8189
disabled={layer.type === 'background'}
8290
>
8391
<Layer layer={layer} />

assets/src/edit-story/components/panels/layer/useLayerSelection.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { useCallback } from 'react';
2323
* Internal dependencies
2424
*/
2525
import { useStory } from '../../../app';
26+
import useFocusCanvas from '../../canvas/useFocusCanvas';
2627

2728
function useLayerSelection(layer) {
2829
const { id: elementId } = layer;
@@ -32,6 +33,8 @@ function useLayerSelection(layer) {
3233
actions: { setSelectedElementsById, toggleElementInSelection },
3334
} = useStory();
3435

36+
const focusCanvas = useFocusCanvas();
37+
3538
const isSelected = selectedElementIds.includes(elementId);
3639
const pageElementIds = currentPage.elements.map(({ id }) => id);
3740

@@ -62,13 +65,17 @@ function useLayerSelection(layer) {
6265
// No special key pressed - just selected this layer and nothing else.
6366
setSelectedElementsById({ elementIds: [elementId] });
6467
}
68+
69+
// In any case, revert focus to selected element(s)
70+
focusCanvas();
6571
},
6672
[
6773
pageElementIds,
6874
selectedElementIds,
6975
setSelectedElementsById,
7076
toggleElementInSelection,
7177
elementId,
78+
focusCanvas,
7279
]
7380
);
7481

0 commit comments

Comments
 (0)