Skip to content

Commit d1fffc5

Browse files
committed
fix: Fixed dragging tabs rendering the sidebar useless on some occations, b=closes #9020, c=tabs
1 parent 8e799a6 commit d1fffc5

File tree

1 file changed

+33
-49
lines changed

1 file changed

+33
-49
lines changed

src/browser/components/tabbrowser/content/tabs-js.patch

Lines changed: 33 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
2-
index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b53c8dd285 100644
2+
index 84d633471c89230b981d8a07babef4e0c76c0338..37ebb0a715629d372fb8054bcd8783eae31cc79a 100644
33
--- a/browser/components/tabbrowser/content/tabs.js
44
+++ b/browser/components/tabbrowser/content/tabs.js
55
@@ -83,7 +83,7 @@
@@ -100,23 +100,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
100100
);
101101
let size = this.verticalMode ? "height" : "width";
102102
let screenAxis = this.verticalMode ? "screenY" : "screenX";
103-
@@ -1135,8 +1153,14 @@
104-
(lastMovingTabScreen + tabSize);
105-
106-
if (this.verticalMode) {
107-
+ if (oldTranslateY > 0 && translateOffsetY > tabHeight / 2) {
108-
+ newTranslateY += tabHeight;
109-
+ }
110-
+ if (oldTranslateY < 0 && -translateOffsetY > tabHeight / 2) {
111-
+ newTranslateY -= tabHeight;
112-
+ }
113-
newTranslateY = Math.min(
114-
- Math.max(oldTranslateY, firstBound),
115-
+ Math.max(newTranslateY, firstBound),
116-
lastBound
117-
);
118-
} else {
119-
@@ -1168,7 +1192,7 @@
103+
@@ -1168,7 +1186,7 @@
120104
(oldTranslateX && oldTranslateX != newTranslateX) ||
121105
(oldTranslateY && oldTranslateY != newTranslateY);
122106
} else if (this.verticalMode) {
@@ -125,15 +109,15 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
125109
} else {
126110
shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX;
127111
}
128-
@@ -1337,6 +1361,7 @@
112+
@@ -1337,6 +1355,7 @@
129113

130114
let nextItem = this.ariaFocusableItems[newIndex];
131115
let tabGroup = isTab(nextItem) && nextItem.group;
132116
+ if (gZenViewSplitter.handleTabDrop(event, urls, replace, inBackground)) return;
133117
gBrowser.loadTabs(urls, {
134118
inBackground,
135119
replace,
136-
@@ -1369,6 +1394,17 @@
120+
@@ -1369,6 +1388,17 @@
137121

138122
this.finishMoveTogetherSelectedTabs(draggedTab);
139123
this.finishAnimateTabMove();
@@ -151,7 +135,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
151135
this.#expandGroupOnDrop(draggedTab);
152136

153137
if (
154-
@@ -1597,7 +1633,7 @@
138+
@@ -1597,7 +1627,7 @@
155139
}
156140

157141
get newTabButton() {
@@ -160,7 +144,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
160144
}
161145

162146
get verticalMode() {
163-
@@ -1621,29 +1657,54 @@
147+
@@ -1621,29 +1651,54 @@
164148
if (this.#allTabs) {
165149
return this.#allTabs;
166150
}
@@ -223,7 +207,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
223207
}
224208

225209
/**
226-
@@ -1698,23 +1759,18 @@
210+
@@ -1698,23 +1753,18 @@
227211
}
228212

229213
let elementIndex = 0;
@@ -251,7 +235,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
251235
let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
252236
visibleTabsInGroup.forEach(tab => {
253237
tab.elementIndex = elementIndex++;
254-
@@ -1724,10 +1780,7 @@
238+
@@ -1724,10 +1774,7 @@
255239
}
256240
}
257241

@@ -263,15 +247,15 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
263247

264248
return this.#focusableItems;
265249
}
266-
@@ -1735,6 +1788,7 @@
250+
@@ -1735,6 +1782,7 @@
267251
_invalidateCachedTabs() {
268252
this.#allTabs = null;
269253
this._invalidateCachedVisibleTabs();
270254
+ gZenWorkspaces._allStoredTabs = null;
271255
}
272256

273257
_invalidateCachedVisibleTabs() {
274-
@@ -1749,8 +1803,8 @@
258+
@@ -1749,8 +1797,8 @@
275259
#isContainerVerticalPinnedGrid(tab) {
276260
return (
277261
this.verticalMode &&
@@ -282,7 +266,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
282266
!this.expandOnHover
283267
);
284268
}
285-
@@ -1766,7 +1820,7 @@
269+
@@ -1766,7 +1814,7 @@
286270

287271
if (node == null) {
288272
// We have a container for non-tab elements at the end of the scrollbox.
@@ -291,7 +275,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
291275
}
292276

293277
node.before(tab);
294-
@@ -1861,7 +1915,7 @@
278+
@@ -1861,7 +1909,7 @@
295279
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
296280
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
297281
// Attach the long click popup to all of them.
@@ -300,7 +284,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
300284
const newTab2 = this.newTabButton;
301285
const newTabVertical = document.getElementById(
302286
"vertical-tabs-newtab-button"
303-
@@ -1956,10 +2010,12 @@
287+
@@ -1956,10 +2004,12 @@
304288

305289
_handleTabSelect(aInstant) {
306290
let selectedTab = this.selectedItem;
@@ -313,15 +297,15 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
313297
selectedTab._notselectedsinceload = false;
314298
}
315299

316-
@@ -2132,6 +2188,7 @@
300+
@@ -2132,6 +2182,7 @@
317301
}
318302

319303
_positionPinnedTabs() {
320304
+ if (true) return;
321305
let tabs = this.visibleTabs;
322306
let numPinned = gBrowser.pinnedTabCount;
323307
let absPositionHorizontalTabs =
324-
@@ -2206,7 +2263,7 @@
308+
@@ -2206,7 +2257,7 @@
325309
return;
326310
}
327311

@@ -330,7 +314,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
330314

331315
let directionX = screenX > dragData.animLastScreenX;
332316
let directionY = screenY > dragData.animLastScreenY;
333-
@@ -2215,6 +2272,8 @@
317+
@@ -2215,6 +2266,8 @@
334318

335319
let { width: tabWidth, height: tabHeight } =
336320
draggedTab.getBoundingClientRect();
@@ -339,7 +323,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
339323
let shiftSizeX = tabWidth * movingTabs.length;
340324
let shiftSizeY = tabHeight;
341325
dragData.tabWidth = tabWidth;
342-
@@ -2244,7 +2303,7 @@
326+
@@ -2244,7 +2297,7 @@
343327
let translateX = screenX - dragData.screenX;
344328
let translateY = screenY - dragData.screenY;
345329
translateY +=
@@ -348,7 +332,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
348332
let firstBoundX = firstTabInRow.screenX - firstMovingTabScreenX;
349333
let firstBoundY = firstTabInRow.screenY - firstMovingTabScreenY;
350334
let lastBoundX =
351-
@@ -2389,12 +2448,16 @@
335+
@@ -2389,12 +2442,16 @@
352336

353337
this.#clearDragOverCreateGroupTimer();
354338

@@ -369,7 +353,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
369353

370354
if (this.#rtlMode) {
371355
tabs.reverse();
372-
@@ -2408,7 +2471,7 @@
356+
@@ -2408,7 +2465,7 @@
373357
let size = this.verticalMode ? "height" : "width";
374358
let translateAxis = this.verticalMode ? "translateY" : "translateX";
375359
let scrollDirection = this.verticalMode ? "scrollTop" : "scrollLeft";
@@ -378,7 +362,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
378362
let translateX = event.screenX - dragData.screenX;
379363
let translateY = event.screenY - dragData.screenY;
380364

381-
@@ -2422,12 +2485,21 @@
365+
@@ -2422,12 +2479,21 @@
382366
let lastTab = tabs.at(-1);
383367
let lastMovingTab = movingTabs.at(-1);
384368
let firstMovingTab = movingTabs[0];
@@ -401,7 +385,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
401385
translate +=
402386
this.arrowScrollbox.scrollbox[scrollDirection] - dragData.scrollPos;
403387
} else if (isPinned && this.verticalMode) {
404-
@@ -2446,6 +2518,9 @@
388+
@@ -2446,6 +2512,9 @@
405389
// Shift the `.tab-group-label-container` to shift the label element.
406390
item = item.parentElement;
407391
}
@@ -411,7 +395,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
411395
item.style.transform = `${translateAxis}(${translate}px)`;
412396
}
413397

414-
@@ -2583,6 +2658,9 @@
398+
@@ -2583,6 +2652,9 @@
415399
break;
416400
}
417401
let element = tabs[mid];
@@ -421,7 +405,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
421405
let elementForSize = isTabGroupLabel(element)
422406
? element.parentElement
423407
: element;
424-
@@ -2605,6 +2683,10 @@
408+
@@ -2605,6 +2677,10 @@
425409
if (!dropElement) {
426410
dropElement = this.ariaFocusableItems[oldDropElementIndex];
427411
}
@@ -432,7 +416,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
432416
let newDropElementIndex = dropElement
433417
? dropElement.elementIndex
434418
: oldDropElementIndex;
435-
@@ -2613,7 +2695,7 @@
419+
@@ -2613,7 +2689,7 @@
436420
let shouldCreateGroupOnDrop;
437421
let dropBefore;
438422
if (dropElement) {
@@ -441,7 +425,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
441425
? dropElement.parentElement
442426
: dropElement;
443427

444-
@@ -2675,12 +2757,12 @@
428+
@@ -2675,12 +2751,12 @@
445429
}
446430
}
447431

@@ -456,7 +440,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
456440
dropElement != draggedTab &&
457441
isTab(dropElement) &&
458442
!dropElement?.group &&
459-
@@ -2720,7 +2802,7 @@
443+
@@ -2720,7 +2796,7 @@
460444
// Dropping right before the tab group.
461445
dropElement = dropElementGroup;
462446
colorCode = undefined;
@@ -465,7 +449,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
465449
// Dropping right after the collapsed tab group.
466450
dropElement = dropElementGroup;
467451
colorCode = undefined;
468-
@@ -2750,7 +2832,7 @@
452+
@@ -2750,7 +2826,7 @@
469453
// Shift background tabs to leave a gap where the dragged tab
470454
// would currently be dropped.
471455
for (let item of tabs) {
@@ -474,7 +458,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
474458
continue;
475459
}
476460

477-
@@ -2759,6 +2841,9 @@
461+
@@ -2759,6 +2835,9 @@
478462
if (isTabGroupLabel(item)) {
479463
// Shift the `.tab-group-label-container` to shift the label element.
480464
item = item.parentElement;
@@ -484,7 +468,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
484468
}
485469
item.style.transform = transform;
486470
}
487-
@@ -2811,8 +2896,9 @@
471+
@@ -2811,8 +2890,9 @@
488472
);
489473
}
490474

@@ -496,7 +480,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
496480
return;
497481
}
498482

499-
@@ -2824,6 +2910,12 @@
483+
@@ -2824,6 +2904,12 @@
500484
item = item.parentElement;
501485
}
502486
item.style.transform = "";
@@ -509,7 +493,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
509493
item.removeAttribute("dragover-createGroup");
510494
}
511495
this.removeAttribute("movingtab-createGroup");
512-
@@ -2870,7 +2962,7 @@
496+
@@ -2870,7 +2956,7 @@
513497
let postTransitionCleanup = () => {
514498
movingTab._moveTogetherSelectedTabsData.animate = false;
515499
};
@@ -518,7 +502,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
518502
postTransitionCleanup();
519503
} else {
520504
let onTransitionEnd = transitionendEvent => {
521-
@@ -3043,7 +3135,7 @@
505+
@@ -3043,7 +3129,7 @@
522506
}
523507

524508
_notifyBackgroundTab(aTab) {
@@ -527,7 +511,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..a4101ad4e8aa9745ec807eb0373942b5
527511
return;
528512
}
529513

530-
@@ -3169,6 +3261,9 @@
514+
@@ -3169,6 +3255,9 @@
531515
return null;
532516
}
533517
}

0 commit comments

Comments
 (0)