authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-03-06 11:42:13-08:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-03-09 15:08:10-07:00
logb5dde6b9d865930bc2b981816dde3f614e892813
tree424b3ef2a07964cea2c972738223788b31c7a13b
parenta6b22ec1c9b247536111dd2c2e8682f9b3f550c5

Prevent stale click suppression after project drag cancel

- Reset post-drag click suppression when drag is canceled - Consume only the synthetic click after drag release, then clear suppression

1 files changed, 9 insertions(+), 1 deletions(-)

apps/web/src/components/Sidebar.tsx+9-1
......@@ -862,6 +862,7 @@ export default function Sidebar() {
862862
863863 const handleProjectDragCancel = useCallback((_event: DragCancelEvent) => {
864864 dragInProgressRef.current = false;
865 suppressProjectClickAfterDragRef.current = false;
865866 }, []);
866867
867868 const handleProjectTitlePointerDownCapture = useCallback(() => {
......@@ -870,7 +871,14 @@ export default function Sidebar() {
870871
871872 const handleProjectTitleClick = useCallback(
872873 (event: React.MouseEvent<HTMLButtonElement>, projectId: ProjectId) => {
873 if (dragInProgressRef.current || suppressProjectClickAfterDragRef.current) {
874 if (dragInProgressRef.current) {
875 event.preventDefault();
876 event.stopPropagation();
877 return;
878 }
879 if (suppressProjectClickAfterDragRef.current) {
880 // Consume the synthetic click emitted after a drag release.
881 suppressProjectClickAfterDragRef.current = false;
874882 event.preventDefault();
875883 event.stopPropagation();
876884 return;