Commit graph

116 commits

Author SHA1 Message Date
Dão Gottwald
099c8d5606 Bug 1837174 - Replace [first-visible-unpinned-tab] selector with :nth-child and get rid of _setPositionalAttributes. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D180213
2023-06-07 18:42:07 +00:00
Mark Banner
130a655906 Bug 1826062 - Automatic fixes for upgrading Prettier to 2.8.8. r=mossop,perftest-reviewers,webcompat-reviewers,geckoview-reviewers,denschub,devtools-reviewers,sparky,calu
Differential Revision: https://phabricator.services.mozilla.com/D177027
2023-05-20 12:26:53 +00:00
Mark Banner
8219a5c503 Bug 1826062 - Automatic fixes for Prettier 2.0.5 upgrade. r=mossop,perftest-reviewers,webcompat-reviewers,geckoview-reviewers,denschub,devtools-reviewers,sparky,owlish
Differential Revision: https://phabricator.services.mozilla.com/D177025
2023-05-20 12:26:49 +00:00
Niklas Baumgardner
f86003d424 Bug 1576612 - Close all multiselected tabs on middle click. r=dao
Differential Revision: https://phabricator.services.mozilla.com/D177792
2023-05-16 20:16:26 +00:00
Natalia Csoregi
cc8954cca4 Backed out changeset 2814e09f635a (bug 1576612) for failures on browser_multiselect_tabs_close.js. CLOSED TREE 2023-05-16 19:27:36 +03:00
Niklas Baumgardner
82e794831a Bug 1576612 - Close all multiselected tabs on middle click. r=dao
Differential Revision: https://phabricator.services.mozilla.com/D177792
2023-05-16 14:04:32 +00:00
Dão Gottwald
077339c4e9 Bug 1819359 - Replace removeTab's byMouse parameter with triggeringEvent parameter. r=mconley
Differential Revision: https://phabricator.services.mozilla.com/D171459
2023-03-02 15:22:00 +00:00
Oriol Brufau
74dc189d04 Bug 1808787 - Optimize drag-and-drop into tabbar with lots of tabs. r=dao,Gijs
When called with isLink=true, _getDragTargetTab returns null if the
pointer is around the edges of the tab. This is useful to decide whether
drag-and-drop should create a new tab, or reuse an existing one.

The problem was that _getDropIndex, used when creating a new tab, would
therefore always get a null tab on dragover events, and then fall back
to iterating all tabs sequentially until it would find the right index,
with an expensive getBoundingClientRect() for each tab.

So this patch:
 - Renames unclear isLink to a more meaningful ignoreTabSides
 - Makes _getDragTargetTab use the native Element#closest instead of
   iterating the ancestors manually in JS.
 - Makes _getDropIndex always pass ignoreTabSides=false
 - Refactors _getDropIndex to never iterate tabs.
 - Adds .tab-drop-indicator{pointer-events:none}. This is needed so that
   the indicator doesn't become the event target, we want to get the tab
   behind it.

Differential Revision: https://phabricator.services.mozilla.com/D166125
2023-03-01 13:59:48 +00:00
Mike Conley
90213fc7d5 Bug 1804722 - Add probes for the All Tabs panel. data-review=jhirsch, r=mossop
This adds probes and a limited set of tests for the following types of measurements:

1. A count for each time the All Tabs panel is opened, keyed on the entrypoint.
2. A count for each usage of the Tab Context Menu, keyed on the trigger node
   as the entrypoint.
3. A count for each dragstart within the All Tabs panel.

Differential Revision: https://phabricator.services.mozilla.com/D168305
2023-02-06 15:14:48 +00:00
Oriol Brufau
f1298a84d4 Bug 1808784 - Move tab invalidation methods to gBrowser.tabContainer. r=Gijs
D166962 is moving the cache into gBrowser.tabContainer, so the methods
for invalidating it should also be there.

Differential Revision: https://phabricator.services.mozilla.com/D166966
2023-01-17 14:12:08 +00:00
Oriol Brufau
7802cff266 Bug 1808784 - Cache gBrowser.tabContainer.allTabs. r=Gijs
gBrowser.tabs was either redirecting to gBrowser.tabContainer.allTabs or
using the previously cached result. However, most tabContainer code uses
allTabs directly, which was not benefiting from the cache.

Therefore, this patch caches gBrowser.tabContainer.allTabs, and makes
gBrowser.tabs always redirect to it.

Also makes it consistent for gBrowser.tabContainer._getVisibleTabs() and
gBrowser.visibleTabs. In that case both the logic and the cache were in
gBrowser, and tabContainer was redirecting to that, except when gBrowser
hadn't been initialized.

So it's better to have both the logic and the cache in tabContainer.

Differential Revision: https://phabricator.services.mozilla.com/D166962
2023-01-17 00:36:19 +00:00
Dão Gottwald
0564edd687 Bug 1809465 - Replace _hoveredTab with a private tab property. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D166441
2023-01-10 17:10:30 +00:00
Oriol Brufau
5f16781e49 Bug 1808965 - Stop calling _mouseleave and _mouseenter from _setPositionalAttributes. r=dao
Calling _mouseleave and _mouseenter from _setPositionalAttributes used
to be needed to update the beforehovered and afterhovered attributes,
as the tabs these attributes were set on might have changed.

However, bug 1808661 removed these attributes, so mouseenter/mouseleave
events should be sufficient for updating _hoveredTab itself.

_setPositionalAttributes is a hot code-path, so avoiding the expensive
querySelector("tab:hover") will improve performance when having lots of
tabs.

Depends on D166094

Differential Revision: https://phabricator.services.mozilla.com/D166225
2023-01-09 18:29:38 +00:00
Oriol Brufau
849bfbb19b Bug 1808661 - Remove beforehovered and afterhovered. r=dao
Differential Revision: https://phabricator.services.mozilla.com/D166094
2023-01-06 21:48:02 +00:00
Oriol Brufau
a1eb3c4eb8 Bug 1808661 - Remove before-multiselected and beforeMultiselected. r=Gijs,dao
Depends on D166026

Differential Revision: https://phabricator.services.mozilla.com/D166027
2023-01-06 21:48:01 +00:00
Oriol Brufau
e4262236d5 Bug 1808661 - Remove last-visible-tab and _lastTab. r=Gijs,dao
Differential Revision: https://phabricator.services.mozilla.com/D166026
2023-01-06 21:48:01 +00:00
Oriol Brufau
ab88c0d61d Bug 1808661 - Remove first-visible-tab and _firstTab. r=Gijs,dao
Differential Revision: https://phabricator.services.mozilla.com/D166025
2023-01-06 21:48:01 +00:00
Oriol Brufau
8ec7bf5a6a Bug 1808661 - Remove beforeselected-visible and _beforeSelectedTab. r=Gijs,dao
Differential Revision: https://phabricator.services.mozilla.com/D166024
2023-01-06 21:48:00 +00:00
Sandor Molnar
24b08f1f9f Backed out 5 changesets (bug 1808661) for causing bc failures in browser/base/content/test/tabs/browser_positional_attributes.js CLOSED TREE
Backed out changeset 16871d37b859 (bug 1808661)
Backed out changeset 607a282e25f5 (bug 1808661)
Backed out changeset c2ad604be361 (bug 1808661)
Backed out changeset b22c7589a7bb (bug 1808661)
Backed out changeset b0c1ee751b7a (bug 1808661)
2023-01-06 22:21:10 +02:00
Oriol Brufau
14f328f107 Bug 1808661 - Remove beforehovered and afterhovered. r=dao
Differential Revision: https://phabricator.services.mozilla.com/D166094
2023-01-06 19:38:54 +00:00
Oriol Brufau
b0b472c28d Bug 1808661 - Remove before-multiselected and beforeMultiselected. r=Gijs,dao
Depends on D166026

Differential Revision: https://phabricator.services.mozilla.com/D166027
2023-01-06 19:38:54 +00:00
Oriol Brufau
0fea6a7914 Bug 1808661 - Remove last-visible-tab and _lastTab. r=Gijs,dao
Differential Revision: https://phabricator.services.mozilla.com/D166026
2023-01-06 19:38:53 +00:00
Oriol Brufau
f46a7d03a6 Bug 1808661 - Remove first-visible-tab and _firstTab. r=Gijs,dao
Differential Revision: https://phabricator.services.mozilla.com/D166025
2023-01-06 19:38:53 +00:00
Oriol Brufau
968a037708 Bug 1808661 - Remove beforeselected-visible and _beforeSelectedTab. r=Gijs,dao
Differential Revision: https://phabricator.services.mozilla.com/D166024
2023-01-06 19:38:53 +00:00
Oriol Brufau
7eca06dd4c Bug 1760460 - Turn gBrowser._removingTabs into a Set. r=Gijs
Thus avoiding ugly things like:
this._removingTabs.splice(this._removingTabs.indexOf(aTab), 1);

Differential Revision: https://phabricator.services.mozilla.com/D165736
2023-01-01 18:09:28 +00:00
Mark Banner
3a07fcf436 Bug 1806503 - Automatically replace Cu.reportError with console.error (browser/actors, browser/base). r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D165068
2022-12-27 10:08:58 +00:00
Eemeli Aro
56c6f8a57f Bug 1760029 - Migrate tabbrowser.properties strings used by tabbrowser-tabs.js to Fluent. r=gregtatum,dao,fluent-reviewers,flod
This removes the `intl:app-locales-changed` event listener that was added in bug 1760825, as it's not longer required.

Depends on D159017

Differential Revision: https://phabricator.services.mozilla.com/D159018
2022-11-22 17:12:22 +00:00
Simon Friedberger
3c5991df13 Bug 1549057 - Rename (Gg)etCSP to (Gg)etCsp - r=freddyb
Differential Revision: https://phabricator.services.mozilla.com/D159268
2022-10-24 20:38:11 +00:00
Katherine Patenio
ab8582b1d7 Bug 1789978: fix drop indicator position for RTL builds after opening Firefox View. r=dao
Differential Revision: https://phabricator.services.mozilla.com/D157851
2022-10-11 18:30:59 +00:00
James Picone
7a8f248cf4 Bug 1625945: Intercept wheel events in tabbrowser-tabs if switchByScrolling is true so tabs also switch when it's overflown, r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D158077
2022-10-09 08:32:16 +00:00
Emilio Cobos Álvarez
a39bc75841 Bug 1775998 - Update close buttons as a result of overflow/underflow. r=Gijs
The close buttons look at the overflow attribute but are not guaranteed
to update when it changes otherwise.

Differential Revision: https://phabricator.services.mozilla.com/D158622
2022-10-08 00:17:24 +00:00
Emilio Cobos Álvarez
abbd3773c9 Bug 1786513 - Don't use ResizeObserver to deal with window resizes in tabbrowser. r=Gijs
This was introduced alongside the MutationObserver[1], according to the commit
message to "improve performance through coalesence of 'resize' events."

However, that's false, before this bug, resizes on the top level window would
flush layout and resize the document element instantly so there should be the
exact same amount of resize events as of ResizeObserver notifications. I'm not
sure what coalesence would this achieve.

This is causing the previous patch to get backed out, due to a failure on macOS
that I haven't been able to reproduce.

It's likely because on chrome windows some document element resizes can trigger
window resizes due to the size constraint propagation we have, so nothing
super-concerning or new all-in-all, my patch just changed the timing of how
this happened.

[1]: https://hg.mozilla.org/mozilla-central/rev/ad71dde9ed5e28957b124001a78c88fc1d94426a

Differential Revision: https://phabricator.services.mozilla.com/D155986
2022-09-01 10:54:13 +00:00
Tooru Fujisawa
f31cd07e4a Bug 1771831 - Make it possible to reorder tabs in "List all tabs" list by drag-and-drop. r=NeilDeakin
Also the tab list item can be dragged to the tab bar to reorder, or moved to
other window, or detached.

Differential Revision: https://phabricator.services.mozilla.com/D147709
2022-08-31 13:22:53 +00:00
Butkovits Atila
9faa735912 Backed out changeset f47d9c27992d (bug 1771831) for causing failures at browser_tabdetach.js. CLOSED TREE 2022-08-31 03:54:04 +03:00
Tooru Fujisawa
d50c882977 Bug 1771831 - Make it possible to reorder tabs in "List all tabs" list by drag-and-drop. r=NeilDeakin
Also the tab list item can be dragged to the tab bar to reorder, or moved to
other window, or detached.

Differential Revision: https://phabricator.services.mozilla.com/D147709
2022-08-30 22:49:43 +00:00
Kagami Sascha Rosylight
102bd338be Bug 1695435 - Part 2: Add more words to the chrome script heuristic in use-isInstance r=preferences-reviewers,Gijs,webdriver-reviewers,whimboo,sgalich
Differential Revision: https://phabricator.services.mozilla.com/D110932
2022-08-24 22:47:42 +00:00
Paul Zuehlcke
0a07b885b5 Bug 1779055 - Change private browsing new tab title to "New Private Tab". r=timhuang
Differential Revision: https://phabricator.services.mozilla.com/D151534
2022-07-14 18:45:43 +00:00
Dão Gottwald
6a1e5604c2 Bug 1767802 - Add another tab stop to the tabs toolbar. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D149277
2022-06-15 11:13:36 +00:00
Dão Gottwald
6dcb722fe8 Bug 1770808 - Preserve space around the Fx View button / tabstrip separator when there are pinned tabs and tabs overflow. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D147101
2022-05-24 17:05:28 +00:00
Cosmin Sabou
63f7b7912d Backed out changeset 9e4593ef59f1 (bug 1770808) for causing Bug 1770968. a=backout 2022-05-24 19:17:00 +03:00
Dão Gottwald
51458625c7 Bug 1770808 - Preserve space around the Fx View button / tabstrip separator when there are pinned tabs and tabs overflow. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D147101
2022-05-23 23:55:21 +00:00
Oriol Brufau
6a8eb0943c Bug 1763712 - Prevent getRelatedElement() from passing empty string to getElementById(). r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D143234
2022-04-07 23:44:49 +00:00
Greg Tatum
27ed680c0b Bug 1760825 - Fix New Tab text to change on a live language reload; r=amy
This text is cached, and so needs invalidating when the app locale is
changed.

Differential Revision: https://phabricator.services.mozilla.com/D142256
2022-03-30 20:12:10 +00:00
Oriol Brufau
28b9fcc2b7 Bug 1759858 - Make gBrowser.tabContainer.on_drop handle adoptTab failures. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D141237
2022-03-28 08:56:23 +00:00
Oriol Brufau
413a559c70 Bug 1758295 - Preserve tab laziness when dragging into another window. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D140456
2022-03-10 09:28:02 +00:00
Emilio Cobos Álvarez
92ca1990a3 Bug 1756241 - Improve tab dragging calculations to work correctly between mixed-dpi screens. r=dao
The root cause of the bug is fixed by the previous patch. This patch improves
the calculations to work properly across mixed dpi displays (which doesn't work
on release either by any stretch).

Hopefully it's somewhat straight-forward to follow.

Depends on D139243

Differential Revision: https://phabricator.services.mozilla.com/D139244
2022-02-22 19:06:59 +00:00
Emilio Cobos Álvarez
6ab8201db0 Bug 1755315 - Add more convenient accessors for widget screen to chrome code. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D138662
2022-02-17 16:22:58 +00:00
Emilio Cobos Álvarez
a8883d1cfc Bug 1753836 - Fix callers of screenForRect to pass desktop pixels. r=jfkthame,Gijs
Device pixels and desktop pixels are not the same on macOS and Win7.
Expose the desktop-to-device scale to JS and use it appropriately.

Depends on D138038

Differential Revision: https://phabricator.services.mozilla.com/D138039
2022-02-16 12:18:12 +00:00
smolnar
33c038ec0d Backed out 6 changesets (bug 1753836) for causing mochitest failures in test_event_screenXY_with_zoom. CLOSED TREE
Backed out changeset a572cbc0fac2 (bug 1753836)
Backed out changeset 371a495ff728 (bug 1753836)
Backed out changeset 774af76be463 (bug 1753836)
Backed out changeset faa8a8f2d40f (bug 1753836)
Backed out changeset 9209832ecffe (bug 1753836)
Backed out changeset db443ce0406d (bug 1753836)
2022-02-16 01:47:51 +02:00
Emilio Cobos Álvarez
c879265a3a Bug 1753836 - Fix callers of screenForRect to pass desktop pixels. r=jfkthame,Gijs
Device pixels and desktop pixels are not the same on macOS and Win7.
Expose the desktop-to-device scale to JS and use it appropriately.

Depends on D138038

Differential Revision: https://phabricator.services.mozilla.com/D138039
2022-02-15 22:25:04 +00:00