diff --git a/enjoy/package.json b/enjoy/package.json index bfd2a45a..fb576315 100644 --- a/enjoy/package.json +++ b/enjoy/package.json @@ -125,6 +125,7 @@ "decamelize": "^6.0.0", "decamelize-keys": "^2.0.1", "echogarden": "^0.12.1", + "electron-context-menu": "^3.6.1", "electron-log": "^5.1.2", "electron-settings": "^4.0.2", "electron-squirrel-startup": "^1.0.0", diff --git a/enjoy/src/i18n/en.json b/enjoy/src/i18n/en.json index 30063255..ce46a4d2 100644 --- a/enjoy/src/i18n/en.json +++ b/enjoy/src/i18n/en.json @@ -368,6 +368,9 @@ "sending": "Sending", "sent": "Sent", "copy": "Copy", + "cut": "cut", + "paste": "paste", + "selectAll": "Select all", "copyText": "Copy text", "resend": "Resend", "anotherRequestIsPending": "Another request is pending", diff --git a/enjoy/src/i18n/zh-CN.json b/enjoy/src/i18n/zh-CN.json index d737ceb7..849bed73 100644 --- a/enjoy/src/i18n/zh-CN.json +++ b/enjoy/src/i18n/zh-CN.json @@ -367,6 +367,9 @@ "sending": "正在发送", "sent": "发送成功", "copy": "复制", + "cut": "剪切", + "paste": "粘贴", + "selectAll": "选择全部", "copyText": "复制文本", "resend": "重新发送", "anotherRequestIsPending": "另一个请求正在等待", diff --git a/enjoy/src/main.ts b/enjoy/src/main.ts index e2e06bec..f2e28acf 100644 --- a/enjoy/src/main.ts +++ b/enjoy/src/main.ts @@ -4,9 +4,28 @@ import settings from "@main/settings"; import "@main/i18n"; import mainWindow from "@main/window"; import ElectronSquirrelStartup from "electron-squirrel-startup"; +import contextMenu from "electron-context-menu"; +import { t } from "i18next"; app.commandLine.appendSwitch("enable-features", "SharedArrayBuffer"); +// Add context menu +contextMenu({ + showSearchWithGoogle: false, + showInspectElement: false, + showLookUpSelection: false, + showLearnSpelling: false, + labels: { + copy: t("copy"), + cut: t("cut"), + paste: t("paste"), + selectAll: t("selectAll"), + }, + shouldShowMenu: (_event, params) => { + return params.isEditable; + }, +}); + // Handle creating/removing shortcuts on Windows when installing/uninstalling. if (ElectronSquirrelStartup) { app.quit(); diff --git a/enjoy/src/main/window.ts b/enjoy/src/main/window.ts index fc6626c0..91df82df 100644 --- a/enjoy/src/main/window.ts +++ b/enjoy/src/main/window.ts @@ -443,6 +443,7 @@ ${log} minHeight: 900, webPreferences: { preload: path.join(__dirname, "preload.js"), + spellcheck: false, }, }); diff --git a/yarn.lock b/yarn.lock index 22403d9e..7e53c37c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8576,6 +8576,28 @@ __metadata: languageName: node linkType: hard +"electron-context-menu@npm:^3.6.1": + version: 3.6.1 + resolution: "electron-context-menu@npm:3.6.1" + dependencies: + cli-truncate: "npm:^2.1.0" + electron-dl: "npm:^3.2.1" + electron-is-dev: "npm:^2.0.0" + checksum: 10c0/f08d60c06e19aa68a4c643275367d3343df636d3595df8982f1d593837cf7f304952e5508e1bff99734b24927a9b98d8beeec15d3eb3ea00df204e706341cd1e + languageName: node + linkType: hard + +"electron-dl@npm:^3.2.1": + version: 3.5.2 + resolution: "electron-dl@npm:3.5.2" + dependencies: + ext-name: "npm:^5.0.0" + pupa: "npm:^2.0.1" + unused-filename: "npm:^2.1.0" + checksum: 10c0/1141188c66b187917050cca1954d2abc9922b6687efc81d85a4e9c8c14948a64791c338d9713f48133666db71fd464113d4661e886ed92f2f469eda5c6eaafa1 + languageName: node + linkType: hard + "electron-installer-common@npm:^0.10.2": version: 0.10.3 resolution: "electron-installer-common@npm:0.10.3" @@ -8648,6 +8670,13 @@ __metadata: languageName: node linkType: hard +"electron-is-dev@npm:^2.0.0": + version: 2.0.0 + resolution: "electron-is-dev@npm:2.0.0" + checksum: 10c0/aa540115f144f9c8c788e13fc581be7b0f9f83422eecb940af6367c67d63c3a656e03ad9c1138f17bcfbafc9edca8b83f655feff24dead2cc4866169c6e565f9 + languageName: node + linkType: hard + "electron-log@npm:^5.1.2": version: 5.1.2 resolution: "electron-log@npm:5.1.2" @@ -8874,6 +8903,7 @@ __metadata: decamelize-keys: "npm:^2.0.1" echogarden: "npm:^0.12.1" electron: "npm:^29.1.4" + electron-context-menu: "npm:^3.6.1" electron-log: "npm:^5.1.2" electron-playwright-helpers: "npm:^1.7.1" electron-settings: "npm:^4.0.2" @@ -9168,6 +9198,13 @@ __metadata: languageName: node linkType: hard +"escape-goat@npm:^2.0.0": + version: 2.1.1 + resolution: "escape-goat@npm:2.1.1" + checksum: 10c0/fc0ad656f89c05e86a9641a21bdc5ea37b258714c057430b68a834854fa3e5770cda7d41756108863fc68b1e36a0946463017b7553ac39eaaf64815be07816fc + languageName: node + linkType: hard + "escape-goat@npm:^3.0.0": version: 3.0.0 resolution: "escape-goat@npm:3.0.0" @@ -9559,6 +9596,25 @@ __metadata: languageName: node linkType: hard +"ext-list@npm:^2.0.0": + version: 2.2.2 + resolution: "ext-list@npm:2.2.2" + dependencies: + mime-db: "npm:^1.28.0" + checksum: 10c0/bfdb435f333dccbf3f9698dc9d8e38eb47b42d756800bfafa9ec0c1c8aace877c40095baf36f691bcfd09bb88ed247c6e51596e75a158280fa19cf8588a7e258 + languageName: node + linkType: hard + +"ext-name@npm:^5.0.0": + version: 5.0.0 + resolution: "ext-name@npm:5.0.0" + dependencies: + ext-list: "npm:^2.0.0" + sort-keys-length: "npm:^1.0.0" + checksum: 10c0/6750b34636bb6dca78e1bcc797615af68ecf50d62cf774624a32ee7879da99c949b5c41e8aa56ede4eb15c6abad6b1a8858d0934faab75ff6e2fd6f408debe18 + languageName: node + linkType: hard + "extend@npm:^3.0.0, extend@npm:^3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -11280,7 +11336,7 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^1.1.0": +"is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" checksum: 10c0/daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c @@ -13288,7 +13344,7 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0": +"mime-db@npm:1.52.0, mime-db@npm:^1.28.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa @@ -13612,6 +13668,13 @@ __metadata: languageName: node linkType: hard +"modify-filename@npm:^1.1.0": + version: 1.1.0 + resolution: "modify-filename@npm:1.1.0" + checksum: 10c0/9f98b69aa1ecdeae81a31917dc32da3259d3ec2f4519491de0b390abc81cd96388ab5778c4e18b83b2a9d9812382314184699693072bb42ead81cc1d94b82502 + languageName: node + linkType: hard + "moment-timezone@npm:^0.5.43": version: 0.5.45 resolution: "moment-timezone@npm:0.5.45" @@ -15019,6 +15082,15 @@ __metadata: languageName: node linkType: hard +"pupa@npm:^2.0.1": + version: 2.1.1 + resolution: "pupa@npm:2.1.1" + dependencies: + escape-goat: "npm:^2.0.0" + checksum: 10c0/d2346324780ebae4be847cad052b830e004d816851dd4750fc73faa6cd360f443e358f6b1c83641fd4c904c6055dcb545807f55259a20a52ad86d9477746c724 + languageName: node + linkType: hard + "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -16219,6 +16291,24 @@ __metadata: languageName: node linkType: hard +"sort-keys-length@npm:^1.0.0": + version: 1.0.1 + resolution: "sort-keys-length@npm:1.0.1" + dependencies: + sort-keys: "npm:^1.0.0" + checksum: 10c0/4567d08aa859c7e48b7e2cba14a8ae09a100f6a3bd7cf5d21dccd808d6332c945b9a7e2230a95c16e0e6eac1a943cd050ae51a5d1b4c8ec4b1e89a5801be9aa2 + languageName: node + linkType: hard + +"sort-keys@npm:^1.0.0": + version: 1.1.2 + resolution: "sort-keys@npm:1.1.2" + dependencies: + is-plain-obj: "npm:^1.0.0" + checksum: 10c0/5dd383b0299a40277051f7498c3999520138e2eb50d422962f658738341c9e82349fad4a3024d5ba1a3122688fbaf958f2a472d4c53bade55515097c2ce15420 + languageName: node + linkType: hard + "source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" @@ -17443,6 +17533,16 @@ __metadata: languageName: node linkType: hard +"unused-filename@npm:^2.1.0": + version: 2.1.0 + resolution: "unused-filename@npm:2.1.0" + dependencies: + modify-filename: "npm:^1.1.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/db2eeb8e42e3198203eefb290c4127dc7f10fc18fd6f877e80cbcd3f04123fe03337096b74f457221d2dd772531816cf9d55a664d54798d8da12d6225cfcad70 + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.13": version: 1.0.13 resolution: "update-browserslist-db@npm:1.0.13"