11diff --git a/browser/base/content/tabbrowser-tabs.js b/browser/base/content/tabbrowser-tabs.js
2- index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a66f3f8e14 100644
2+ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..2cb17dcfd88db3d0f242ce2051847ad1fbed8041 100644
33--- a/browser/base/content/tabbrowser-tabs.js
44+++ b/browser/base/content/tabbrowser-tabs.js
55@@ -517,19 +517,40 @@
@@ -17,14 +17,14 @@ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a6
1717 // relative to the corner of the dragged tab.
1818 function clientX(ele) {
1919+ if (verticalTabs) {
20- + return 0
20+ + return 0;
2121+ }
2222+
2323 return ele.getBoundingClientRect().left;
2424 }
2525+ function clientY(ele) {
2626+ if (!verticalTabs) {
27- + return 0
27+ + return 0;
2828+ }
2929+
3030+ return ele.getBoundingClientRect().top;
@@ -82,7 +82,7 @@ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a6
8282 ];
8383 }
8484 newMargin = pixelsToScroll > 0 ? maxMargin : minMargin;
85- @@ -634,30 +665,35 @@
85+ @@ -634,30 +665,38 @@
8686 let tabRect = this._getVisibleTabs()
8787 .at(-1)
8888 .getBoundingClientRect();
@@ -115,7 +115,10 @@ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a6
115115 newMargin *= -1;
116116 }
117117- ind.style.transform = "translate(" + Math.round(newMargin) + "px)";
118- + ind.style.transform = "translate(" + verticalTabs ? "0, " : "" + Math.round(newMargin) + "px)";
118+ + ind.style.transform =
119+ + "translate(" + verticalTabs
120+ + ? "0, "
121+ + : "" + Math.round(newMargin) + "px)";
119122 }
120123
121124 on_drop(event) {
@@ -127,16 +130,20 @@ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a6
127130 var dt = event.dataTransfer;
128131 var dropEffect = dt.dropEffect;
129132 var draggedTab;
130- @@ -714,7 +750,7 @@
133+ @@ -714,7 +753,11 @@
131134 incrementDropIndex = false;
132135 }
133136
134137- if (oldTranslateX && oldTranslateX != newTranslateX && !gReduceMotion) {
135- + if (oldTranslateX && oldTranslateX != newTranslateX && !(gReduceMotion || verticalTabs)) {
138+ + if (
139+ + oldTranslateX &&
140+ + oldTranslateX != newTranslateX &&
141+ + !(gReduceMotion || verticalTabs)
142+ + ) {
136143 for (let tab of movingTabs) {
137144 tab.setAttribute("tabdrop-samewindow", "true");
138145 tab.style.transform = "translateX(" + newTranslateX + "px)";
139- @@ -1519,6 +1555 ,11 @@
146+ @@ -1519,6 +1562 ,11 @@
140147 }
141148
142149 _animateTabMove(event) {
@@ -148,18 +155,20 @@ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a6
148155 let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
149156 let movingTabs = draggedTab._dragData.movingTabs;
150157
151- @@ -1530,19 +1571,26 @@
158+ @@ -1530,19 +1578,28 @@
152159 }
153160 }
154161
155162- if (!("animLastScreenX" in draggedTab._dragData)) {
156163- draggedTab._dragData.animLastScreenX = draggedTab._dragData.screenX;
157- + const animLastScreen = verticalTabs ? "animLastScreenY" : "animLastScreenX"
158- + const screen = verticalTabs ? "screenY" : "screenX"
159- + const dimensions = verticalTabs ? "height" : "width"
160- + const scrollEdge = verticalTabs ? "scrollTop" : "scrollLeft"
161- + const scrollDimension = verticalTabs ? "scrollY" : "scrollX"
162- + const translate = verticalTabs ? "translateY" : "translateX"
164+ + const animLastScreen = verticalTabs
165+ + ? "animLastScreenY"
166+ + : "animLastScreenX";
167+ + const screen = verticalTabs ? "screenY" : "screenX";
168+ + const dimensions = verticalTabs ? "height" : "width";
169+ + const scrollEdge = verticalTabs ? "scrollTop" : "scrollLeft";
170+ + const scrollDimension = verticalTabs ? "scrollY" : "scrollX";
171+ + const translate = verticalTabs ? "translateY" : "translateX";
163172+
164173+ if (!(animLastScreen in draggedTab._dragData)) {
165174+ draggedTab._dragData[animLastScreen] = draggedTab._dragData[screen];
@@ -181,7 +190,7 @@ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a6
181190
182191 let pinned = draggedTab.pinned;
183192 let numPinned = gBrowser._numPinnedTabs;
184- @@ -1551,36 +1599 ,40 @@
193+ @@ -1551,36 +1608 ,40 @@
185194 pinned ? numPinned : undefined
186195 );
187196
@@ -233,7 +242,7 @@ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a6
233242 }
234243
235244 draggedTab._dragData.translateX = translateX;
236- @@ -1613,11 +1665 ,11 @@
245+ @@ -1613,11 +1674 ,11 @@
237246 if (tabs[mid] == draggedTab && ++mid > high) {
238247 break;
239248 }
@@ -247,7 +256,7 @@ index 0aa7ae602ea1048a9b05d7614aacacdb736f3e28..dfd4c47e9747736f352f4f49ae2c35a6
247256 tabCenter
248257 ) {
249258 low = mid + 1;
250- @@ -1640,16 +1692 ,16 @@
259+ @@ -1640,16 +1701 ,16 @@
251260 for (let tab of tabs) {
252261 if (tab != draggedTab) {
253262 let shift = getTabShift(tab, newIndex);
0 commit comments