Reposition popup on window resize rather than clear the search

Fixes #107
This commit is contained in:
toasted-nutbread 2019-10-17 18:39:12 -04:00
parent 598cd32946
commit 8f918c63dc
4 changed files with 24 additions and 3 deletions

View File

@ -139,8 +139,14 @@ class Frontend {
}
}
onResize() {
this.searchClear(false);
async onResize() {
if (this.textSourceLast !== null && await this.popup.isVisibleAsync()) {
const textSource = this.textSourceLast;
this.lastShowPromise = this.popup.showContent(
textSource.getRect(),
textSource.getWritingMode()
);
}
}
onClick(e) {

View File

@ -40,6 +40,7 @@ class PopupProxyHost {
createNestedPopup: ({parentId}) => this.createNestedPopup(parentId),
setOptions: ({id, options}) => this.setOptions(id, options),
hide: ({id, changeFocus}) => this.hide(id, changeFocus),
isVisibleAsync: ({id}) => this.isVisibleAsync(id),
setVisibleOverride: ({id, visible}) => this.setVisibleOverride(id, visible),
containsPoint: ({id, x, y}) => this.containsPoint(id, x, y),
showContent: ({id, elementRect, writingMode, type, details}) => this.showContent(id, elementRect, writingMode, type, details),
@ -97,9 +98,14 @@ class PopupProxyHost {
return popup.hide(changeFocus);
}
async isVisibleAsync(id) {
const popup = this.getPopup(id);
return await popup.isVisibleAsync();
}
async setVisibleOverride(id, visible) {
const popup = this.getPopup(id);
return popup.setVisibleOverride(visible);
return await popup.setVisibleOverride(visible);
}
async containsPoint(id, x, y) {

View File

@ -58,6 +58,11 @@ class PopupProxy {
return await this.invokeHostApi('hide', {id: this.id, changeFocus});
}
async isVisibleAsync() {
const id = await this.getPopupId();
return await this.invokeHostApi('isVisibleAsync', {id});
}
async setVisibleOverride(visible) {
const id = await this.getPopupId();
return await this.invokeHostApi('setVisibleOverride', {id, visible});

View File

@ -239,6 +239,10 @@ class Popup {
}
}
async isVisibleAsync() {
return this.isVisible();
}
isVisible() {
return this.isInjected && (this.visibleOverride !== null ? this.visibleOverride : this.visible);
}