From 2475cfb79cd6fb1241a04e459be59af58a9ce262 Mon Sep 17 00:00:00 2001 From: skomerko <168652295+skomerko@users.noreply.github.com> Date: Sat, 5 Oct 2024 09:21:39 +0200 Subject: [PATCH] WebUI: Add context menu to search tabs --- src/webui/www/private/scripts/search.js | 31 +++++++++++++++++++++---- src/webui/www/private/views/search.html | 4 ++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/webui/www/private/scripts/search.js b/src/webui/www/private/scripts/search.js index e8ac914bd73..1be4988016d 100644 --- a/src/webui/www/private/scripts/search.js +++ b/src/webui/www/private/scripts/search.js @@ -86,6 +86,25 @@ window.qBittorrent.Search ??= (() => { maxUnit: 3 }; + const searchResultsTabsContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({ + targets: ".searchTab", + menu: "searchResultsTabsMenu", + actions: { + closeTab: (tab) => { closeSearchTab(tab); }, + closeAllTabs: () => { + for (const tab of document.querySelectorAll("#searchTabs .searchTab")) + closeSearchTab(tab); + } + }, + offsets: { + x: -15, + y: -53 + }, + onShow: function() { + setActiveTab(this.options.element); + } + }); + const init = function() { // load "Search in" preference from local storage $("searchInTorrentName").value = (LocalPreferences.get("search_in_filter") === "names") ? "names" : "everywhere"; @@ -168,7 +187,7 @@ window.qBittorrent.Search ??= (() => { width: "8", height: "8", style: "padding-right: 7px; margin-bottom: -1px; margin-left: -5px", - onclick: "qBittorrent.Search.closeSearchTab(event, this);", + onclick: "qBittorrent.Search.closeSearchTab(this);", }); closeTabElem.inject(tabElem, "top"); @@ -176,13 +195,14 @@ window.qBittorrent.Search ??= (() => { const listItem = document.createElement("li"); listItem.id = newTabId; - listItem.classList.add("selected"); + listItem.classList.add("selected", "searchTab"); listItem.addEventListener("click", (e) => { setActiveTab(listItem); document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]"; }); listItem.appendChild(tabElem); $("searchTabs").appendChild(listItem); + searchResultsTabsContextMenu.addTarget(listItem); // unhide the results elements if (numSearchTabs() >= 1) { @@ -214,10 +234,11 @@ window.qBittorrent.Search ??= (() => { updateSearchResultsData(searchId); }; - const closeSearchTab = function(e, el) { - e.stopPropagation(); + const closeSearchTab = function(el) { + const tab = el.closest("li.searchTab"); + if (!tab) + return; - const tab = el.parentElement.parentElement; const searchId = getSearchIdFromTab(tab); const isTabSelected = tab.hasClass("selected"); const newTabToSelect = isTabSelected ? (tab.nextSibling || tab.previousSibling) : null; diff --git a/src/webui/www/private/views/search.html b/src/webui/www/private/views/search.html index ddc9ee86366..fe2976f5903 100644 --- a/src/webui/www/private/views/search.html +++ b/src/webui/www/private/views/search.html @@ -213,3 +213,7 @@ +