summaryrefslogtreecommitdiff
path: root/ext/bg/js
diff options
context:
space:
mode:
authorsiikamiika <siikamiika@users.noreply.github.com>2020-01-25 19:00:36 +0200
committersiikamiika <siikamiika@users.noreply.github.com>2020-02-09 21:51:33 +0200
commit939ad42dacfeff566497f3c2f8e9c64d59b8168d (patch)
tree7adced1abbaacc2ee64fcae92e317ef98ec9a817 /ext/bg/js
parentf29abfc5115b06281c18467d7cf7b43bf133da82 (diff)
add global clipboard monitor that spawns popups
TODO: refactor the search page clipboard monitor and popup clipboard monitor to use a common ClipboardMonitor class
Diffstat (limited to 'ext/bg/js')
-rw-r--r--ext/bg/js/backend.js17
-rw-r--r--ext/bg/js/options.js1
-rw-r--r--ext/bg/js/settings/main.js1
3 files changed, 19 insertions, 0 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index 3cb9ce1d..407dc965 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -34,6 +34,9 @@ class Backend {
this.clipboardPasteTarget = document.querySelector('#clipboard-paste-target');
this.popupWindow = null;
+ this.clipboardPopupTimerId = null;
+ this.clipboardInterval = 250;
+ this.clipboardPreviousText = null;
this.apiForwarder = new BackendApiForwarder();
}
@@ -122,6 +125,20 @@ class Backend {
} else {
this.mecab.stopListener();
}
+
+ window.clearInterval(this.clipboardPopupTimerId);
+ if (options.general.enableClipboardPopups) {
+ this.clipboardPopupTimerId = setInterval(() => {
+ this._onApiClipboardGet()
+ .then((result) => {
+ if (this.clipboardPreviousText === result) {
+ return;
+ }
+ this._onCommandSearch({mode: 'popup', query: result});
+ this.clipboardPreviousText = result;
+ });
+ }, this.clipboardInterval);
+ }
}
async getOptionsSchema() {
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index 78508059..97032660 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -266,6 +266,7 @@ function profileOptionsCreateDefaults() {
return {
general: {
enable: true,
+ enableClipboardPopups: false,
resultOutputMode: 'group',
debugInfo: false,
maxResults: 32,
diff --git a/ext/bg/js/settings/main.js b/ext/bg/js/settings/main.js
index 4492cd42..ad3459f0 100644
--- a/ext/bg/js/settings/main.js
+++ b/ext/bg/js/settings/main.js
@@ -28,6 +28,7 @@ function getOptionsFullMutable() {
async function formRead(options) {
options.general.enable = $('#enable').prop('checked');
+ options.general.enableClipboardPopups = $('#enable-clipboard-popups').prop('checked');
options.general.showGuide = $('#show-usage-guide').prop('checked');
options.general.compactTags = $('#compact-tags').prop('checked');
options.general.compactGlossaries = $('#compact-glossaries').prop('checked');