Skip to content

Commit 0ed165a

Browse files
committed
remove electron-context-menu dep and do lightweight context menus directly
1 parent 1afbf38 commit 0ed165a

File tree

7 files changed

+59
-90
lines changed

7 files changed

+59
-90
lines changed

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"compile": "electron-webpack"
2727
},
2828
"dependencies": {
29-
"electron-context-menu": "^0.15.0",
3029
"electron-unhandled": "^3.0.0",
3130
"node-exiftool": "^2.3.0",
3231
"source-map-support": "^0.5.19",

src/main/context_menu.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { app, Menu, MenuItem, BrowserWindow } from "electron";
2+
3+
function menu(canCopy: boolean): Menu {
4+
const menu = new Menu();
5+
6+
if (canCopy) {
7+
menu.append(
8+
new MenuItem({
9+
label: "Copy",
10+
role: "copy",
11+
visible: canCopy,
12+
enabled: canCopy
13+
})
14+
);
15+
}
16+
menu.append(new MenuItem({ label: "Select All", role: "selectAll" }));
17+
return menu;
18+
}
19+
20+
export function setupContextMenu(): void {
21+
app.on("browser-window-created", (event: Event, win: BrowserWindow) => {
22+
win.webContents.on(
23+
"context-menu",
24+
(_event: Event, params: Electron.ContextMenuParams) => {
25+
const isTextSelected = params.selectionText.trim().length > 0;
26+
menu(params.editFlags.canCopy && isTextSelected).popup();
27+
}
28+
);
29+
});
30+
}

src/main/init.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { app, BrowserWindow } from "electron";
2-
import contextMenu from "electron-context-menu";
2+
import { setupContextMenu } from "./context_menu";
33
import unhandled from "electron-unhandled";
44

55
import packageJson from "../../package.json";
@@ -10,12 +10,6 @@ function setupErrorHandling(): void {
1010
unhandled();
1111
}
1212

13-
// context menu (copy/paste/etc)
14-
function setupContextMenu(): void {
15-
// TODO: manually build this out and remove electron-context-menu
16-
contextMenu();
17-
}
18-
1913
function setupUserModelId(): void {
2014
app.setAppUserModelId(packageJson.build.appId);
2115
}

src/renderer/drag.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,6 @@ function respondToDragOverEvent(event: DragEvent): void {
1818
event.stopPropagation();
1919
}
2020

21-
document.addEventListener("drop", event => {
22-
respondToDropEvent(event);
23-
});
24-
25-
document.addEventListener("dragover", event => {
26-
respondToDragOverEvent(event);
27-
});
28-
2921
function filePaths({ fileList }: { fileList: FileList }): string[] {
3022
let paths = [];
3123
for (const file of fileList) {
@@ -34,3 +26,13 @@ function filePaths({ fileList }: { fileList: FileList }): string[] {
3426

3527
return paths;
3628
}
29+
30+
export function setupDragAndDrop() {
31+
document.addEventListener("drop", event => {
32+
respondToDropEvent(event);
33+
});
34+
35+
document.addEventListener("dragover", event => {
36+
respondToDragOverEvent(event);
37+
});
38+
}

src/renderer/index.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,16 @@ if (isDev && module.hot) {
1010
import "../styles/index.scss";
1111

1212
// app
13-
require("../renderer/drag");
14-
require("../renderer/menu_select_files");
13+
import { setupDragAndDrop } from "./drag";
14+
import { setupSelectFilesMenu } from "./menu_select_files";
1515

16-
// SETUP ERROR HANDLING
17-
unhandled();
16+
function setup() {
17+
// setup app
18+
setupDragAndDrop();
19+
setupSelectFilesMenu();
20+
21+
// report unhandled errors
22+
unhandled();
23+
}
24+
25+
setup();

src/renderer/menu_select_files.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { ipcRenderer } from "electron";
22
import { selectFiles } from "./select_files";
33
import { EVENT_FILE_OPEN_ADD_FILES } from "../main/menu_file_open";
44

5-
ipcRenderer.on(EVENT_FILE_OPEN_ADD_FILES, (event, filePaths) => {
6-
selectFiles({ filePaths: filePaths });
7-
});
5+
export function setupSelectFilesMenu() {
6+
ipcRenderer.on(EVENT_FILE_OPEN_ADD_FILES, (event, filePaths) => {
7+
selectFiles({ filePaths: filePaths });
8+
});
9+
}

yarn.lock

Lines changed: 1 addition & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,14 +2171,6 @@ cli-truncate@^0.2.1:
21712171
slice-ansi "0.0.4"
21722172
string-width "^1.0.1"
21732173

2174-
cli-truncate@^2.0.0:
2175-
version "2.0.0"
2176-
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.0.0.tgz#68ff6aaa53b203b52ad89b8b1a80f1f61ad1e1d5"
2177-
integrity sha512-C4hp+8GCIFVsUUiXcw+ce+7wexVWImw8rQrgMBFsqerx9LvvcGlwm6sMjQYAEmV/Xb87xc1b5Ttx505MSpZVqg==
2178-
dependencies:
2179-
slice-ansi "^2.1.0"
2180-
string-width "^4.1.0"
2181-
21822174
cli-width@^2.0.0:
21832175
version "2.2.0"
21842176
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
@@ -3024,15 +3016,6 @@ electron-builder@^22.2.0:
30243016
update-notifier "^3.0.1"
30253017
yargs "^15.0.2"
30263018

3027-
electron-context-menu@^0.15.0:
3028-
version "0.15.1"
3029-
resolved "https://registry.yarnpkg.com/electron-context-menu/-/electron-context-menu-0.15.1.tgz#30d776ff889f220de688bde762870d5fcf9c83c2"
3030-
integrity sha512-+uiTR8c/GKT1D4jxkV5GGEuAJz+RJGFJmdCXD3yIzhQ6BwpjEC99F9DqJJfTzHK1P3R5sxiZ7qoSNvg/3dBgzw==
3031-
dependencies:
3032-
cli-truncate "^2.0.0"
3033-
electron-dl "^1.2.0"
3034-
electron-is-dev "^1.0.1"
3035-
30363019
electron-devtools-installer@^2.2.4:
30373020
version "2.2.4"
30383021
resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz#261a50337e37121d338b966f07922eb4939a8763"
@@ -3043,15 +3026,6 @@ electron-devtools-installer@^2.2.4:
30433026
rimraf "^2.5.2"
30443027
semver "^5.3.0"
30453028

3046-
electron-dl@^1.2.0:
3047-
version "1.14.0"
3048-
resolved "https://registry.yarnpkg.com/electron-dl/-/electron-dl-1.14.0.tgz#1466f1b945664ca3d784268307c2b935728177bf"
3049-
integrity sha512-4okyei42a1mLsvLK7hLrIfd20EQzB18nIlLTwBV992aMSmTGLUEFRTmO1MfSslGNrzD8nuPuy1l/VxO8so4lig==
3050-
dependencies:
3051-
ext-name "^5.0.0"
3052-
pupa "^1.0.0"
3053-
unused-filename "^1.0.0"
3054-
30553029
electron-is-dev@^1.0.1:
30563030
version "1.1.0"
30573031
resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.1.0.tgz#b15a2a600bdc48a51a857d460e05f15b19a2522c"
@@ -3757,21 +3731,6 @@ express@^4.17.1:
37573731
utils-merge "1.0.1"
37583732
vary "~1.1.2"
37593733

3760-
ext-list@^2.0.0:
3761-
version "2.2.2"
3762-
resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37"
3763-
integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==
3764-
dependencies:
3765-
mime-db "^1.28.0"
3766-
3767-
ext-name@^5.0.0:
3768-
version "5.0.0"
3769-
resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6"
3770-
integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==
3771-
dependencies:
3772-
ext-list "^2.0.0"
3773-
sort-keys-length "^1.0.0"
3774-
37753734
extend-shallow@^2.0.1:
37763735
version "2.0.1"
37773736
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
@@ -6130,7 +6089,7 @@ miller-rabin@^4.0.0:
61306089
bn.js "^4.0.0"
61316090
brorand "^1.0.1"
61326091

6133-
[email protected], mime-db@^1.28.0:
6092+
61346093
version "1.42.0"
61356094
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac"
61366095
integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==
@@ -6295,11 +6254,6 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3:
62956254
dependencies:
62966255
minimist "^1.2.5"
62976256

6298-
modify-filename@^1.1.0:
6299-
version "1.1.0"
6300-
resolved "https://registry.yarnpkg.com/modify-filename/-/modify-filename-1.1.0.tgz#9a2dec83806fbb2d975f22beec859ca26b393aa1"
6301-
integrity sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=
6302-
63036257
move-concurrently@^1.0.1:
63046258
version "1.0.1"
63056259
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@@ -7478,11 +7432,6 @@ punycode@^2.1.0:
74787432
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
74797433
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
74807434

7481-
pupa@^1.0.0:
7482-
version "1.0.0"
7483-
resolved "https://registry.yarnpkg.com/pupa/-/pupa-1.0.0.tgz#9a9568a5af7e657b8462a6e9d5328743560ceff6"
7484-
integrity sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y=
7485-
74867435
74877436
version "6.7.0"
74887437
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
@@ -8423,13 +8372,6 @@ [email protected]:
84238372
faye-websocket "^0.10.0"
84248373
uuid "^3.0.1"
84258374

8426-
sort-keys-length@^1.0.0:
8427-
version "1.0.1"
8428-
resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188"
8429-
integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=
8430-
dependencies:
8431-
sort-keys "^1.0.0"
8432-
84338375
sort-keys@^1.0.0:
84348376
version "1.1.2"
84358377
resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
@@ -9277,14 +9219,6 @@ unset-value@^1.0.0:
92779219
has-value "^0.3.1"
92789220
isobject "^3.0.0"
92799221

9280-
unused-filename@^1.0.0:
9281-
version "1.0.0"
9282-
resolved "https://registry.yarnpkg.com/unused-filename/-/unused-filename-1.0.0.tgz#d340880f71ae2115ebaa1325bef05cc6684469c6"
9283-
integrity sha1-00CID3GuIRXrqhMlvvBcxmhEacY=
9284-
dependencies:
9285-
modify-filename "^1.1.0"
9286-
path-exists "^3.0.0"
9287-
92889222
upath@^1.1.1:
92899223
version "1.2.0"
92909224
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"

0 commit comments

Comments
 (0)