Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suddenly unable to move tabs #1778

Closed
Riversiderepeat opened this issue Feb 10, 2018 · 25 comments
Closed

Suddenly unable to move tabs #1778

Riversiderepeat opened this issue Feb 10, 2018 · 25 comments
Labels
Firefox-issue bug of Firefox itself

Comments

@Riversiderepeat
Copy link

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

  • Platform (OS):
  • Version of Firefox:
  • Version (or revision) of Tree Style Tab:
@Riversiderepeat
Copy link
Author

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
Copy link

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
Copy link
Owner

piroor commented May 14, 2018

@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
Copy link

dzfranklin commented May 15, 2018

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
Copy link

bartekmp commented Jul 5, 2018

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
Copy link
Owner

piroor commented Jul 5, 2018

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.

  • Closeboxes in tabs are not draggable. If you start dragging on a closebox, it will be simply ignored.
  • A pinned tab cannot be dropped after any unpinned tab. A pinned tab can be rearranged only in pinned tabs of an window.
    • When you drag a pinned tab and drop it after an unpinned tab in a different window, then the dragged tab will be moved to the window and it will be unpinned automatically.
  • An unpinned tab cannot be dropped before any pinned tab. An unpinned tab can be rearranged only in unpinned tabs of an window.
    • When you drag an unpinned tab and drop it before a pinned tab in a different window, then the dragged tab will be moved to the window and it will be pinned automatically.
  • If you use another addon "Multiple Tab Handler" together, dragging actions on tabs have different behaviors.
    • Long-press on a closebox in a tab starts selection of closeboxes. It allows you to close multiple tabs at a time.
    • . It allows you to reload/close/pin/unpin/mute/unmute them at at time.

If your case is in on of emphasized cases above, it is an intentional result.

@gonhidi
Copy link

gonhidi commented Jul 10, 2018

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
Copy link
Owner

piroor commented Jul 11, 2018

@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:

  • Debug mode => ON
  • Detailed logging
    • Logs from common modules (and all following checkboxes in the section) => OFF (all)
    • Logs from background modules (and all following checkboxes in the section) => OFF (all)
    • Logs from sidebar modules
      • sidebar/drag-and-drop => ON
    • Logs from sidebar modules
      • sidebar/mouse-event-listener => ON

@gonhidi
Copy link

gonhidi commented Jul 11, 2018

@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
Copy link

gonhidi commented Jul 11, 2018

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
Copy link
Owner

piroor commented Jul 11, 2018

@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
Copy link

gonhidi commented Jul 11, 2018

@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
Copy link
Owner

piroor commented Jul 12, 2018

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
Copy link
Owner

piroor commented Jul 12, 2018

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
Copy link
Owner

piroor commented Jul 12, 2018

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
Copy link

gonhidi commented Jul 12, 2018

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
Copy link
Owner

piroor commented Jul 12, 2018

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
Copy link
Owner

piroor commented Jul 13, 2018

By the commit 3bad8ee, 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
Copy link

gonhidi commented Jul 14, 2018

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
Copy link
Owner

piroor commented Jul 17, 2018

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
Copy link
Owner

piroor commented Jul 17, 2018

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
Copy link
Owner

piroor commented Jul 17, 2018

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

@piroor piroor added Firefox-issue bug of Firefox itself and removed help wanted labels Jul 17, 2018
@gonhidi
Copy link

gonhidi commented Jul 17, 2018

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
Copy link
Owner

piroor commented Sep 13, 2019

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.

@piroor piroor closed this as completed Sep 13, 2019
@gonhidi
Copy link

gonhidi commented Sep 13, 2019

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Firefox-issue bug of Firefox itself
Projects
None yet
Development

No branches or pull requests

5 participants