Maximum clipboard search length (#1118)
* Add maximumClipboardSearchLength an option * Add setting * Add limits * Update tests
This commit is contained in:
parent
bf34905012
commit
c728448a4d
@ -108,7 +108,8 @@
|
|||||||
"showIframePopupsInRootFrame",
|
"showIframePopupsInRootFrame",
|
||||||
"useSecurePopupFrameUrl",
|
"useSecurePopupFrameUrl",
|
||||||
"usePopupShadowDom",
|
"usePopupShadowDom",
|
||||||
"usePopupWindow"
|
"usePopupWindow",
|
||||||
|
"maximumClipboardSearchLength"
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"enable": {
|
"enable": {
|
||||||
@ -259,6 +260,11 @@
|
|||||||
"usePopupWindow": {
|
"usePopupWindow": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
|
},
|
||||||
|
"maximumClipboardSearchLength": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 1000,
|
||||||
|
"minimum": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -240,6 +240,10 @@ class Backend {
|
|||||||
// Event handlers
|
// Event handlers
|
||||||
|
|
||||||
async _onClipboardTextChange({text}) {
|
async _onClipboardTextChange({text}) {
|
||||||
|
const {general: {maximumClipboardSearchLength}} = this.getOptions({current: true});
|
||||||
|
if (text.length > maximumClipboardSearchLength) {
|
||||||
|
text = text.substring(0, maximumClipboardSearchLength);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const {tab, created} = await this._getOrCreateSearchPopup();
|
const {tab, created} = await this._getOrCreateSearchPopup();
|
||||||
await this._focusTab(tab);
|
await this._focusTab(tab);
|
||||||
|
@ -481,6 +481,10 @@ class OptionsUtil {
|
|||||||
{
|
{
|
||||||
async: true,
|
async: true,
|
||||||
update: this._updateVersion6.bind(this)
|
update: this._updateVersion6.bind(this)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
async: false,
|
||||||
|
update: this._updateVersion7.bind(this)
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -654,4 +658,13 @@ class OptionsUtil {
|
|||||||
templates = templates.replace(/\bcompactGlossaries=((?:\.*\/)*)compactGlossaries\b/g, (g0, g1) => `${g0} data=${g1}.`);
|
templates = templates.replace(/\bcompactGlossaries=((?:\.*\/)*)compactGlossaries\b/g, (g0, g1) => `${g0} data=${g1}.`);
|
||||||
return templates;
|
return templates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_updateVersion7(options) {
|
||||||
|
// Version 7 changes:
|
||||||
|
// Added general.maximumClipboardSearchLength.
|
||||||
|
for (const profile of options.profiles) {
|
||||||
|
profile.options.general.maximumClipboardSearchLength = 1000;
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -197,6 +197,10 @@ class DisplaySearch extends Display {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_onExternalSearchUpdate({text, animate=true}) {
|
_onExternalSearchUpdate({text, animate=true}) {
|
||||||
|
const {general: {maximumClipboardSearchLength}} = this.getOptions();
|
||||||
|
if (text.length > maximumClipboardSearchLength) {
|
||||||
|
text = text.substring(0, maximumClipboardSearchLength);
|
||||||
|
}
|
||||||
this._queryInput.value = text;
|
this._queryInput.value = text;
|
||||||
this._search(animate, false);
|
this._search(animate, false);
|
||||||
}
|
}
|
||||||
|
@ -399,6 +399,15 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="settings-item advanced-only"><div class="settings-item-inner">
|
||||||
|
<div class="settings-item-left">
|
||||||
|
<div class="settings-item-label">Maximum clipboard text search length</div>
|
||||||
|
<div class="settings-item-description">Limit the number of text characters used when searching clipboard content.</div>
|
||||||
|
</div>
|
||||||
|
<div class="settings-item-right">
|
||||||
|
<input type="number" min="0" step="1" data-setting="general.maximumClipboardSearchLength">
|
||||||
|
</div>
|
||||||
|
</div></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2 id="popup-appearance">Popup Appearance</h2>
|
<h2 id="popup-appearance">Popup Appearance</h2>
|
||||||
|
@ -292,7 +292,8 @@ function createProfileOptionsUpdatedTestData1() {
|
|||||||
showIframePopupsInRootFrame: false,
|
showIframePopupsInRootFrame: false,
|
||||||
useSecurePopupFrameUrl: true,
|
useSecurePopupFrameUrl: true,
|
||||||
usePopupShadowDom: true,
|
usePopupShadowDom: true,
|
||||||
usePopupWindow: false
|
usePopupWindow: false,
|
||||||
|
maximumClipboardSearchLength: 1000
|
||||||
},
|
},
|
||||||
audio: {
|
audio: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
@ -498,7 +499,7 @@ function createOptionsUpdatedTestData1() {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
profileCurrent: 0,
|
profileCurrent: 0,
|
||||||
version: 6,
|
version: 7,
|
||||||
global: {
|
global: {
|
||||||
database: {
|
database: {
|
||||||
prefixWildcardsSupported: false
|
prefixWildcardsSupported: false
|
||||||
|
Loading…
Reference in New Issue
Block a user