mbnuqw / sidebery

Firefox extension for managing tabs and bookmarks in sidebar.
MIT License
3.25k stars 163 forks source link

Handle Cmd+Click as a middle click on macOS #396

Open nwg opened 3 years ago

nwg commented 3 years ago

I think that Mac OS X middle click may possibly be broken for me, but only in the extension and not in firefox in general.

I never ever use middle click in os x but it looks like Cmd-Shift-Click works for me everywhere in the os, including in firefox. I can clearly see middle click text selection working and in firefox specifically, i can see middle click behaviors like [new tab + switch to new tab] on middle click are working since the default non-middle-click behavior is to not switch to the new tab.

But, it seems the extension is somehow not doing anything special with my middle clicks.

I can't seem to make any useful use of middle click in the extension.

Check out steps below.

Steps to reproduce

1) Open sidebery settings 2) Set "Middle click on tabs panel" to "close active tab" 3) Set "Left click on tabs panel" to "previous panel" 3) Cmd-Shift-Click on the tabs panel using some mouse input device (mine is macbook pro trackpad)

Expected behavior

Close active tab

Actual behavior

previous panel

Environment info

OS: mac, big sur 11.3.1 Firefox version: 88.0.1 Addon version: 4.9.4

{ "settings": { "version": "4.9.4", "nativeScrollbars": false, "selWinScreenshots": true, "tabsCheck": true, "tabsFix": "notify", "markWindow": false, "markWindowPreface": "[Sidebery] ", "ctxMenuNative": false, "autoHideCtxMenu": "none", "ctxMenuRenderInact": true, "ctxMenuIgnoreContainers": "", "navBarLayout": "horizontal", "navBarInline": true, "hideAddBtn": false, "hideSettingsBtn": false, "navBtnCount": true, "hideEmptyPanels": true, "navMidClickAction": "rm_act_tab", "navSwitchPanelsWheel": true, "groupLayout": "grid", "skipEmptyPanels": false, "dndTabAct": true, "dndTabActDelay": 750, "dndTabActMod": "none", "dndExp": "pointer", "dndExpDelay": 0, "dndExpMod": "none", "stateStorage": "global", "warnOnMultiTabClose": "any", "activateOnMouseUp": true, "activateLastTabOnPanelSwitching": true, "showTabRmBtn": true, "showTabCtx": true, "hideInact": false, "activateAfterClosing": "prev", "activateAfterClosingPrevRule": "visible", "activateAfterClosingNextRule": "tree", "activateAfterClosingGlobal": false, "activateAfterClosingNoFolded": true, "activateAfterClosingNoDiscarded": true, "shiftSelAct": true, "askNewBookmarkPlace": false, "tabsRmUndoNote": true, "nativeHighlight": false, "tabsUnreadMark": false, "tabsReloadLimit": 5, "tabsReloadLimitNotif": true, "moveNewTabPin": "start", "moveNewTabParent": "last_child", "moveNewTabParentActPanel": false, "moveNewTab": "end", "pinnedTabsPosition": "panel", "pinnedTabsList": false, "pinnedAutoGroup": false, "tabsTree": true, "groupOnOpen": true, "tabsTreeLimit": "none", "hideFoldedTabs": true, "autoFoldTabs": false, "autoFoldTabsExcept": "none", "autoExpandTabs": true, "rmChildTabs": "all", "tabsChildCount": true, "tabsLvlDots": true, "discardFolded": false, "discardFoldedDelay": 0, "discardFoldedDelayUnit": "sec", "tabsTreeBookmarks": true, "treeRmOutdent": "branch", "bookmarksPanel": true, "warnOnMultiBookmarkDelete": "collapsed", "openBookmarkNewTab": false, "midClickBookmark": "edit", "actMidClickTab": false, "autoCloseBookmarks": false, "autoRemoveOther": false, "highlightOpenBookmarks": false, "activateOpenBookmarkTab": false, "showBookmarkLen": false, "bookmarksRmUndoNote": true, "fontSize": "m", "bgNoise": true, "animations": true, "animationSpeed": "fast", "theme": "default", "style": "auto", "sidebarCSS": false, "groupCSS": false, "snapNotify": true, "snapExcludePrivate": false, "snapInterval": 30, "snapIntervalUnit": "min", "snapLimit": 200, "snapLimitUnit": "snap", "hScrollThroughPanels": false, "scrollThroughTabs": "none", "scrollThroughVisibleTabs": false, "scrollThroughTabsSkipDiscarded": false, "scrollThroughTabsExceptOverflow": true, "scrollThroughTabsCyclic": false, "tabDoubleClick": "none", "tabLongLeftClick": "none", "tabLongRightClick": "none", "tabsPanelLeftClickAction": "prev", "tabsPanelDoubleClickAction": "undo", "tabsPanelRightClickAction": "menu", "tabsPanelMiddleClickAction": "rm_act_tab", "syncName": "", "syncSaveSettings": false, "syncSaveCtxMenu": false, "syncSaveStyles": false, "syncAutoApply": false }, "permissions": { "allUrls": true, "tabHide": true, "actualAllUrls": true, "actualTabHide": true }, "storage": { "size": "154.7 kb", "props": { "bookmarksMenu": "226 b", "bookmarksPanelMenu": "54 b", "containers_v4": "880 b", "disabledKeybindings": "2 b", "expandedBookmarks": "84 b", "favAutoCleanTime": "10 b", "favUrls": "15.8 kb", "favicons": "124.9 kb", "lastSnapTime": "13 b", "panelIndex": "1 b", "panels_v4": "446 b", "prevTabsData_v4": "1 kb", "profileID": "14 b", "settings": "2.7 kb", "snapshots_v4": "4 kb", "tabsData_v4": "3.7 kb", "tabsMenu": "308 b", "tabsPanelMenu": "184 b" } }, "panels": [ { "type": "bookmarks", "id": "bookmarks", "cookieStoreId": "bookmarks", "name": 9, "icon": "...", "bookmarks": true, "lockedPanel": false, "skipOnSwitching": false }, { "type": "default", "id": "firefox-default", "name": 7, "icon": "...", "cookieStoreId": "firefox-default", "lockedTabs": false, "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true } ], "containers": [ { "id": "firefox-container-2", "name": 4, "icon": "...", "color": "...", "proxified": false, "proxy": "direct", "includeHostsActive": true, "includeHosts": 10, "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "" }, { "id": "firefox-container-3", "name": 7, "icon": "...", "color": "...", "proxified": false, "proxy": null, "includeHostsActive": false, "includeHosts": "", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "" }, { "id": "firefox-container-6", "name": 12, "icon": "...", "color": "...", "proxified": false, "proxy": null, "includeHostsActive": false, "includeHosts": "", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "" } ], "cssVars": "TypeError: can't convert undefined to object", "windows": [ { "state": "maximized", "incognito": false, "tabsCount": 11 }, { "state": "maximized", "incognito": false, "tabsCount": 19 } ], "tabsMenu": [ [ "undoRmTab", "mute", "reload", "bookmark" ], "separator-1", [ { "name": "Move to" }, "moveToNewWin", "moveToWin", "moveToPanel" ], [ { "name": "Reopen in" }, "reopenInNewWin", "reopenInWin", "reopenInCtr" ], "separator-2", "pin", "duplicate", "discard", "copyUrls", "separator-3", "group", "flatten", "separator-4", "clearCookies", "close" ], "bookmarksMenu": [ [ { "name": "Open in" }, "openInNewWin", "openInNewPrivWin", "openInCtr" ], "separator-5", "createBookmark", "createFolder", "createSeparator", "separator-6", "sortByName", "sortByLink", "sortByTime", "separator-7", "copyUrls", "edit", "delete" ], "bookmarks": { "bookmarksCount": 88, "foldersCount": 8, "separatorsCount": 1, "maxDepth": 2 } }
mbnuqw commented 3 years ago

I don't think this is a bug, because when you press the cmd+shift+left_click sidebery is receiving event for "cmd+shift+left_click", not middle_click, so everything works as intended.

I can add feature to handle cmd+shift+left as the middle click. Maybe even make it configurable... I'm just not sure if this should be made on sidebery side or it should be implemented globaly in OS.

nwg commented 3 years ago

Ah, ok. Ya, i inspected my mouse events with a modification to https://github.com/objective-see/sniffMK and Cmd-Shift-LMB does not appear to actually be sending a middle mouse event. I guess it is just a convention in apps such as Firefox and XQuartz. There are some tools to actually send a real middle mouse to applications.

Since it is a convention in Firefox on Mac OS X without any special application installed, i wonder if there is special support in firefox for plugins to receive this event and also if you maybe want to support it in sidebery.

Thanks

duhd1993 commented 11 months ago

@mbnuqw Mac does not have the concept of mid click. In most applications, cmd+left click does what the OP wants. Can you consider adding cmd+left click to open in new tab? Also requested in https://github.com/mbnuqw/sidebery/issues/573