@@ -1651,12 +1651,13 @@ const renderWorkspaceTabs = () => {
16511651
16521652 for ( const tab of tabs ) {
16531653 const isActive = tab . id === activeTabId
1654+ const isRenaming = workspaceTabRenameState . tabId === tab . id
16541655 const tabContainer = document . createElement ( 'li' )
16551656 tabContainer . className = 'workspace-tab'
16561657 tabContainer . dataset . active = isActive ? 'true' : 'false'
16571658 tabContainer . dataset . tabId = tab . id
16581659 tabContainer . setAttribute ( 'aria-label' , `Workspace tab ${ tab . name } ` )
1659- tabContainer . draggable = true
1660+ tabContainer . draggable = ! isRenaming
16601661 tabContainer . dataset . dragOver =
16611662 dragOverWorkspaceTabId && dragOverWorkspaceTabId === tab . id ? 'true' : 'false'
16621663 tabContainer . addEventListener ( 'click' , event => {
@@ -1678,70 +1679,72 @@ const renderWorkspaceTabs = () => {
16781679
16791680 setActiveWorkspaceTab ( tab . id )
16801681 } )
1681- tabContainer . addEventListener ( 'dragstart' , event => {
1682- draggedWorkspaceTabId = tab . id
1683- dragOverWorkspaceTabId = ''
1684- suppressWorkspaceTabClick = true
1685- if ( event . dataTransfer ) {
1686- event . dataTransfer . effectAllowed = 'move'
1687- event . dataTransfer . setData ( 'text/plain' , tab . id )
1688- }
1689- } )
1690- tabContainer . addEventListener ( 'dragend' , ( ) => {
1691- clearWorkspaceTabDragState ( )
1692- queueMicrotask ( ( ) => {
1693- suppressWorkspaceTabClick = false
1682+ if ( ! isRenaming ) {
1683+ tabContainer . addEventListener ( 'dragstart' , event => {
1684+ draggedWorkspaceTabId = tab . id
1685+ dragOverWorkspaceTabId = ''
1686+ suppressWorkspaceTabClick = true
1687+ if ( event . dataTransfer ) {
1688+ event . dataTransfer . effectAllowed = 'move'
1689+ event . dataTransfer . setData ( 'text/plain' , tab . id )
1690+ }
16941691 } )
1695- renderWorkspaceTabs ( )
1696- } )
1697- tabContainer . addEventListener ( 'dragover' , event => {
1698- if ( ! draggedWorkspaceTabId || draggedWorkspaceTabId === tab . id ) {
1699- return
1700- }
1692+ tabContainer . addEventListener ( 'dragend' , ( ) => {
1693+ clearWorkspaceTabDragState ( )
1694+ queueMicrotask ( ( ) => {
1695+ suppressWorkspaceTabClick = false
1696+ } )
1697+ renderWorkspaceTabs ( )
1698+ } )
1699+ tabContainer . addEventListener ( 'dragover' , event => {
1700+ if ( ! draggedWorkspaceTabId || draggedWorkspaceTabId === tab . id ) {
1701+ return
1702+ }
17011703
1702- event . preventDefault ( )
1703- if ( event . dataTransfer ) {
1704- event . dataTransfer . dropEffect = 'move'
1705- }
1704+ event . preventDefault ( )
1705+ if ( event . dataTransfer ) {
1706+ event . dataTransfer . dropEffect = 'move'
1707+ }
17061708
1707- if ( dragOverWorkspaceTabId !== tab . id ) {
1708- dragOverWorkspaceTabId = tab . id
1709- tabContainer . dataset . dragOver = 'true'
1710- }
1711- } )
1712- tabContainer . addEventListener ( 'dragleave' , event => {
1713- const relatedTarget = event . relatedTarget
1714- if ( relatedTarget instanceof Node && tabContainer . contains ( relatedTarget ) ) {
1715- return
1716- }
1709+ if ( dragOverWorkspaceTabId !== tab . id ) {
1710+ dragOverWorkspaceTabId = tab . id
1711+ tabContainer . dataset . dragOver = 'true'
1712+ }
1713+ } )
1714+ tabContainer . addEventListener ( 'dragleave' , event => {
1715+ const relatedTarget = event . relatedTarget
1716+ if ( relatedTarget instanceof Node && tabContainer . contains ( relatedTarget ) ) {
1717+ return
1718+ }
17171719
1718- if ( dragOverWorkspaceTabId === tab . id ) {
1719- dragOverWorkspaceTabId = ''
1720- tabContainer . dataset . dragOver = 'false'
1721- }
1722- } )
1723- tabContainer . addEventListener ( 'drop' , event => {
1724- if ( ! draggedWorkspaceTabId || draggedWorkspaceTabId === tab . id ) {
1725- clearWorkspaceTabDragState ( )
1726- renderWorkspaceTabs ( )
1727- return
1728- }
1720+ if ( dragOverWorkspaceTabId === tab . id ) {
1721+ dragOverWorkspaceTabId = ''
1722+ tabContainer . dataset . dragOver = 'false'
1723+ }
1724+ } )
1725+ tabContainer . addEventListener ( 'drop' , event => {
1726+ event . preventDefault ( )
1727+
1728+ if ( ! draggedWorkspaceTabId || draggedWorkspaceTabId === tab . id ) {
1729+ clearWorkspaceTabDragState ( )
1730+ renderWorkspaceTabs ( )
1731+ return
1732+ }
17291733
1730- event . preventDefault ( )
1731- persistActiveTabEditorContent ( )
1734+ persistActiveTabEditorContent ( )
17321735
1733- const moved = workspaceTabsState . moveTabBefore ( draggedWorkspaceTabId , tab . id )
1734- clearWorkspaceTabDragState ( )
1735- renderWorkspaceTabs ( )
1736+ const moved = workspaceTabsState . moveTabBefore ( draggedWorkspaceTabId , tab . id )
1737+ clearWorkspaceTabDragState ( )
1738+ renderWorkspaceTabs ( )
17361739
1737- if ( ! moved ) {
1738- return
1739- }
1740+ if ( ! moved ) {
1741+ return
1742+ }
17401743
1741- queueWorkspaceSave ( )
1742- } )
1744+ queueWorkspaceSave ( )
1745+ } )
1746+ }
17431747
1744- const isRenaming = workspaceTabRenameState . tabId === tab . id
17451748 if ( isRenaming ) {
17461749 const renameInput = document . createElement ( 'input' )
17471750 renameInput . className = 'workspace-tab__name-input'
0 commit comments