From ad70f23a05c061068f2ac449bf06d10079626e99 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sat, 29 Mar 2025 13:02:02 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=86=85=E7=BD=AE?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/electron-menu.js | 128 +++++++++++------- electron/electron.js | 4 +- electron/render/tabs/assets/css/style.css | 39 +----- .../tabs/assets/image/dark/select_left.png | Bin 205 -> 0 bytes .../tabs/assets/image/dark/select_right.png | Bin 219 -> 0 bytes .../render/tabs/assets/image/select_left.png | Bin 235 -> 0 bytes .../render/tabs/assets/image/select_right.png | Bin 236 -> 0 bytes resources/assets/js/App.vue | 5 + 8 files changed, 90 insertions(+), 86 deletions(-) delete mode 100644 electron/render/tabs/assets/image/dark/select_left.png delete mode 100644 electron/render/tabs/assets/image/dark/select_right.png delete mode 100644 electron/render/tabs/assets/image/select_left.png delete mode 100644 electron/render/tabs/assets/image/select_right.png diff --git a/electron/electron-menu.js b/electron/electron-menu.js index ccaf181fd..bbf3fa922 100644 --- a/electron/electron-menu.js +++ b/electron/electron-menu.js @@ -17,6 +17,11 @@ const PERMITTED_URL_SCHEMES = ["http:", "https:", MAILTO_PREFIX]; const electronMenu = { language: { + copy: "复制", + back: "后退", + forward: "前进", + reload: "重新加载", + print: "打印", openInBrowser: "在浏览器中打开", saveImageAs: "图片存储为...", copyImage: "复制图片", @@ -116,77 +121,100 @@ const electronMenu = { } }, - webContentsMenu(webContents) { + webContentsMenu(webContents, isBrowser = false) { webContents.on("context-menu", function (e, params) { + const popupMenu = new Menu(); if (params.linkURL || params.srcURL) { const url = params.linkURL || params.srcURL; - const popupMenu = new Menu(); if (!electronMenu.isBlobOrDataUrl(url) && !utils.isLocalAssetPath(url)) { - popupMenu.append( - new MenuItem({ - label: electronMenu.language.openInBrowser, - accelerator: "o", - click() { - electronMenu.safeOpenURL(url); - }, - }), - ); + popupMenu.append(new MenuItem({ + label: electronMenu.language.openInBrowser, + click: async function () { + electronMenu.safeOpenURL(url); + }, + })); } if (params.hasImageContents) { if (!electronMenu.isBlob(url)) { - popupMenu.append( - new MenuItem({ - label: electronMenu.language.saveImageAs, - accelerator: "s", - click: async function () { - await electronMenu.saveImageAs(url, params); - }, - }), - ); - } - popupMenu.append( - new MenuItem({ - label: electronMenu.language.copyImage, - accelerator: "c", - click() { - webContents.copyImageAt(params.x, params.y); + popupMenu.append(new MenuItem({ + label: electronMenu.language.saveImageAs, + click: async function () { + await electronMenu.saveImageAs(url, params); }, - }), - ); + })); + } + popupMenu.append(new MenuItem({ + label: electronMenu.language.copyImage, + click: async function () { + webContents.copyImageAt(params.x, params.y); + }, + })); } if (!electronMenu.isBlobOrDataUrl(url)) { if (url.startsWith(MAILTO_PREFIX)) { - popupMenu.append( - new MenuItem({ - label: electronMenu.language.copyEmailAddress, - accelerator: "a", - click() { - clipboard.writeText(url.substring(MAILTO_PREFIX.length)); - }, - }), - ); + popupMenu.append(new MenuItem({ + label: electronMenu.language.copyEmailAddress, + click: async function () { + clipboard.writeText(url.substring(MAILTO_PREFIX.length)); + }, + })); } else if (!utils.isLocalAssetPath(url)) { - popupMenu.append( - new MenuItem({ - label: params.hasImageContents ? electronMenu.language.copyImageAddress : electronMenu.language.copyLinkAddress, - accelerator: "a", - click() { - clipboard.writeText(url); - }, - }), - ); + popupMenu.append(new MenuItem({ + label: params.hasImageContents ? electronMenu.language.copyImageAddress : electronMenu.language.copyLinkAddress, + click: async function () { + clipboard.writeText(url); + }, + })); } } + } + if (isBrowser) { if (popupMenu.items.length > 0) { - popupMenu.popup({}); - e.preventDefault(); + popupMenu.insert(0, new MenuItem({type: 'separator'})) } + + popupMenu.insert(0, new MenuItem({ + label: electronMenu.language.print, + click: () => webContents.print() + })) + + popupMenu.insert(0, new MenuItem({ + label: electronMenu.language.reload, + click: () => webContents.reload() + })) + + popupMenu.insert(0, new MenuItem({ + label: electronMenu.language.forward, + enabled: webContents.navigationHistory.canGoForward(), + click: () => webContents.navigationHistory.goForward() + })) + + popupMenu.insert(0, new MenuItem({ + label: electronMenu.language.back, + enabled: webContents.navigationHistory.canGoBack(), + click: () => webContents.navigationHistory.goBack() + })) + } + + if (params.selectionText) { + if (popupMenu.items.length > 0) { + popupMenu.insert(0, new MenuItem({type: 'separator'})) + } + popupMenu.insert(0, new MenuItem({ + label: electronMenu.language.copy, + role: 'copy' + })) + } + + if (popupMenu.items.length > 0) { + popupMenu.popup({}); + e.preventDefault(); } }) - } + }, } module.exports = electronMenu; diff --git a/electron/electron.js b/electron/electron.js index ccb4a12a6..ddbe79bcd 100644 --- a/electron/electron.js +++ b/electron/electron.js @@ -58,7 +58,7 @@ let childWindow = [], mediaType = null, webTabWindow = null, webTabView = [], - webTabHeight = 38; + webTabHeight = 40; let showState = {}, onShowWindow = (win) => { @@ -750,6 +750,8 @@ function createWebTabWindow(args) { const originalUA = browserView.webContents.session.getUserAgent() || browserView.webContents.getUserAgent() browserView.webContents.setUserAgent(originalUA + " SubTaskWindow/" + process.platform + "/" + os.arch() + "/1.0"); + electronMenu.webContentsMenu(browserView.webContents, true) + browserView.webContents.loadURL(args.url).then(_ => { }).catch(_ => { }) webTabWindow.addBrowserView(browserView) diff --git a/electron/render/tabs/assets/css/style.css b/electron/render/tabs/assets/css/style.css index addb93c6a..5f5dc480a 100644 --- a/electron/render/tabs/assets/css/style.css +++ b/electron/render/tabs/assets/css/style.css @@ -35,8 +35,8 @@ html, body { .nav ul { display: flex; - height: 30px; - margin: 8px 46px 0 0; + height: 35px; + margin: 5px 46px 0 0; user-select: none; overflow-x: auto; overflow-y: hidden; @@ -51,7 +51,7 @@ html, body { position: relative; box-sizing: border-box; align-items: center; - height: 100%; + height: calc(100% - 5px); padding: 7px 8px; margin: 0 8px 0 0; min-width: 100px; @@ -73,31 +73,7 @@ html, body { .nav ul li.active { color: var(--tab-active-color); background: var(--tab-active-background); - border-radius: 6px 6px 0 0; -} - -.nav ul li.active::before { - position: absolute; - bottom: 0; - left: -6px; - width: 6px; - height: 6px; - background-image: url(../image/select_left.png); - background-repeat: no-repeat; - background-size: cover; - content: ''; -} - -.nav ul li.active::after { - position: absolute; - right: -6px; - bottom: 0; - width: 6px; - height: 6px; - background-image: url(../image/select_right.png); - background-repeat: no-repeat; - background-size: cover; - content: ''; + border-radius: 4px; } .nav ul li.active .tab-icon.background { @@ -247,13 +223,6 @@ body.darwin.full-screen .nav ul { --tab-active-background: #575757; --tab-close-color: #E3E3E3; } - .nav ul li.active::before { - background-image: url(../image/dark/select_left.png); - } - - .nav ul li.active::after { - background-image: url(../image/dark/select_right.png); - } .nav ul li.active .tab-icon.background { background-image: url(../image/dark/link_normal_selected_icon.png); diff --git a/electron/render/tabs/assets/image/dark/select_left.png b/electron/render/tabs/assets/image/dark/select_left.png deleted file mode 100644 index 8edc1417c697d64f55bfc7b38c093e6dc540778f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@RheDV{ElAr`&K5+MpUHZcvIUVK3k zC2W=frxohEc)9rb%@>48JZ}v-rS)0|oL&mR)iEYQT1rt+lB>Ar`%BFCFA$G8ACF@IEYo zGrCDNhh6S}p!WvmjV#(1UfXA~C$UBynwG$R>VV#fK84?t>pf?1_N(x$YJIY)?JC0x zw$hbZPOC#q7nZJ?72v(;N9EZKc|pfpwyE5{V!GgjW~uKA<(=N@JQ|zSGkXt()OhDv(*6a4)n|TgWgTe~DWM4f!LC*E diff --git a/electron/render/tabs/assets/image/select_left.png b/electron/render/tabs/assets/image/select_left.png deleted file mode 100644 index 2a77b74259a64cb97648ca866908951529ec6efd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|&H|6fVg?393lL^>oo1K-6l5$8 za(7}_cTVOdki(Mh=*(!J5M(-b7~x? bM*^$(-Jg46x6TR!x`n~h)z4*}Q$iB}C%R1W diff --git a/electron/render/tabs/assets/image/select_right.png b/electron/render/tabs/assets/image/select_right.png deleted file mode 100644 index 8902845f8012567febef2c629d47e24571fadc4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|&H|6fVg?393lL^>oo1K-6l5$8 za(7}_cTVOdki(Mh=CA4J;}TShy_? zG4XMD9bmMO*tU=}-MPQ^a^JkeAnJv7}T*#)Opx+1)WV zp(hG8r6x9)%LdtYg?Zj8e{g$_iGE$T{^I*mrpEtXH|HHM*mmK!z_ED_b6kx))V9a> b7~bY{Tlc+tNm!RU&@l|2u6{1-oD!M