piroor / treestyletab

Tree Style Tab, Show tabs like a tree.
http://piro.sakura.ne.jp/xul/treestyletab/
Other
3.48k stars 279 forks source link

Suddenly unable to move tabs #1778

Closed Riversiderepeat closed 5 years ago

Riversiderepeat commented 6 years ago

Short description

Sometime within the past day I am suddenly unable to rearrange or move tabs in Tree Style. In addition, when I try to move tabs they become grayed out and do not move.

Steps to reproduce

Unfortunately I have no clue how to reproduce this behavior. It could have been something I unknowingly and unwittingly changed somehow. I only know it is a TST issue because I can still move tabs around in the native tab bar.

I am hoping someone might know what can cause this behavior so I can reverse whatever I did. I would not normally post an issue like this in a bug reporter but I have not been able to find where else to ask.

Thank you.

Expected result

Actual result

Environment

Riversiderepeat commented 6 years ago

Removing TST and reinstalling it did fix the problem but if anyone happens to know what can cause this so I can avoid doing it again that information would be greatly appreciated.

dzfranklin commented 6 years ago

I have the exact same issue on OSX. Sometimes the error occurs, sometimes it doesn't. In the developer toolbox, I see the following error when opening a tab with the button in the sidebar (but not when opening a tab with Command+T)

Sending message that cannot be cloned. Are you trying to send an XPCOM object? ExtensionUtils.jsm:546:50
uncaught exception: undefined

When closing a tab using the standard mechanism (Command+w), see the following error

Error: Invalid tab ID: 73 ext-browser.js

I have no idea if either of those errors has anything to do with TST.

piroor commented 6 years ago

@danielzfranklin Thanks, but I couldn't read meaningful information from the log. If you see same problem again, could you collect logs from the debugger? Steps to start debugger: https://github.com/piroor/treestyletab/wiki/How-to-inspect-tree-of-tabs#how-to-start-debugger-for-tree-style-tab And you'll need to activate "Debug mode" checkbox in the TST's configuration.

dzfranklin commented 6 years ago

I activated debug mode, and got the following logs when dragging a tab

tst<Sidebar-3>:    onMouseDown: found target tab:  <unavailable> common.js:21:60
tst<Sidebar-3>:    onMouseDown  
Object { targetType: "tab", tab: "tab-3-17", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:21:60
tst<BG>:     kNOTIFY_TAB_MOUSEDOWN common.js:21:60
tst<BG>:    Sending message to listeners common.js:21:60
tst<BG>:    Ready to select the tab common.js:21:60
tst<BG>:     selectTabInternally:  #tab-3-17 common.js:21:60 

I'm not certain, but the error seems to occur only when there is a pinned tab (It's infrequent enough it could be a coincidence).

bartekmp commented 6 years ago

This stuff is sometimes happening to me too, tabs get greyed out when trying to move them around the tree. Happens usually after the pinned tab was used (by used I mean even just opened). The remedy for that is for me to click again on the pinned tab to open it, then the locked (grey) tabs are suddenly unlocked and everything is just fine.

piroor commented 6 years ago

I still couldn't reproduce this problem on my environment, with the latest development build. https://piro.sakura.ne.jp/xul/xpi/nightly/treestyletab-we.xpi Guys, could you try this version on Nightly or Aurora, with disabled signature check? (Note that the released version and beta versions cannot install such an unsigned package.) This version can output detailed logs for each module. So I hope it helps debugging of this problem.

From different viewpoint, I'm trying to analyze what happens when tabs become undraggable.

gonhidi commented 6 years ago

Steps to reproduce:

  1. Make Firefox Nightly up-to-date, 63.a1 (2018-07-09), on macOS 10.13.5, create and enter a new Firefox profile, enable session restore, disable signature check, enable extension debugger, install nightly extension, enable debugging within the extension.
  2. Open several new pages.
  3. Restart (I personally select a new blank tab before restart).
  4. Enable remote debugger and clear its log.
  5. Quickly click and drag several of the restored tabs.
  6. Calmly try moving around more tabs.

Expected result: One should be able to continue moving tabs around.

Actual result: At some point one is no longer able to drag around any of the tabs.

Workaround: One the problem is triggered, move a tab (within the window or to a new window) using Firefox's native tab interface (the horizontal tab); this seems to unlock dragging using the sidebar's extension (but I have just noticed so testing has been minimal and I might be wrong).

The following debug log based on a single restored window with a search engine tab with around 30 sub-tabs obtained from middle clicking on search engine's results page, plus a few other tabs. I tried quickly dragging around four different tabs: one moved for sure (as it ended up as a sub-tab); of the rest I am not certain. I then tried calmly dragging one more tab and it clearly did not work (but due to the extension's theme and debugging being enabled I did not notice the greying out that happens when I run across this on my usual setup). I then captured the log and afterwards confirmed that none of the other tabs I tried could be moved around. I did not record what happens when using the described workaround.

tst<BG>:      selectTabInternally:  #tab-3-36 common.js:290:23
tst<BG>:     tabs.onActivated:  #tab-3-36 common.js:290:23
tst<BG>:        Tabs.onActivating  tab-3-36 
Object { byCurrentTabRemove: false, byTabDuplication: false, byInternalOperation: true, silently: false }
common.js:290:23
tst<Sidebar-3>:     tabs.onActivated:  #tab-3-36 common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-34:before common.js:290:23
tst<Sidebar-3>:         there are dragged tabs common.js:290:23
tst<BG>:      perform tabs dragdrop requested:  
Object { windowId: 3, tabs: (1) […], action: 1025, attachTo: "tab-3-6", insertBefore: "tab-3-34", insertAfter: null, destinationWindowId: 3, duplicate: false, inRemote: false, type: "treestyletab:perform-tabs-drag-drop" }
common.js:290:23
tst<BG>:       performTabsDragDrop  
Object { tabs: (1) […], windowId: 3, destinationWindowId: 3, action: 1025 }
common.js:290:23
tst<BG>:       => draggedTabs:  #tab-3-36 common.js:290:23
tst<BG>:       try attach/detach common.js:290:23
tst<BG>:       => attach common.js:290:23
tst<BG>:        attachTabsOnDrop: start  
Array [ "#tab-3-36" ]
common.js:290:23
tst<BG>:         moveTabsBefore:  
Array [ "#tab-3-36" ]
 #tab-3-34 
Object {  }
common.js:290:23
tst<BG>:          moveTabsInternallyBefore:  
Array [ "#tab-3-36" ]
 #tab-3-34 
Object {  }
common.js:290:23
tst<BG>:           updateChildTabsInfo:  
Array(30) [ "tab-3-7", "tab-3-8", "tab-3-9", "tab-3-10", "tab-3-11", "tab-3-12", "tab-3-13", "tab-3-14", "tab-3-15", "tab-3-16", … ]
common.js:290:23
tst<BG>:          Tab nodes rearranged by moveTabsInternallyBefore:
 - tab-3-2
 - tab-3-3
 - tab-3-4
 - tab-3-5
 - tab-3-6
 - tab-3-7
 - tab-3-8
 - tab-3-9
 - tab-3-10
 - tab-3-11
 - tab-3-12
 - tab-3-13
 - tab-3-14
 - tab-3-15
 - tab-3-16
 - tab-3-17
 - tab-3-18
 - tab-3-19
 - tab-3-20
 - tab-3-21
 - tab-3-22
 - tab-3-23
 - tab-3-24
 - tab-3-25
 - tab-3-26
 - tab-3-27
 - tab-3-28
 - tab-3-29
 - tab-3-30
 - tab-3-31
 - tab-3-32
 - tab-3-33
 - tab-3-36[MOVED]
 - tab-3-34
 - tab-3-35
 - tab-3-37
 - tab-3-1
 - tab-3-38
 - tab-3-39
 - tab-3-40
 - tab-3-41 common.js:290:23
tst<Sidebar-3>:          onDragEnd, mDraggingOnSelfWindow =  true common.js:290:23
tst<Sidebar-3>:          dragged items are processed by someone:  move common.js:290:23
tst<BG>:         attachTabTo:  
Object { child: "#tab-3-36", parent: "#tab-3-6", children: "|tab-3-7|tab-3-8|tab-3-9|tab-3-10|tab-3-11|tab-3-12|tab-3-13|tab-3-14|tab-3-15|tab-3-16|tab-3-17|tab-3-18|tab-3-19|tab-3-20|tab-3-21|tab-3-22|tab-3-23|tab-3-24|tab-3-25|tab-3-26|tab-3-27|tab-3-28|tab-3-29|tab-3-30|tab-3-31|tab-3-32|tab-3-33|tab-3-36|tab-3-34|tab-3-35|", insertAt: undefined, insertBefore: "<NULL>", insertAfter: "<NULL>", dontMove: true, dontUpdateIndent: undefined, forceExpand: true, dontExpand: undefined, … }
common.js:290:23
tst<BG>:         reference tabs:  
Object { next: "#tab-3-34", prev: "#tab-3-6" }
common.js:290:23
tst<BG>:       => moving dragged tabs  
Array [ "#tab-3-36" ]
common.js:290:23
tst<BG>:        moveTabsBefore:  
Array [ "#tab-3-36" ]
 #tab-3-34 
Object {  }
common.js:290:23
tst<BG>:        moveTabsBefore:no need to move common.js:290:23
tst<BG>:         newIndex:  32 common.js:290:23
tst<BG>:         => already attached common.js:290:23
tst<BG>:         expectedAllTabs:  
Array(40) [ "#tab-3-2", "#tab-3-3", "#tab-3-4", "#tab-3-5", "#tab-3-6", "#tab-3-7", "#tab-3-8", "#tab-3-9", "#tab-3-10", "#tab-3-11", … ]
common.js:290:23
tst<BG>:          =>  
Array(41) [ "#tab-3-2", "#tab-3-3", "#tab-3-4", "#tab-3-5", "#tab-3-6", "#tab-3-7", "#tab-3-8", "#tab-3-9", "#tab-3-10", "#tab-3-11", … ]
common.js:290:23
tst<BG>:         new children:  
Array(30) [ "tab-3-7", "tab-3-8", "tab-3-9", "tab-3-10", "tab-3-11", "tab-3-12", "tab-3-13", "tab-3-14", "tab-3-15", "tab-3-16", … ]
common.js:290:23
tst<BG>:       => finished common.js:290:23
tst<BG>:     tabs.onMoved:  #tab-3-36 
Object { windowId: 3, fromIndex: 34, toIndex: 32, byInternalOperation: true, oldPreviousTab: li#tab-3-35.tab.subtree-collapsed.not-activated-since-load.complete.contextual-identity-firefox-default.discarded.unread, oldNextTab: li#tab-3-37.tab.subtree-collapsed.animation-ready.complete.discarded.contextual-identity-firefox-default }

Object { id: 36, index: 32, windowId: 3, highlighted: false, active: true, pinned: false, status: "loading", hidden: false, discarded: false, incognito: false, … }
common.js:290:23
tst<BG>:        internal move common.js:290:23
tst<Sidebar-3>:     tabs.onMoved:  #tab-3-36 
Object { windowId: 3, fromIndex: 34, toIndex: 32, byInternalOperation: false, oldPreviousTab: li#tab-3-36.tab.subtree-collapsed.animation-ready.contextual-identity-firefox-default.active.loading.throbber-unsynchronized, oldNextTab: li#tab-3-37.tab.subtree-collapsed.animation-ready.complete.discarded.contextual-identity-firefox-default }

Object { id: 36, index: 34, windowId: 3, highlighted: false, active: true, pinned: false, status: "loading", hidden: false, discarded: false, incognito: false, … }
common.js:290:23
tst<Sidebar-3>:     Tab nodes rearranged by tabs.onMoved listener:
 - tab-3-2
 - tab-3-3
 - tab-3-4
 - tab-3-5
 - tab-3-6
 - tab-3-7
 - tab-3-8
 - tab-3-9
 - tab-3-10
 - tab-3-11
 - tab-3-12
 - tab-3-13
 - tab-3-14
 - tab-3-15
 - tab-3-16
 - tab-3-17
 - tab-3-18
 - tab-3-19
 - tab-3-20
 - tab-3-21
 - tab-3-22
 - tab-3-23
 - tab-3-24
 - tab-3-25
 - tab-3-26
 - tab-3-27
 - tab-3-28
 - tab-3-29
 - tab-3-30
 - tab-3-31
 - tab-3-32
 - tab-3-33
 - tab-3-36[MOVED]
 - tab-3-34
 - tab-3-35
 - tab-3-37
 - tab-3-1
 - tab-3-38
 - tab-3-39
 - tab-3-40
 - tab-3-41 common.js:290:23
tst<Sidebar-3>:      attach tab from remote  
Object { type: "treestyletab:attach-tab-to", windowId: 3, child: "tab-3-36", parent: "tab-3-6", insertAt: undefined, insertBefore: "tab-3-34", insertAfter: "tab-3-6", dontMove: true, dontUpdateIndent: false, forceExpand: true, … }
common.js:290:23
tst<Sidebar-3>:       attachTabTo:  
Object { child: "#tab-3-36", parent: "#tab-3-6", children: "|tab-3-7|tab-3-8|tab-3-9|tab-3-10|tab-3-11|tab-3-12|tab-3-13|tab-3-14|tab-3-15|tab-3-16|tab-3-17|tab-3-18|tab-3-19|tab-3-20|tab-3-21|tab-3-22|tab-3-23|tab-3-24|tab-3-25|tab-3-26|tab-3-27|tab-3-28|tab-3-29|tab-3-30|tab-3-31|tab-3-32|tab-3-33|tab-3-34|tab-3-35|tab-3-36|", insertAt: undefined, insertBefore: "#tab-3-34", insertAfter: "#tab-3-6", dontMove: true, dontUpdateIndent: false, forceExpand: true, dontExpand: false, … }
common.js:290:23
tst<Sidebar-3>:       reference tabs:  
Object { next: "#tab-3-34", prev: "#tab-3-6" }
common.js:290:23
tst<Sidebar-3>:       newIndex:  32 common.js:290:23
tst<Sidebar-3>:       => already attached common.js:290:23
tst<Sidebar-3>:       expectedAllTabs:  
Array(40) [ "#tab-3-2", "#tab-3-3", "#tab-3-4", "#tab-3-5", "#tab-3-6", "#tab-3-7", "#tab-3-8", "#tab-3-9", "#tab-3-10", "#tab-3-11", … ]
common.js:290:23
tst<Sidebar-3>:        =>  
Array(41) [ "#tab-3-2", "#tab-3-3", "#tab-3-4", "#tab-3-5", "#tab-3-6", "#tab-3-7", "#tab-3-8", "#tab-3-9", "#tab-3-10", "#tab-3-11", … ]
common.js:290:23
tst<Sidebar-3>:       new children:  
Array(30) [ "tab-3-7", "tab-3-8", "tab-3-9", "tab-3-10", "tab-3-11", "tab-3-12", "tab-3-13", "tab-3-14", "tab-3-15", "tab-3-16", … ]
common.js:290:23
tst<Sidebar-3>:            reservedProcessLongHover:  
Object { dragOverTabId: "tab-3-34", draggedTabId: "tab-3-36", dropEffect: "move" }
common.js:290:23
tst<BG>:      selectTabInternally:  #tab-3-33 common.js:290:23
tst<BG>:     tabs.onActivated:  #tab-3-33 common.js:290:23
tst<BG>:        Tabs.onActivating  tab-3-33 
Object { byCurrentTabRemove: false, byTabDuplication: false, byInternalOperation: true, silently: false }
common.js:290:23
tst<Sidebar-3>:     tabs.onActivated:  #tab-3-33 common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-30:self common.js:290:23
tst<Sidebar-3>:         there are dragged tabs common.js:290:23
tst<Sidebar-3>:          onDragEnd, mDraggingOnSelfWindow =  true common.js:290:23
tst<Sidebar-3>:          dragged items are processed by someone:  move common.js:290:23
tst<BG>:      perform tabs dragdrop requested:  
Object { windowId: 3, tabs: (1) […], action: 1024, attachTo: "tab-3-30", insertBefore: "tab-3-31", insertAfter: null, destinationWindowId: 3, duplicate: false, inRemote: false, type: "treestyletab:perform-tabs-drag-drop" }
common.js:290:23
tst<BG>:       performTabsDragDrop  
Object { tabs: (1) […], windowId: 3, destinationWindowId: 3, action: 1024 }
common.js:290:23
tst<BG>:       => draggedTabs:  #tab-3-33 common.js:290:23
tst<BG>:       try attach/detach common.js:290:23
tst<BG>:       => attach common.js:290:23
tst<BG>:        attachTabsOnDrop: start  
Array [ "#tab-3-33" ]
common.js:290:23
tst<BG>:         moveTabsBefore:  
Array [ "#tab-3-33" ]
 #tab-3-31 
Object {  }
common.js:290:23
tst<BG>:          moveTabsInternallyBefore:  
Array [ "#tab-3-33" ]
 #tab-3-31 
Object {  }
common.js:290:23
tst<BG>:           updateChildTabsInfo:  
Array(30) [ "tab-3-7", "tab-3-8", "tab-3-9", "tab-3-10", "tab-3-11", "tab-3-12", "tab-3-13", "tab-3-14", "tab-3-15", "tab-3-16", … ]
common.js:290:23
tst<BG>:          Tab nodes rearranged by moveTabsInternallyBefore:
 - tab-3-2
 - tab-3-3
 - tab-3-4
 - tab-3-5
 - tab-3-6
 - tab-3-7
 - tab-3-8
 - tab-3-9
 - tab-3-10
 - tab-3-11
 - tab-3-12
 - tab-3-13
 - tab-3-14
 - tab-3-15
 - tab-3-16
 - tab-3-17
 - tab-3-18
 - tab-3-19
 - tab-3-20
 - tab-3-21
 - tab-3-22
 - tab-3-23
 - tab-3-24
 - tab-3-25
 - tab-3-26
 - tab-3-27
 - tab-3-28
 - tab-3-29
 - tab-3-30
 - tab-3-33[MOVED]
 - tab-3-31
 - tab-3-32
 - tab-3-36
 - tab-3-34
 - tab-3-35
 - tab-3-37
 - tab-3-1
 - tab-3-38
 - tab-3-39
 - tab-3-40
 - tab-3-41 common.js:290:23
tst<BG>:         attachTabTo:  
Object { child: "#tab-3-33", parent: "#tab-3-30", children: null, insertAt: undefined, insertBefore: "<NULL>", insertAfter: "<NULL>", dontMove: true, dontUpdateIndent: undefined, forceExpand: true, dontExpand: undefined, … }
common.js:290:23
tst<BG>:         reference tabs:  
Object { next: "#tab-3-31", prev: "#tab-3-30" }
common.js:290:23
tst<BG>:       => moving dragged tabs  
Array [ "#tab-3-33" ]
common.js:290:23
tst<BG>:        moveTabsBefore:  
Array [ "#tab-3-33" ]
 #tab-3-31 
Object {  }
common.js:290:23
tst<BG>:        moveTabsBefore:no need to move common.js:290:23
tst<BG>:         newIndex:  29 common.js:290:23
tst<BG>:         expectedAllTabs:  
Array(40) [ "#tab-3-2", "#tab-3-3", "#tab-3-4", "#tab-3-5", "#tab-3-6", "#tab-3-7", "#tab-3-8", "#tab-3-9", "#tab-3-10", "#tab-3-11", … ]
common.js:290:23
tst<BG>:          =>  
Array(41) [ "#tab-3-2", "#tab-3-3", "#tab-3-4", "#tab-3-5", "#tab-3-6", "#tab-3-7", "#tab-3-8", "#tab-3-9", "#tab-3-10", "#tab-3-11", … ]
common.js:290:23
tst<BG>:         new children:  
Array [ "tab-3-33" ]
common.js:290:23
tst<BG>:          detachTab:  #tab-3-33 
Object { insertBefore: li#tab-3-31.tab.subtree-collapsed.not-activated-since-load.unread.complete.contextual-identity-firefox-default.discarded, insertAfter: li#tab-3-30.tab.subtree-collapsed.not-activated-since-load.unread.complete.contextual-identity-firefox-default.discarded, draggedTabs: (1) […], broadcast: false, dontMove: true, forceExpand: true }

Object { stack: "detachTab@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:295:19\nattachTabTo@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:170:5\nasync*attachTabsOnDrop@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:1538:7\nasync*performTabsDragDrop@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:1443:11\nasync*onMessage/<@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/background/handle-misc.js:524:16\nasync*onMessage@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/background/handle-misc.js:517:15\n\n" }
common.js:290:23
tst<BG>:          rest children:  
Array(29) [ "tab-3-7", "tab-3-8", "tab-3-9", "tab-3-10", "tab-3-11", "tab-3-12", "tab-3-13", "tab-3-14", "tab-3-15", "tab-3-16", … ]
common.js:290:23
tst<BG>:       => finished common.js:290:23
tst<BG>:     tabs.onMoved:  #tab-3-33 
Object { windowId: 3, fromIndex: 31, toIndex: 29, byInternalOperation: true, oldPreviousTab: li#tab-3-32.tab.subtree-collapsed.not-activated-since-load.unread.complete.contextual-identity-firefox-default.discarded, oldNextTab: li#tab-3-36.tab.subtree-collapsed.contextual-identity-firefox-default.complete.bursting }

Object { id: 33, index: 29, windowId: 3, highlighted: false, active: true, pinned: false, status: "loading", hidden: false, discarded: false, incognito: false, … }
common.js:290:23
tst<BG>:        internal move common.js:290:23
tst<Sidebar-3>:     tabs.onMoved:  #tab-3-33 
Object { windowId: 3, fromIndex: 31, toIndex: 29, byInternalOperation: false, oldPreviousTab: li#tab-3-33.tab.subtree-collapsed.animation-ready.contextual-identity-firefox-default.active.loading.throbber-unsynchronized, oldNextTab: li#tab-3-36.tab.subtree-collapsed.animation-ready.contextual-identity-firefox-default.complete.bursting }

Object { id: 33, index: 31, windowId: 3, highlighted: false, active: true, pinned: false, status: "loading", hidden: false, discarded: false, incognito: false, … }
common.js:290:23
tst<Sidebar-3>:     Tab nodes rearranged by tabs.onMoved listener:
 - tab-3-2
 - tab-3-3
 - tab-3-4
 - tab-3-5
 - tab-3-6
 - tab-3-7
 - tab-3-8
 - tab-3-9
 - tab-3-10
 - tab-3-11
 - tab-3-12
 - tab-3-13
 - tab-3-14
 - tab-3-15
 - tab-3-16
 - tab-3-17
 - tab-3-18
 - tab-3-19
 - tab-3-20
 - tab-3-21
 - tab-3-22
 - tab-3-23
 - tab-3-24
 - tab-3-25
 - tab-3-26
 - tab-3-27
 - tab-3-28
 - tab-3-29
 - tab-3-30
 - tab-3-33[MOVED]
 - tab-3-31
 - tab-3-32
 - tab-3-36
 - tab-3-34
 - tab-3-35
 - tab-3-37
 - tab-3-1
 - tab-3-38
 - tab-3-39
 - tab-3-40
 - tab-3-41 common.js:290:23
tst<Sidebar-3>:      attach tab from remote  
Object { type: "treestyletab:attach-tab-to", windowId: 3, child: "tab-3-33", parent: "tab-3-30", insertAt: undefined, insertBefore: "tab-3-31", insertAfter: "tab-3-30", dontMove: true, dontUpdateIndent: false, forceExpand: true, … }
common.js:290:23
tst<Sidebar-3>:       attachTabTo:  
Object { child: "#tab-3-33", parent: "#tab-3-30", children: null, insertAt: undefined, insertBefore: "#tab-3-31", insertAfter: "#tab-3-30", dontMove: true, dontUpdateIndent: false, forceExpand: true, dontExpand: false, … }
common.js:290:23
tst<Sidebar-3>:       reference tabs:  
Object { next: "#tab-3-31", prev: "#tab-3-30" }
common.js:290:23
tst<Sidebar-3>:       newIndex:  29 common.js:290:23
tst<Sidebar-3>:       expectedAllTabs:  
Array(40) [ "#tab-3-2", "#tab-3-3", "#tab-3-4", "#tab-3-5", "#tab-3-6", "#tab-3-7", "#tab-3-8", "#tab-3-9", "#tab-3-10", "#tab-3-11", … ]
common.js:290:23
tst<Sidebar-3>:        =>  
Array(41) [ "#tab-3-2", "#tab-3-3", "#tab-3-4", "#tab-3-5", "#tab-3-6", "#tab-3-7", "#tab-3-8", "#tab-3-9", "#tab-3-10", "#tab-3-11", … ]
common.js:290:23
tst<Sidebar-3>:       new children:  
Array [ "tab-3-33" ]
common.js:290:23
tst<Sidebar-3>:        detachTab:  #tab-3-33 
Object { type: "treestyletab:attach-tab-to", windowId: 3, child: "tab-3-33", parent: "tab-3-30", insertAt: undefined, insertBefore: li#tab-3-31.tab.subtree-collapsed.animation-ready.not-activated-since-load.unread.complete.discarded.contextual-identity-firefox-default, insertAfter: li#tab-3-30.tab.animation-ready.not-activated-since-load.unread.complete.discarded.contextual-identity-firefox-default, dontMove: true, dontUpdateIndent: false, forceExpand: true, … }

Object { stack: "detachTab@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:295:19\nattachTabTo@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:170:5\nasync*onMessage/promisedComplete<@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/sidebar/sidebar.js:912:19\nasync*onMessage@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/sidebar/sidebar.js:898:35\n\nattachTabTo@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:216:25\nasync*attachTabsOnDrop@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:1538:7\nasync*performTabsDragDrop@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/common/tree.js:1443:11\nasync*onMessage/<@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/background/handle-misc.js:524:16\nasync*onMessage@moz-extension://2e5a4c21-5fe7-424b-b26e-af7fbab34e0d/background/handle-misc.js:517:15\n" }
common.js:290:23
tst<Sidebar-3>:        rest children:  
Array(29) [ "tab-3-7", "tab-3-8", "tab-3-9", "tab-3-10", "tab-3-11", "tab-3-12", "tab-3-13", "tab-3-14", "tab-3-15", "tab-3-16", … ]
common.js:290:23
tst<BG>:      selectTabInternally:  #tab-3-29 common.js:290:23
tst<Sidebar-3>:            reservedProcessLongHover:  
Object { dragOverTabId: "tab-3-30", draggedTabId: "tab-3-33", dropEffect: "move" }
common.js:290:23
tst<BG>:     tabs.onActivated:  #tab-3-29 common.js:290:23
tst<BG>:        Tabs.onActivating  tab-3-29 
Object { byCurrentTabRemove: false, byTabDuplication: false, byInternalOperation: true, silently: false }
common.js:290:23
tst<Sidebar-3>:     tabs.onActivated:  #tab-3-29 common.js:290:23
tst<BG>:      selectTabInternally:  #tab-3-22 common.js:290:23
tst<BG>:     tabs.onActivated:  #tab-3-22 common.js:290:23
tst<BG>:        Tabs.onActivating  tab-3-22 
Object { byCurrentTabRemove: false, byTabDuplication: false, byInternalOperation: true, silently: false }
common.js:290:23
tst<Sidebar-3>:     tabs.onActivated:  #tab-3-22 common.js:290:23
tst<BG>:      selectTabInternally:  #tab-3-25 common.js:290:23
tst<BG>:     tabs.onActivated:  #tab-3-25 common.js:290:23
tst<BG>:        Tabs.onActivating  tab-3-25 
Object { byCurrentTabRemove: false, byTabDuplication: false, byInternalOperation: true, silently: false }
common.js:290:23
tst<Sidebar-3>:     tabs.onActivated:  #tab-3-25 common.js:290:23
piroor commented 6 years ago

@gonhidi Thank you for the log. However, I'm sorry but I've realized that I forgot to output more logs to inspect why the drag action is canceled. Could you try again with a newer development build of TST? Please note to setting debug logs as:

gonhidi commented 6 years ago

@piroor Sorry for not being more aware of how Firefox and Tree Style Tab logging and debugging work to help produce better results, and thank you for providing a build and instructions to allow for more useful results. Using the latest development build at the time of testing, version 2.4.24.7383, I followed my previously described setup, taking care to enable Tree Style Tab's debug mode and to disable detailed logging except for the sidebar/drag-and-drop and sidebar/mouse-event-listener options (as described). From there I proceeded to reproduce the situation in a similar vein as last time, which I will now describe broken down in steps with the corresponding debug log outputs.

First I tried to drag and drop two session-restored but not yet accessed tabs in quick succession within the Tree Style Tab sidebar (I am not sure about the result):

tst<Sidebar-3>:           onMouseDown: found target tab:  
<li id="tab-3-27" class="tab animation-ready complete unread contextual-identity-firefox-default discarded" data-tab-id="27" data-window-id="3" draggable="true" data-current-uri="https://soundcloud.com/naeki" data-label="Naeki | Free Listening on SoundCloud\n#tab-3-27\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-intrepid-gibbon-1531294071492-534\nduplicated = false / 28 / null\nrestored = true\ntabId = 27\nwindowId = 3" title="Naeki | Free Listening on SoundCloud\n#tab-3-27\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-intrepid-gibbon-1531294071492-534\nduplicated = false / 28 / null\nrestored = true\ntabId = 27\nwindowId = 3" data-persistent-id="tab-intrepid-gibbon-1531294071492-534" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* Naeki | Free Listening on SoundCloud\n#tab-3-27\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-intrepid-gibbon-1531294071492-534\nduplicated = false / 28 / null\nrestored = true\ntabId = 27\nwindowId = 3">
common.js:290:23
tst<Sidebar-3>:           onMouseDown  
Object { targetType: "tab", tab: "tab-3-27", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:290:23
tst<Sidebar-3>:         onDragStart: start  
dragstart { target: li#tab-3-27.tab.animation-ready.complete.contextual-identity-firefox-default.discarded.active
, buttons: 1, clientX: 137, clientY: 470, layerX: 64, layerY: 10 }
common.js:290:23
tst<Sidebar-3>:           onMouseUp:  
<li id="tab-3-18" class="tab animation-ready complete unread contextual-identity-firefox-default discarded" data-tab-id="18" data-window-id="3" draggable="true" data-current-uri="https://www.tripadvisor.co.za/LocationPhotoDirectLink-g293916-d6571855-i299363902-Naeki_Sushi-Bangkok.html" data-label="photo0.jpg - Picture of Naeki Sushi, Bangkok - TripAdvisor\n#tab-3-18\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-zesty-narwhal-1531294054763-519\nduplicated = false / 18 / null\nrestored = true\ntabId = 18\nwindowId = 3" title="photo0.jpg - Picture of Naeki Sushi, Bangkok - TripAdvisor\n#tab-3-18\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-zesty-narwhal-1531294054763-519\nduplicated = false / 18 / null\nrestored = true\ntabId = 18\nwindowId = 3" data-persistent-id="tab-zesty-narwhal-1531294054763-519" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* photo0.jpg - Picture of Naeki Sushi, Bangkok - TripAdvisor\n#tab-3-18\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-zesty-narwhal-1531294054763-519\nduplicated = false / 18 / null\nrestored = true\ntabId = 18\nwindowId = 3">

Object { living: true }
common.js:290:23
tst<Sidebar-3>:           onMouseDown: found target tab:  
<li id="tab-3-17" class="tab animation-ready complete unread contextual-identity-firefox-default discarded" data-tab-id="17" data-window-id="3" draggable="true" data-current-uri="https://www.instagram.com/explore/tags/naeki/?hl=es" data-label="#naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3" title="#naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3" data-persistent-id="tab-hoary-cat-1531294054047-571" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* #naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3">
common.js:290:23
tst<Sidebar-3>:           onMouseDown  
Object { targetType: "tab", tab: "tab-3-17", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:290:23
tst<Sidebar-3>:         onDragStart: start  
dragstart { target: li#tab-3-17.tab.animation-ready.complete.unread.contextual-identity-firefox-default.discarded
, buttons: 1, clientX: 110, clientY: 236, layerX: 37, layerY: 18 }
common.js:290:23
tst<Sidebar-3>:           onMouseUp:  
<li id="tab-3-11" class="tab animation-ready complete unread discarded contextual-identity-firefox-default" data-tab-id="11" data-window-id="3" draggable="true" data-current-uri="https://www.youtube.com/watch?v=uP5TOQCq1RM" data-label="entrenamiento naeki - YouTube\n#tab-3-11\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-breezy-heron-1531294047410-129\nduplicated = false / 11 / null\nrestored = true\ntabId = 11\nwindowId = 3" title="entrenamiento naeki - YouTube\n#tab-3-11\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-breezy-heron-1531294047410-129\nduplicated = false / 11 / null\nrestored = true\ntabId = 11\nwindowId = 3" data-persistent-id="tab-breezy-heron-1531294047410-129" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* entrenamiento naeki - YouTube\n#tab-3-11\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-breezy-heron-1531294047410-129\nduplicated = false / 11 / null\nrestored = true\ntabId = 11\nwindowId = 3">

Object { living: true }
common.js:290:23

I then unsuccessfully tried to move the currently selected tab in the Tree Style Tab sidebar:

tst<Sidebar-3>:           onMouseDown: found target tab:  
<li id="tab-3-17" class="tab animation-ready contextual-identity-firefox-default dragging active complete" data-tab-id="17" data-window-id="3" draggable="true" data-current-uri="https://www.instagram.com/explore/tags/naeki/?hl=es" data-label="#naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready contextual-identity-firefox-default dragging active complete bursting)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3" title="#naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready contextual-identity-firefox-default dragging active complete bursting)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3" data-persistent-id="tab-hoary-cat-1531294054047-571" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* #naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3">
common.js:290:23
tst<Sidebar-3>:           onMouseDown  
Object { targetType: "tab", tab: "tab-3-17", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:290:23
tst<Sidebar-3>:         onDragStart: start  
dragstart { target: li#tab-3-17.tab.animation-ready.contextual-identity-firefox-default.dragging.active.complete
, buttons: 1, clientX: 116, clientY: 228, layerX: 43, layerY: 10 }
common.js:290:23
tst<Sidebar-3>:           onMouseUp:  
<li id="tab-3-14" class="tab animation-ready complete unread discarded contextual-identity-firefox-default" data-tab-id="14" data-window-id="3" draggable="true" data-current-uri="https://www.youtube.com/watch?v=2Wxw9CDpkf0" data-label="Felipe y Juan Riquelme Naeki - YouTube\n#tab-3-14\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-natty-vervet-1531294049942-683\nduplicated = false / 14 / null\nrestored = true\ntabId = 14\nwindowId = 3" title="Felipe y Juan Riquelme Naeki - YouTube\n#tab-3-14\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-natty-vervet-1531294049942-683\nduplicated = false / 14 / null\nrestored = true\ntabId = 14\nwindowId = 3" data-persistent-id="tab-natty-vervet-1531294049942-683" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* Felipe y Juan Riquelme Naeki - YouTube\n#tab-3-14\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-natty-vervet-1531294049942-683\nduplicated = false / 14 / null\nrestored = true\ntabId = 14\nwindowId = 3">

Object { living: true }
common.js:290:23

Afterwards, I successfully moved the currently selected tab using Firefox's native horizontal tabs (the aforementioned workaround) one to the left:

tst<Sidebar-3>:          onDragEnd, mDraggingOnSelfWindow =  true common.js:290:23
tst<Sidebar-3>:          trying to detach tab from window common.js:290:23
tst<Sidebar-3>:          dropped at tab bar: detaching is canceled common.js:290:23

Finally, I successfully dragged and dropped the currently selected tab in the Tree Style Tab sidebar five to ten tabs up:

tst<Sidebar-3>:           onMouseDown: found target tab:  
<li id="tab-3-17" class="tab animation-ready contextual-identity-firefox-default active complete" data-tab-id="17" data-window-id="3" draggable="true" data-current-uri="https://www.instagram.com/explore/tags/naeki/?hl=es" data-label="#naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready contextual-identity-firefox-default dragging active complete bursting)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3" title="#naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready contextual-identity-firefox-default dragging active complete bursting)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3" data-persistent-id="tab-hoary-cat-1531294054047-571" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* #naeki • Fotos y videos de Instagram\n#tab-3-17\n(tab animation-ready contextual-identity-firefox-default dragging active complete bursting)\nuniqueId = tab-hoary-cat-1531294054047-571\nduplicated = false / 17 / null\nrestored = true\ntabId = 17\nwindowId = 3">
common.js:290:23
tst<Sidebar-3>:           onMouseDown  
Object { targetType: "tab", tab: "tab-3-17", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:290:23
tst<Sidebar-3>:         onDragStart: start  
dragstart { target: li#tab-3-17.tab.animation-ready.contextual-identity-firefox-default.active.complete
, buttons: 1, clientX: 120, clientY: 252, layerX: 47, layerY: 9 }
common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-16:before common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-15:before common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-14:self common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-14:before common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-13:after common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-13:self common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-13:before common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-12:after common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-12:self common.js:290:23
tst<Sidebar-3>:         set drop position to  tab-3-12:before common.js:290:23
tst<Sidebar-3>:            reservedProcessLongHover:  
Object { dragOverTabId: "tab-3-12", draggedTabId: "tab-3-17", dropEffect: "move" }
common.js:290:23
tst<Sidebar-3>:         there are dragged tabs common.js:290:23
tst<Sidebar-3>:          onDragEnd, mDraggingOnSelfWindow =  true common.js:290:23
tst<Sidebar-3>:          dragged items are processed by someone:  move common.js:290:23
gonhidi commented 6 years ago

Addendum: It is actually not necessary to drag and drop more than one tab for the locking behaviour to happen. Quickly trying to drag and drop a restored but not yet loaded tab within an Tree Style Tab sidebar that was working can also lock it and prevent the tab from being moved, resulting in the following debug log output:

tst<Sidebar-3>:           onMouseDown: found target tab:  
<li id="tab-3-14" class="tab animation-ready complete unread discarded contextual-identity-firefox-default" data-tab-id="14" data-window-id="3" draggable="true" data-current-uri="https://www.youtube.com/watch?v=CpV3eFWjGN4" data-label="examen de Dan naeki 4 minutos de pateo - YouTube\n#tab-3-14\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-trusty-jackalope-1531294049236-938\nduplicated = false / 13 / null\nrestored = true\ntabId = 14\nwindowId = 3" title="examen de Dan naeki 4 minutos de pateo - YouTube\n#tab-3-14\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-trusty-jackalope-1531294049236-938\nduplicated = false / 13 / null\nrestored = true\ntabId = 14\nwindowId = 3" data-persistent-id="tab-trusty-jackalope-1531294049236-938" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* examen de Dan naeki 4 minutos de pateo - YouTube\n#tab-3-14\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-trusty-jackalope-1531294049236-938\nduplicated = false / 13 / null\nrestored = true\ntabId = 14\nwindowId = 3">
common.js:290:23
tst<Sidebar-3>:           onMouseDown  
Object { targetType: "tab", tab: "tab-3-14", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:290:23
tst<Sidebar-3>:         onDragStart: start  
dragstart { target: li#tab-3-14.tab.animation-ready.complete.contextual-identity-firefox-default.active
, buttons: 1, clientX: 124, clientY: 325, layerX: 51, layerY: 8 }
common.js:290:23
tst<Sidebar-3>:           onMouseUp:  
<li id="tab-3-13" class="tab animation-ready complete unread discarded contextual-identity-firefox-default" data-tab-id="13" data-window-id="3" draggable="true" data-current-uri="https://www.youtube.com/watch?v=nrI63lKzqLg" data-label="Naeki y Cesar Gallardo - YouTube\n#tab-3-13\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-warty-meerkat-1531294048539-691\nduplicated = false / 12 / null\nrestored = true\ntabId = 13\nwindowId = 3" title="Naeki y Cesar Gallardo - YouTube\n#tab-3-13\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-warty-meerkat-1531294048539-691\nduplicated = false / 12 / null\nrestored = true\ntabId = 13\nwindowId = 3" data-persistent-id="tab-warty-meerkat-1531294048539-691" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* Naeki y Cesar Gallardo - YouTube\n#tab-3-13\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-warty-meerkat-1531294048539-691\nduplicated = false / 12 / null\nrestored = true\ntabId = 13\nwindowId = 3">

Object { living: true }
common.js:290:23
piroor commented 6 years ago

@gonhidi Thanks again! Hmm, your log says that handling of dragstart event is not canceled intentionally. So, the dragging action may be canceled by any unexpected error or other reasons. I've updated the development build with more logs, so could you try it again?

gonhidi commented 6 years ago

@piroor Using Tree Style Tab 2.4.24.7392 and only doing as before (i.e the “unsuccessfully trying to drag and drop a restored but not yet loaded tab within an Tree Style Tab sidebar that was working”) shows the following:


tst<Sidebar-3>: sidebar/mouse-event-listener:            onMouseDown: found target tab:  
<li id="tab-3-22" class="tab subtree-collapsed animation-ready not-activated-since-load unread complete discarded contextual-identity-firefox-default" data-tab-id="22" data-window-id="3" draggable="true" data-persistent-id="tab-vivid-ringtail-1531300102950-802" data-current-uri="http://mp3.ask.az/indir/ebili-mexvii-qara-gozler-2014" data-label="Ebili MexviI Qara Gozler 2014 mp3 indir\n#tab-3-22\n(tab subtree-collapsed animation-ready not-activated-since-load unread complete discarded contextual-identity-firefox-default)\nuniqueId = tab-vivid-ringtail-1531300102950-802\nduplicated = false / 32 / null\nrestored = true\ntabId = 22\nwindowId = 3" title="Ebili MexviI Qara Gozler 2014 mp3 indir\n#tab-3-22\n(tab subtree-collapsed animation-ready not-activated-since-load unread complete discarded contextual-identity-firefox-default)\nuniqueId = tab-vivid-ringtail-1531300102950-802\nduplicated = false / 32 / null\nrestored = true\ntabId = 22\nwindowId = 3" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* Ebili MexviI Qara Gozler 2014 mp3 indir\n#tab-3-22\n(tab subtree-collapsed animation-ready not-activated-since-load unread complete discarded contextual-identity-firefox-default)\nuniqueId = tab-vivid-ringtail-1531300102950-802\nduplicated = false / 32 / null\nrestored = true\ntabId = 22\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:            onMouseDown  
Object { targetType: "tab", tab: "tab-3-22", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Constants.kNOTIFY_TAB_MOUSEDOWN common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Sending message to listeners common.js:294:23
tst<BG>: sidebar/mouse-event-listener:     Ready to select the tab common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:          onDragStart: start  
dragstart { target: li#tab-3-22.tab.subtree-collapsed.animation-ready.complete.discarded.contextual-identity-firefox-default.active
, buttons: 1, clientX: 114, clientY: 300, layerX: 41, layerY: 9 }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:          onDragStart: started common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:            onMouseUp:  
<li id="tab-3-19" class="tab subtree-collapsed animation-ready complete unread not-activated-since-load discarded contextual-identity-firefox-default" data-tab-id="19" data-window-id="3" draggable="true" data-persistent-id="tab-cheerful-zapus-1531300094969-143" data-current-uri="https://www.news-prod.cloud/newspage/264407526/" data-label="https://www.news-prod.cloud/newspage/264407526/\n#tab-3-19\n(tab subtree-collapsed animation-ready complete unread not-activated-since-load discarded contextual-identity-firefox-default)\nuniqueId = tab-cheerful-zapus-1531300094969-143\nduplicated = false / 29 / null\nrestored = true\ntabId = 19\nwindowId = 3" title="https://www.news-prod.cloud/newspage/264407526/\n#tab-3-19\n(tab subtree-collapsed animation-ready complete unread not-activated-since-load discarded contextual-identity-firefox-default)\nuniqueId = tab-cheerful-zapus-1531300094969-143\nduplicated = false / 29 / null\nrestored = true\ntabId = 19\nwindowId = 3" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* https://www.news-prod.cloud/newspage/264407526/\n#tab-3-19\n(tab subtree-collapsed animation-ready complete unread not-activated-since-load discarded contextual-identity-firefox-default)\nuniqueId = tab-cheerful-zapus-1531300094969-143\nduplicated = false / 29 / null\nrestored = true\ntabId = 19\nwindowId = 3">

Object { living: true }
common.js:294:23
piroor commented 6 years ago

Thanks! The result is very interesting. The log says that dragging action was successfully started but there is no report about dragover/dragenter/dragleave events, that is quite unexpected...

piroor commented 6 years ago

I think that the drag action is possibly canceled by loading of a pending tab. However, Firefox on Ubuntu doesn't produce such a problem on my environment. Hmmm....

piroor commented 6 years ago

Could you try another addon together with TST?: https://addons.mozilla.org/firefox/addon/move-unloaded-tabs-for-tst/ It prevents TST's default behavior "focus to the tab by mousedown" and you can drag and drop background pending tabs without activating. If the problem you saw is caused by "tab restoration on dragstart", it may become a workaround.

gonhidi commented 6 years ago

With both extensions active (using the 2.4.24.7392 development build of Tree Style Tab) I can no longer reproduce (in my limited testing) this issue's behaviour the way that I previously described. The debug logs of a successful drag-and-drop of an restored-yet-unloaded tab using the sidebar/drag-and-drop and sidebar/mouse-event-listener options only are the following:

tst<Sidebar-3>: sidebar/mouse-event-listener:            onMouseDown: found target tab:  
<li id="tab-3-26" class="tab animation-ready complete unread contextual-identity-firefox-default discarded" data-tab-id="26" data-window-id="3" draggable="true" data-current-uri="https://steamcommunity.com/sharedfiles/filedetails/?id=1289346614" data-label="Steam Community :: Guide :: How to Play as The Rock\n#tab-3-26\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-trusty-ibis-1531381391427-312\nduplicated = false / 36 / null\nrestored = true\ntabId = 26\nwindowId = 3" title="Steam Community :: Guide :: How to Play as The Rock\n#tab-3-26\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-trusty-ibis-1531381391427-312\nduplicated = false / 36 / null\nrestored = true\ntabId = 26\nwindowId = 3" data-persistent-id="tab-trusty-ibis-1531381391427-312" data-level="1" data-parent-id="tab-3-4" data-label-with-descendants="* Steam Community :: Guide :: How to Play as The Rock\n#tab-3-26\n(tab animation-ready complete unread contextual-identity-firefox-default)\nuniqueId = tab-trusty-ibis-1531381391427-312\nduplicated = false / 36 / null\nrestored = true\ntabId = 26\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:            onMouseDown  
Object { targetType: "tab", tab: "tab-3-26", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Constants.kNOTIFY_TAB_MOUSEDOWN common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Sending message to listeners common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:          onDragStart: start  
dragstart { target: li#tab-3-26.tab.animation-ready.complete.unread.contextual-identity-firefox-default.discarded
, buttons: 1, clientX: 117, clientY: 349, layerX: 44, layerY: 10 }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:          onDragStart: started common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:          onDragOver: not droppable common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:          there are dragged tabs common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:            onDragEnd, mDraggingOnSelfWindow =  false common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:            dragged items are processed by someone:  move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:             reservedProcessLongHover:  
Object { dragOverTabId: "tab-3-22", draggedTabId: "tab-3-26", dropEffect: "move" }
common.js:294:23

(Observation: The tab I quick-moved was a sibling of a series of restored and unloaded tabs, and my action resulted in the dragged tab becoming a child of the second tab above it, with the quirk that its position didn't actually change position to reflect the change. In other words: having three consecutive sibling tabs and moving the lower one onto the upper one resulted in them unexpectedly remaining in the same position in both the TST sidebar and the Firefox-default horizontal tab section, with the lower becoming properly registered as a child of the upper one, as proven by the indentation and by the upper one gaining the arrow allowing to hide its misplaced new child. This might likely be an issue unrelated to both the current one and its possible workaround, since in my other quick-dragging experiments I have had no issues; but given that I have occasionally stumbled upon misplaced children — single tabs, groups of siblings, and perhaps also trees — yet had had little chance in reproducing the circumstances — which I have mainly noticed on session restore — I have decided to share as-is, hoping that it might help elsewhere without interfering with the evaluation of the issue at hand.)

piroor commented 6 years ago

With both extensions active (using the 2.4.24.7392 development build of Tree Style Tab) I can no longer reproduce (in my limited testing) this issue's behaviour the way that I previously described.

Thanks! I think this seems a bug of Firefox itself, and it should be filed like: "drag event is silently canceled when a pending tab is loaded by tab selection".

The easiest way to "fix" this problem is: introducing new option or changing the default behavior of clicking on tabs, like "Move unloaded tabs for Tree Style Tab" does. However I don't want to do that because the behavior is different from Firefox's native horizontal tab bar. It's a hard issue...

Anyway I should do something workaround for the edge case: canceled drag-and-drop action and already dispatched dragstart event.

piroor commented 6 years ago

By the commit 3bad8ee55a921fcc7bc85a354058b3d0cfd47f43, the "dragging" state will be cleared if the drag operation is unexpectedly canceled by a restoration of a pending tab. This change doesn't "fix" the problem: a background tab cannot be dragged. However, I think this should solve another problem: you cannot start dragging anymore after the first problem happens. Could you try the updated development build?

gonhidi commented 6 years ago

Step by step experience using Tree Style Tabs (TST) 2.4.24.7401:

  1. Using TST: Click-select an unloaded tab (T1); let it load; successfully drag it to a new position:
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown: found target tab:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown  
Object { targetType: "tab", tab: "tab-3-28", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Constants.kNOTIFY_TAB_MOUSEDOWN common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Sending message to listeners common.js:294:23
tst<BG>: sidebar/mouse-event-listener:     Ready to select the tab common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseUp:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default active" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">

Object { living: true }
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseUp  
Object { targetType: "tab", tab: "tab-3-28", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onClick [object HTMLSpanElement] common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 clicked tab:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default active" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown: found target tab:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready complete discarded contextual-identity-firefox-default)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown  
Object { targetType: "tab", tab: "tab-3-28", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Constants.kNOTIFY_TAB_MOUSEDOWN common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Sending message to listeners common.js:294:23
tst<BG>: sidebar/mouse-event-listener:     Ready to select the tab common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragStart: start  
dragstart { target: li#tab-3-28.tab.subtree-collapsed.animation-ready.contextual-identity-firefox-default.active.complete
, buttons: 1, clientX: 120, clientY: 444, layerX: 47, layerY: 8 }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragStart: started common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: not droppable common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-27:after common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-27:self common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-27:before common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-26:after common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-26:self common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-26:before common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:                  reservedProcessLongHover:  
Object { dragOverTabId: "tab-3-26", draggedTabId: "tab-3-28", dropEffect: "move" }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               there are dragged tabs common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragEnd, mDraggingOnSelfWindow =  true common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:                finishDrag common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               dragged items are processed by someone:  move common.js:294:23
  1. Using TST: Unsuccessfully try to quick-drag a second unloaded tab (T2):
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown: found target tab:  
<li id="tab-3-24" class="tab complete animation-ready discarded contextual-identity-firefox-default" data-tab-id="24" data-window-id="3" draggable="true" data-persistent-id="tab-jaunty-cat-1531562670925-795" data-current-uri="https://www.gettyimages.es/fotos/tumbil?mediatype=photography&phrase=tumbil&sort=mostpopular" data-label="Tumbil Fotografías e imágenes de stock | Getty Images\n#tab-3-24\n(tab complete animation-ready discarded contextual-identity-firefox-default)\nuniqueId = tab-jaunty-cat-1531562670925-795\nduplicated = false / 24 / null\nrestored = true\ntabId = 24\nwindowId = 3" title="Tumbil Fotografías e imágenes de stock | Getty Images\n#tab-3-24\n(tab complete animation-ready discarded contextual-identity-firefox-default)\nuniqueId = tab-jaunty-cat-1531562670925-795\nduplicated = false / 24 / null\nrestored = true\ntabId = 24\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Tumbil Fotografías e imágenes de stock | Getty Images\n#tab-3-24\n(tab complete animation-ready discarded contextual-identity-firefox-default)\nuniqueId = tab-jaunty-cat-1531562670925-795\nduplicated = false / 24 / null\nrestored = true\ntabId = 24\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown  
Object { targetType: "tab", tab: "tab-3-24", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Constants.kNOTIFY_TAB_MOUSEDOWN common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Sending message to listeners common.js:294:23
tst<BG>: sidebar/mouse-event-listener:     Ready to select the tab common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragStart: start  
dragstart { target: li#tab-3-24.tab.complete.animation-ready.discarded.contextual-identity-firefox-default, buttons: 1, clientX: 112, clientY: 348, layerX: 39, layerY: 8 }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragStart: started common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseUp:  
<li id="tab-3-23" class="tab animation-ready complete unread discarded contextual-identity-firefox-default" data-tab-id="23" data-window-id="3" draggable="true" data-current-uri="https://onlinelibrary.wiley.com/doi/pdf/10.1111/j.1095-8649.2007.01385.x" data-label="Scale morphology of greater lizardfish Saurida tumbil (Bloch, 1795) (Pisces: Synodontidae) - Jawad - 2007 - Journal of Fish Biology - Wiley Online Library\n#tab-3-23\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-zesty-quetzal-1531560772003-588\nduplicated = false / 23 / null\nrestored = true\ntabId = 23\nwindowId = 3" data-persistent-id="tab-zesty-quetzal-1531560772003-588" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Scale morphology of greater lizardfish Saurida tumbil (Bloch, 1795) (Pisces: Synodontidae) - Jawad - 2007 - Journal of Fish Biology - Wiley Online Library\n#tab-3-23\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-zesty-quetzal-1531560772003-588\nduplicated = false / 23 / null\nrestored = true\ntabId = 23\nwindowId = 3" title="Scale morphology of greater lizardfish Saurida tumbil (Bloch, 1795) (Pisces: Synodontidae) - Jawad - 2007 - Journal of Fish Biology - Wiley Online Library\n#tab-3-23\n(tab animation-ready complete unread discarded contextual-identity-firefox-default)\nuniqueId = tab-zesty-quetzal-1531560772003-588\nduplicated = false / 23 / null\nrestored = true\ntabId = 23\nwindowId = 3">

Object { living: true }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:                finishDrag common.js:294:23
  1. Using TST: Click-select T1; unsuccessfully try to move it:
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown: found target tab:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready contextual-identity-firefox-default complete" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown  
Object { targetType: "tab", tab: "tab-3-28", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Constants.kNOTIFY_TAB_MOUSEDOWN common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Sending message to listeners common.js:294:23
tst<BG>: sidebar/mouse-event-listener:     Ready to select the tab common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseUp:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready contextual-identity-firefox-default complete active" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">

Object { living: true }
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseUp  
Object { targetType: "tab", tab: "tab-3-28", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onClick [object HTMLSpanElement] common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 clicked tab:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready contextual-identity-firefox-default complete active" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown: found target tab:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready contextual-identity-firefox-default complete active" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown  
Object { targetType: "tab", tab: "tab-3-28", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Constants.kNOTIFY_TAB_MOUSEDOWN common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Sending message to listeners common.js:294:23
tst<BG>: sidebar/mouse-event-listener:     Ready to select the tab common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragStart: start  
dragstart { target: li#tab-3-28.tab.subtree-collapsed.animation-ready.contextual-identity-firefox-default.complete.active, buttons: 1, clientX: 150, clientY: 398, layerX: 77, layerY: 11 }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragStart: started common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:                finishDrag common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseUp:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready contextual-identity-firefox-default complete active" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">

Object { living: true }
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onClick [object HTMLSpanElement] common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 clicked tab:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready contextual-identity-firefox-default complete active" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">
common.js:294:23
  1. Using Firefox's native tabs: Successfully drag the current tab, T1, which should unlock the TST issue; as a side effect which didn't happen before (neither with the current stable 2.4.24 version nor — I believe — with previous 2.4.24.xxxx test verions), T2 ends up in a new window and the TST sidebar seems to reload (it greys out and the sidebar's throbber shows up).
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragEnd, mDraggingOnSelfWindow =  false common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:                finishDrag common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               trying to detach tab from window common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               LastDragOverTimestamp:  
Object { last: 1531562752389, now: 1531562904797, delta: 152408, timeout: 100 }
common.js:294:23
Error: Invalid tab ID: 37 ext-browser.js
  1. Using TST: Successfully drag T1, proving that it works again:
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown: found target tab:  
<li id="tab-3-28" class="tab subtree-collapsed animation-ready contextual-identity-firefox-default complete active" data-tab-id="28" data-window-id="3" draggable="true" data-persistent-id="tab-gutsy-unicorn-1531561234838-283" data-current-uri="https://www.amazon.com/Navinte-Tumbil-Vintage-Remastered-Version/dp/B0040EZN9K" data-label="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" title="Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3" data-level="1" data-parent-id="tab-3-5" data-label-with-descendants="* Navinte Tumbil (Vintage, Remastered Version) by Amma on Amazon Music - Amazon.com\n#tab-3-28\n(tab subtree-collapsed animation-ready contextual-identity-firefox-default active complete)\nuniqueId = tab-gutsy-unicorn-1531561234838-283\nduplicated = false / 29 / null\nrestored = true\ntabId = 28\nwindowId = 3">
common.js:294:23
tst<Sidebar-3>: sidebar/mouse-event-listener:                 onMouseDown  
Object { targetType: "tab", tab: "tab-3-28", closebox: false, button: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, isMiddleClick: false, isAccelClick: false }
common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Constants.kNOTIFY_TAB_MOUSEDOWN common.js:294:23
tst<BG>: sidebar/mouse-event-listener:      Sending message to listeners common.js:294:23
tst<BG>: sidebar/mouse-event-listener:     Ready to select the tab common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragStart: start  
dragstart { target: li#tab-3-28.tab.subtree-collapsed.animation-ready.contextual-identity-firefox-default.complete.active, buttons: 1, clientX: 98, clientY: 419, layerX: 25, layerY: 8 }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragStart: started common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: not droppable common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-25:after common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-25:self common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-25:before common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-23:after common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-23:self common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-23:before common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-22:after common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-22:self common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-22:before common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-21:after common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-22:before common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:                  reservedProcessLongHover:  
Object { dragOverTabId: "tab-3-22", draggedTabId: "tab-3-28", dropEffect: "move" }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-21:after common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: set drop position to  tab-3-21:self common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:                  reservedProcessLongHover:  
Object { dragOverTabId: "tab-3-21", draggedTabId: "tab-3-28", dropEffect: "move" }
common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragOver: no move common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               there are dragged tabs common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               onDragEnd, mDraggingOnSelfWindow =  true common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:                finishDrag common.js:294:23
tst<Sidebar-3>: sidebar/drag-and-drop:               dragged items are processed by someone:  move common.js:294:23
  1. Using Firefox's native tabs: Successfully quick-drag a third unloaded tab (T3): There are no extra logs.

Although all this trouble might be a Firefox issue, given that this last step works and that I wouldn't be able to provide a simple test case or reasoning that it is their code or the interface they provide that is causing trouble here, I don't think that it would be appropriate for me to open a report; I would however be happy to follow it and provide whatever support is in my hands.

piroor commented 6 years ago

Thank you for researching with details. And now I've successfully reproduced the problem on a macOS machine. I'm trying to research more...

piroor commented 6 years ago

Could you try again with disabled e10s for addons? (Go to about:config and set extensions.webextensions.remote to false, then restart Firefox.) On my environment, this problem doesn't happen with this preference. Thus I think this is an e10s problem of Firefox itself.

piroor commented 6 years ago

I've reported this problem to bugzilla.mozilla.org: 1476195 - Immediate dragstart in a remote sidebar content after restoration of discarded (pending) tab prevents dispatching of further dragover event https://bugzilla.mozilla.org/show_bug.cgi?id=1476195

gonhidi commented 6 years ago

I can confirm that after setting extensions.webextensions.remote to false I can no longer successfully reproduce the issue (following the procedure I described using version 2.4.24 of the extension on the current Firefox nightly). Thank you for managing to get your hands on a macOS system to investigate, and well done for finding a lead on where the problem lies!

piroor commented 5 years ago

Good news. The Firefox-side bug https://bugzilla.mozilla.org/show_bug.cgi?id=1476195 has been closed as FIXED and the patch will be included at Firefox 71 and later.

gonhidi commented 5 years ago

I haven't yet tested very thoroughly, but the issue does seem fixed on Firefox (Nightly) 71.0a1 (2019-09-13) on macOS Mojave 10.14.6 (18G95). Thanks!