Firefox/Projects/Multiple Tab Selection/Design: Difference between revisions

Line 21: Line 21:
* A "selected tab" refers a tab to which a "multiple tab action" would be applied.
* A "selected tab" refers a tab to which a "multiple tab action" would be applied.
* The SELECTED tab is, by default, selected and cannot be deselected.
* The SELECTED tab is, by default, selected and cannot be deselected.
* When selected tabs are dragged between windows or detached, they maintain their relative position.
* By default, the anchor tab is the SELECTED tab.
* By default, the anchor tab is the SELECTED tab.
* If the anchor tab is removed, the anchor tab is reset to the default.
* If the anchor tab is removed, the anchor tab is reset to the default.
* There will no keyboard (non-mouse) shortcuts to handle multiple tab selection.
* There will no keyboard (non-mouse) shortcuts to handle multiple tab selection.
* While the SELECTED tab is an app tab, multiple tab selection is disabled.
* Tab duplication is only allowed when only one tab (the SELECTED tab) is selected.
* Tab duplication is only allowed when only one tab (the SELECTED tab) is selected.
** It would be fantastic if we could remap tab duplication from ctrl+drag to alt+drag on Windows and Linux, solving both "mode within a mode" and cross-platform inconsistency problems, but the drag-and-drop code is deep down in C++, and it seems (to attempt) to adhere closely to the OS's mappings.
** It would be fantastic if we could remap tab duplication from ctrl+drag to alt+drag on Windows and Linux, solving both "mode within a mode" and cross-platform inconsistency problems, but the drag-and-drop code is deep down in C++, and it seems (to attempt) to adhere closely to the OS's mappings.
Line 30: Line 30:
Tab mousedown:
Tab mousedown:
* SELECT tab
* SELECT tab
* if this tab had been not already SELECTED: deselect all other tabs
* if this tab had been not already SELECTED:
** deselect all other tabs
* set tab as anchor tab
* set tab as anchor tab


Line 43: Line 44:


Tab shift+mousedown:
Tab shift+mousedown:
* deselect all tabs, then select all tabs from anchor tab to this tab
* deselect all tabs
* select all tabs from anchor tab to this tab


Tab shift+ctrl+mousedown (shift+cmd+mousedown on OS X):
Tab shift+ctrl+mousedown (shift+cmd+mousedown on OS X):
* if this tab is currently selected: deselect all tabs
* if this tab is currently selected:
* otherwise: deselect all tabs: then select all tabs from anchor tab to this tab
** deselect all tabs
* otherwise:
** deselect all tabs
** then select all tabs from anchor tab to this tab


SELECTED tab drag or selected tab shift/ctrl+drag (shift/cmd+drag on OS X):
SELECTED tab drag or selected tab shift/ctrl+drag (shift/cmd+drag on OS X):
* if dropped in tab container: move selected tabs to that location in the tab container
* if dropped in tab container
* if dropped in another window's tab container: move selected tabs to that window at that location in the tab container
** move selected tabs to that location in the tab container
* if dropped downward to the viewport: detach selected tabs to new window; selected tabs will not be selected in new window
* if dropped in another window's tab container
* these actions maintain the SELECTED tab among the selected tabs
** move selected tabs to that window at that location in the tab container
* unmodified drags on non-SELECTED tabs will not work, because unmodified mousedown on a non-SELECTED tab SELECTS that tab already
* if dropped downward to the viewport or out of the window
** detach selected tabs to new window; selected tabs will not be selected in new window
* if dropped on the bookmarks toolbar or sidebar
** bookmark the selected tabs
* notes:
** these actions maintain the SELECTED tab, the relative position, and the selection state of the selected tabs
** unmodified drags on non-SELECTED tabs will not work, because unmodified mousedown on a non-SELECTED tab SELECTS that tab already


=== Usage examples ===
=== Usage examples ===
134

edits