Renames the internal cache variable `_bookmarkWorkspaceCache` to `_workspaceBookmarksCache` for consistency and clarity. This change does not affect functionality.
Refactor workspace switching logic to correctly handle
essential tabs and introduce container-specific essentials.
This change addresses issues with essential tabs not being
handled correctly during workspace switches.
The `changeWorkspace` function is refactored to improve
clarity and maintainability. The logic for showing and
hiding tabs is streamlined, and tab selection is handled
more robustly. A new `_shouldShowTab` function is
introduced to centralize the logic for determining tab
visibility based on workspace and container settings. The
logic also handles pinned essential tabs in the different workspace types.
The pinned tab manager is updated to support container-
specific essentials and to refresh pinned tabs on workspace
changes. The `_shouldShowPin` function is introduced to
manage visibility of pinned tabs in different workspaces
considering essential tabs, pinned tabs and containers.
This change also fixes a bug where the selected tab would
sometimes be changed unexpectedly when switching
workspaces.
This commit adds the ability to switch workspaces by horizontally
scrolling the sidebar. A scroll cooldown and threshold are
implemented to prevent accidental workspace changes. The
`_setupHoverDetection` method is renamed to `_setupSidebarHandlers`
as it now handles both hover and scroll events.
Adds the ability to navigate workspaces using the mouse
back/forward buttons when hovering over the sidebar. This
improves the user experience by providing a more intuitive
way to switch between workspaces.
This feature is only enabled when workspaces are enabled.
It intercepts the "AppCommand" events to handle back/forward
navigation.
This commit implements workspace switching using swipe gestures on the
navigator toolbox and tab bar. It introduces new event listeners for
`MozSwipeGesture*` events to detect and handle horizontal swipes.
The logic determines the swipe direction and switches to the next or
previous workspace accordingly, taking RTL layout into account. The
implementation uses a state object to track the gesture progress and
prevent unintended workspace switches.