commit
a4d2bde5df
@ -145,7 +145,7 @@ class Frontend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onResize() {
|
onResize() {
|
||||||
this.searchClear(true);
|
this.searchClear(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
onClick(e) {
|
onClick(e) {
|
||||||
@ -527,8 +527,8 @@ Frontend.runtimeMessageHandlers = {
|
|||||||
self.updateOptions();
|
self.updateOptions();
|
||||||
},
|
},
|
||||||
|
|
||||||
popupSetVisible: (self, {visible}) => {
|
popupSetVisibleOverride: (self, {visible}) => {
|
||||||
self.popup.setVisible(visible);
|
self.popup.setVisibleOverride(visible);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ class PopupProxyHost {
|
|||||||
show: ({id, elementRect, options}) => this.show(id, elementRect, options),
|
show: ({id, elementRect, options}) => this.show(id, elementRect, options),
|
||||||
showOrphaned: ({id, elementRect, options}) => this.show(id, elementRect, options),
|
showOrphaned: ({id, elementRect, options}) => this.show(id, elementRect, options),
|
||||||
hide: ({id, changeFocus}) => this.hide(id, changeFocus),
|
hide: ({id, changeFocus}) => this.hide(id, changeFocus),
|
||||||
setVisible: ({id, visible}) => this.setVisible(id, visible),
|
setVisibleOverride: ({id, visible}) => this.setVisibleOverride(id, visible),
|
||||||
containsPoint: ({id, x, y}) => this.containsPoint(id, x, y),
|
containsPoint: ({id, x, y}) => this.containsPoint(id, x, y),
|
||||||
termsShow: ({id, elementRect, writingMode, definitions, options, context}) => this.termsShow(id, elementRect, writingMode, definitions, options, context),
|
termsShow: ({id, elementRect, writingMode, definitions, options, context}) => this.termsShow(id, elementRect, writingMode, definitions, options, context),
|
||||||
kanjiShow: ({id, elementRect, writingMode, definitions, options, context}) => this.kanjiShow(id, elementRect, writingMode, definitions, options, context),
|
kanjiShow: ({id, elementRect, writingMode, definitions, options, context}) => this.kanjiShow(id, elementRect, writingMode, definitions, options, context),
|
||||||
@ -103,9 +103,9 @@ class PopupProxyHost {
|
|||||||
return popup.hide(changeFocus);
|
return popup.hide(changeFocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
async setVisible(id, visible) {
|
async setVisibleOverride(id, visible) {
|
||||||
const popup = this.getPopup(id);
|
const popup = this.getPopup(id);
|
||||||
return popup.setVisible(visible);
|
return popup.setVisibleOverride(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
async containsPoint(id, x, y) {
|
async containsPoint(id, x, y) {
|
||||||
|
@ -65,9 +65,9 @@ class PopupProxy {
|
|||||||
return await this.invokeHostApi('hide', {id: this.id, changeFocus});
|
return await this.invokeHostApi('hide', {id: this.id, changeFocus});
|
||||||
}
|
}
|
||||||
|
|
||||||
async setVisible(visible) {
|
async setVisibleOverride(visible) {
|
||||||
const id = await this.getPopupId();
|
const id = await this.getPopupId();
|
||||||
return await this.invokeHostApi('setVisible', {id, visible});
|
return await this.invokeHostApi('setVisibleOverride', {id, visible});
|
||||||
}
|
}
|
||||||
|
|
||||||
async containsPoint(x, y) {
|
async containsPoint(x, y) {
|
||||||
|
@ -34,6 +34,9 @@ class Popup {
|
|||||||
this.container.style.height = '0px';
|
this.container.style.height = '0px';
|
||||||
this.injectPromise = null;
|
this.injectPromise = null;
|
||||||
this.isInjected = false;
|
this.isInjected = false;
|
||||||
|
this.visible = false;
|
||||||
|
this.visibleOverride = null;
|
||||||
|
this.updateVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
inject(options) {
|
inject(options) {
|
||||||
@ -105,9 +108,11 @@ class Popup {
|
|||||||
container.style.top = `${y}px`;
|
container.style.top = `${y}px`;
|
||||||
container.style.width = `${width}px`;
|
container.style.width = `${width}px`;
|
||||||
container.style.height = `${height}px`;
|
container.style.height = `${height}px`;
|
||||||
container.style.visibility = 'visible';
|
|
||||||
|
|
||||||
this.hideChildren(true);
|
this.setVisible(true);
|
||||||
|
if (this.child !== null) {
|
||||||
|
this.child.hide(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static getPositionForHorizontalText(elementRect, width, height, maxWidth, maxHeight, optionsGeneral) {
|
static getPositionForHorizontalText(elementRect, width, height, maxWidth, maxHeight, optionsGeneral) {
|
||||||
@ -209,41 +214,35 @@ class Popup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hide(changeFocus) {
|
hide(changeFocus) {
|
||||||
if (this.isContainerHidden()) {
|
if (!this.isVisible()) {
|
||||||
changeFocus = false;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setVisible(false);
|
||||||
|
if (this.child !== null) {
|
||||||
|
this.child.hide(false);
|
||||||
}
|
}
|
||||||
this.hideChildren(changeFocus);
|
|
||||||
this.hideContainer();
|
|
||||||
if (changeFocus) {
|
if (changeFocus) {
|
||||||
this.focusParent();
|
this.focusParent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hideChildren(changeFocus) {
|
|
||||||
// Recursively hides all children.
|
|
||||||
if (this.child !== null && !this.child.isContainerHidden()) {
|
|
||||||
this.child.hide(changeFocus);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hideContainer() {
|
|
||||||
this.container.style.visibility = 'hidden';
|
|
||||||
}
|
|
||||||
|
|
||||||
isContainerHidden() {
|
|
||||||
return (this.container.style.visibility === 'hidden');
|
|
||||||
}
|
|
||||||
|
|
||||||
isVisible() {
|
isVisible() {
|
||||||
return this.isInjected && this.container.style.visibility !== 'hidden';
|
return this.isInjected && (this.visibleOverride !== null ? this.visibleOverride : this.visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
setVisible(visible) {
|
setVisible(visible) {
|
||||||
if (visible) {
|
this.visible = visible;
|
||||||
this.container.style.setProperty('display', '');
|
this.updateVisibility();
|
||||||
} else {
|
}
|
||||||
this.container.style.setProperty('display', 'none', 'important');
|
|
||||||
}
|
setVisibleOverride(visible) {
|
||||||
|
this.visibleOverride = visible;
|
||||||
|
this.updateVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
|
updateVisibility() {
|
||||||
|
this.container.style.setProperty('visibility', this.isVisible() ? 'visible' : 'hidden', 'important');
|
||||||
}
|
}
|
||||||
|
|
||||||
focusParent() {
|
focusParent() {
|
||||||
|
@ -445,7 +445,7 @@ class Display {
|
|||||||
|
|
||||||
async getScreenshot() {
|
async getScreenshot() {
|
||||||
try {
|
try {
|
||||||
await this.setPopupVisible(false);
|
await this.setPopupVisibleOverride(false);
|
||||||
await Display.delay(1); // Wait for popup to be hidden.
|
await Display.delay(1); // Wait for popup to be hidden.
|
||||||
|
|
||||||
const {format, quality} = this.options.anki.screenshot;
|
const {format, quality} = this.options.anki.screenshot;
|
||||||
@ -454,7 +454,7 @@ class Display {
|
|||||||
|
|
||||||
return {dataUrl, format};
|
return {dataUrl, format};
|
||||||
} finally {
|
} finally {
|
||||||
await this.setPopupVisible(true);
|
await this.setPopupVisibleOverride(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -462,8 +462,8 @@ class Display {
|
|||||||
return this.options.general.resultOutputMode === 'merge' ? 0 : -1;
|
return this.options.general.resultOutputMode === 'merge' ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
setPopupVisible(visible) {
|
setPopupVisibleOverride(visible) {
|
||||||
return apiForward('popupSetVisible', {visible});
|
return apiForward('popupSetVisibleOverride', {visible});
|
||||||
}
|
}
|
||||||
|
|
||||||
setSpinnerVisible(visible) {
|
setSpinnerVisible(visible) {
|
||||||
|
Loading…
Reference in New Issue
Block a user