From d938e5fb6b94afed1a49a97c95ffbfd5058f74db Mon Sep 17 00:00:00 2001 From: Steve-Mcl Date: Fri, 12 Apr 2024 11:42:55 +0100 Subject: [PATCH 1/3] close tab on middle mouse click --- .../@node-red/editor-client/src/js/ui/common/tabs.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js index abb76e622..db3ee35bd 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js @@ -818,6 +818,13 @@ RED.tabs = (function() { link.on("mouseup",onTabClick); link.on("click", function(evt) { evt.preventDefault(); }) link.on("dblclick", function(evt) { evt.stopPropagation(); evt.preventDefault(); }) + // on middle click, close the tab + link.on("auxclick", function(evt) { + if (evt.which === 2) { + evt.preventDefault(); + removeTab(tab.id); + } + }); $('').appendTo(li); From 67e716466f782a098bb44a3c27176b544240a4d0 Mon Sep 17 00:00:00 2001 From: Steve-Mcl Date: Mon, 29 Apr 2024 20:14:45 +0100 Subject: [PATCH 2/3] handle middle click hide-tab in onclick handler --- .../editor-client/src/js/ui/common/tabs.js | 14 ++++++-------- .../editor-client/src/js/ui/workspaces.js | 14 ++++++++++---- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js index db3ee35bd..269b2f357 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js @@ -365,7 +365,10 @@ RED.tabs = (function() { var thisTabA = thisTab.find("a"); if (options.onclick) { - options.onclick(tabs[thisTabA.attr('href').slice(1)]); + options.onclick(tabs[thisTabA.attr('href').slice(1)], evt); + if (evt.isDefaultPrevented() && evt.isPropagationStopped()) { + return false + } } activateTab(thisTabA); if (fireSelectionChanged) { @@ -548,6 +551,7 @@ RED.tabs = (function() { ul.find("li.red-ui-tab a") .on("mousedown", function(evt) { mousedownTab = evt.currentTarget }) .on("mouseup",onTabClick) + .on("auxclick", function(evt) { evt.preventDefault() }) .on("click", function(evt) {evt.preventDefault(); }) .on("dblclick", function(evt) {evt.stopPropagation(); evt.preventDefault(); }) @@ -816,15 +820,9 @@ RED.tabs = (function() { } link.on("mousedown", function(evt) { mousedownTab = evt.currentTarget }) link.on("mouseup",onTabClick); + link.on("auxclick", function(evt) { evt.preventDefault() }) link.on("click", function(evt) { evt.preventDefault(); }) link.on("dblclick", function(evt) { evt.stopPropagation(); evt.preventDefault(); }) - // on middle click, close the tab - link.on("auxclick", function(evt) { - if (evt.which === 2) { - evt.preventDefault(); - removeTab(tab.id); - } - }); $('').appendTo(li); diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js b/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js index 57a9de470..48efb5e4a 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js @@ -359,11 +359,17 @@ RED.workspaces = (function() { RED.sidebar.config.refresh(); RED.view.focus(); }, - onclick: function(tab) { - if (tab.id !== activeWorkspace) { - addToViewStack(activeWorkspace); + onclick: function(tab, evt) { + if(evt.which === 2) { + evt.preventDefault(); + evt.stopPropagation(); + RED.actions.invoke("core:hide-flow", tab) + } else { + if (tab.id !== activeWorkspace) { + addToViewStack(activeWorkspace); + } + RED.view.focus(); } - RED.view.focus(); }, ondblclick: function(tab) { if (tab.type != "subflow") { From 22cc8da0885d75a164b80a5ecc46f2945c9fe5b4 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 3 May 2024 16:59:17 +0100 Subject: [PATCH 3/3] Apply suggestions from code review --- .../@node-red/editor-client/src/js/ui/common/tabs.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js index 269b2f357..d9dc4b289 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js @@ -551,6 +551,7 @@ RED.tabs = (function() { ul.find("li.red-ui-tab a") .on("mousedown", function(evt) { mousedownTab = evt.currentTarget }) .on("mouseup",onTabClick) + // prevent browser-default middle-click behaviour .on("auxclick", function(evt) { evt.preventDefault() }) .on("click", function(evt) {evt.preventDefault(); }) .on("dblclick", function(evt) {evt.stopPropagation(); evt.preventDefault(); }) @@ -820,6 +821,7 @@ RED.tabs = (function() { } link.on("mousedown", function(evt) { mousedownTab = evt.currentTarget }) link.on("mouseup",onTabClick); + // prevent browser-default middle-click behaviour link.on("auxclick", function(evt) { evt.preventDefault() }) link.on("click", function(evt) { evt.preventDefault(); }) link.on("dblclick", function(evt) { evt.stopPropagation(); evt.preventDefault(); })