diff --git a/README.md b/README.md
index b713c7c2..25621592 100644
--- a/README.md
+++ b/README.md
@@ -619,8 +619,6 @@ roughly sorted by priority
* ctrl-click overrides onclick (tree, ...)
* indicate dropped queries in search ui
* readme.md as epilogue
-* thx kip:
- * pause button for uploads
* reduce up2k roundtrips
* start from a chunk index and just go
* terminate client on bad data
diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js
index 7ce4b9c8..32fa4a21 100644
--- a/copyparty/web/browser.js
+++ b/copyparty/web/browser.js
@@ -78,7 +78,7 @@ ebi('op_up2k').innerHTML = (
'
\n' +
' \n' +
' –+ \n' +
' | \n' +
'
\n' +
diff --git a/copyparty/web/up2k.js b/copyparty/web/up2k.js
index 164d1e26..83914b01 100644
--- a/copyparty/web/up2k.js
+++ b/copyparty/web/up2k.js
@@ -1309,6 +1309,17 @@ function up2k_init(subtle) {
}
tt.init();
+ function bumpthread2(e) {
+ if (e.ctrlKey || e.altKey || e.metaKey || e.isComposing)
+ return;
+
+ if (e.code == 'ArrowUp')
+ bumpthread(1);
+
+ if (e.code == 'ArrowDown')
+ bumpthread(-1);
+ }
+
function bumpthread(dir) {
try {
dir.stopPropagation();
@@ -1319,7 +1330,7 @@ function up2k_init(subtle) {
if (dir.target) {
clmod(obj, 'err', 1);
var v = Math.floor(parseInt(obj.value));
- if (v < 1 || v > 64 || v !== v)
+ if (v < 0 || v > 64 || v !== v)
return;
parallel_uploads = v;
@@ -1330,8 +1341,8 @@ function up2k_init(subtle) {
parallel_uploads += dir;
- if (parallel_uploads < 1)
- parallel_uploads = 1;
+ if (parallel_uploads < 0)
+ parallel_uploads = 0;
if (parallel_uploads > 16)
parallel_uploads = 16;
@@ -1430,6 +1441,7 @@ function up2k_init(subtle) {
bumpthread(-1);
};
+ ebi('nthread').onkeydown = bumpthread2;
ebi('nthread').addEventListener('input', bumpthread, false);
ebi('multitask').addEventListener('click', tgl_multitask, false);
ebi('ask_up').addEventListener('click', tgl_ask_up, false);
@@ -1443,7 +1455,10 @@ function up2k_init(subtle) {
nodes[a].addEventListener('touchend', nop, false);
set_fsearch();
- bumpthread({ "target": 1 })
+ bumpthread({ "target": 1 });
+ if (parallel_uploads < 1)
+ bumpthread(1);
+
return { "init_deps": init_deps, "set_fsearch": set_fsearch }
}