fixed: webview的查找功能,临时解决为能够查找到结果.
Change-Id: I775019555576815246898b7d7c14c1511477223a
This commit is contained in:
parent
9f3186701f
commit
bcf20d226e
|
@ -257,7 +257,8 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._register(this.on('did-find', ({ didFind }) => {
|
this._register(this.on('did-find', ({ didFind }) => {
|
||||||
this._hasFindResult.fire(didFind);
|
// force enable prevBtn and nextBtn
|
||||||
|
this._hasFindResult.fire(true);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._register(this.on('fatal-error', (e) => {
|
this._register(this.on('fatal-error', (e) => {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { Delayer } from 'vs/base/common/async';
|
// import { Delayer } from 'vs/base/common/async';
|
||||||
import { VSBuffer, VSBufferReadableStream } from 'vs/base/common/buffer';
|
import { VSBuffer, VSBufferReadableStream } from 'vs/base/common/buffer';
|
||||||
import { Schemas } from 'vs/base/common/network';
|
import { Schemas } from 'vs/base/common/network';
|
||||||
import { consumeStream } from 'vs/base/common/stream';
|
import { consumeStream } from 'vs/base/common/stream';
|
||||||
|
@ -20,7 +20,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
|
||||||
import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver';
|
import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver';
|
||||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||||
import { ITunnelService } from 'vs/platform/tunnel/common/tunnel';
|
import { ITunnelService } from 'vs/platform/tunnel/common/tunnel';
|
||||||
import { FindInFrameOptions, IWebviewManagerService } from 'vs/platform/webview/common/webviewManagerService';
|
import { IWebviewManagerService } from 'vs/platform/webview/common/webviewManagerService';
|
||||||
import { WebviewThemeDataProvider } from 'vs/workbench/contrib/webview/browser/themeing';
|
import { WebviewThemeDataProvider } from 'vs/workbench/contrib/webview/browser/themeing';
|
||||||
import { WebviewInitInfo } from 'vs/workbench/contrib/webview/browser/webview';
|
import { WebviewInitInfo } from 'vs/workbench/contrib/webview/browser/webview';
|
||||||
import { WebviewElement } from 'vs/workbench/contrib/webview/browser/webviewElement';
|
import { WebviewElement } from 'vs/workbench/contrib/webview/browser/webviewElement';
|
||||||
|
@ -38,7 +38,7 @@ export class ElectronWebviewElement extends WebviewElement {
|
||||||
private _cachedHtmlContent: string | undefined;
|
private _cachedHtmlContent: string | undefined;
|
||||||
|
|
||||||
private readonly _webviewMainService: IWebviewManagerService;
|
private readonly _webviewMainService: IWebviewManagerService;
|
||||||
private readonly _iframeDelayer = this._register(new Delayer<void>(200));
|
// private readonly _iframeDelayer = this._register(new Delayer<void>(200));
|
||||||
|
|
||||||
protected override get platform() { return 'electron'; }
|
protected override get platform() { return 'electron'; }
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ export class ElectronWebviewElement extends WebviewElement {
|
||||||
configurationService, contextMenuService, notificationService, environmentService,
|
configurationService, contextMenuService, notificationService, environmentService,
|
||||||
fileService, logService, remoteAuthorityResolverService, telemetryService, tunnelService, instantiationService, accessibilityService);
|
fileService, logService, remoteAuthorityResolverService, telemetryService, tunnelService, instantiationService, accessibilityService);
|
||||||
|
|
||||||
this._webviewKeyboardHandler = new WindowIgnoreMenuShortcutsManager(configurationService, mainProcessService, _nativeHostService);
|
this._webviewKeyboardHandler = new WindowIgnoreMenuShortcutsManager(configurationService, mainProcessService, this._nativeHostService);
|
||||||
|
|
||||||
this._webviewMainService = ProxyChannel.toService<IWebviewManagerService>(mainProcessService.getChannel('webview'));
|
this._webviewMainService = ProxyChannel.toService<IWebviewManagerService>(mainProcessService.getChannel('webview'));
|
||||||
|
|
||||||
|
@ -76,6 +76,7 @@ export class ElectronWebviewElement extends WebviewElement {
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._register(this._webviewMainService.onFoundInFrame((result) => {
|
this._register(this._webviewMainService.onFoundInFrame((result) => {
|
||||||
|
console.log('found in frame', result.matches);
|
||||||
this._hasFindResult.fire(result.matches > 0);
|
this._hasFindResult.fire(result.matches > 0);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -108,63 +109,63 @@ export class ElectronWebviewElement extends WebviewElement {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Webviews expose a stateful find API.
|
// * Webviews expose a stateful find API.
|
||||||
* Successive calls to find will move forward or backward through onFindResults
|
// * Successive calls to find will move forward or backward through onFindResults
|
||||||
* depending on the supplied options.
|
// * depending on the supplied options.
|
||||||
*
|
// *
|
||||||
* @param value The string to search for. Empty strings are ignored.
|
// * @param value The string to search for. Empty strings are ignored.
|
||||||
*/
|
// */
|
||||||
public override find(value: string, previous: boolean): void {
|
// public override find(value: string, previous: boolean): void {
|
||||||
if (!this.element) {
|
// if (!this.element) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (!this._findStarted) {
|
// if (!this._findStarted) {
|
||||||
this.updateFind(value);
|
// this.updateFind(value);
|
||||||
} else {
|
// } else {
|
||||||
// continuing the find, so set findNext to false
|
// // continuing the find, so set findNext to false
|
||||||
const options: FindInFrameOptions = { forward: !previous, findNext: false, matchCase: false };
|
// const options: FindInFrameOptions = { forward: !previous, findNext: false, matchCase: false };
|
||||||
this._webviewMainService.findInFrame({ windowId: this._nativeHostService.windowId }, this.id, value, options);
|
// this._webviewMainService.findInFrame({ windowId: this._nativeHostService.windowId }, this.id, value, options);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public override updateFind(value: string) {
|
// public override updateFind(value: string) {
|
||||||
if (!value || !this.element) {
|
// if (!value || !this.element) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// FindNext must be true for a first request
|
// // FindNext must be true for a first request
|
||||||
const options: FindInFrameOptions = {
|
// const options: FindInFrameOptions = {
|
||||||
forward: true,
|
// forward: true,
|
||||||
findNext: true,
|
// findNext: true,
|
||||||
matchCase: false
|
// matchCase: false
|
||||||
};
|
// };
|
||||||
|
|
||||||
this._iframeDelayer.trigger(() => {
|
// this._iframeDelayer.trigger(() => {
|
||||||
this._findStarted = true;
|
// this._findStarted = true;
|
||||||
this._webviewMainService.findInFrame({ windowId: this._nativeHostService.windowId }, this.id, value, options);
|
// this._webviewMainService.findInFrame({ windowId: this._nativeHostService.windowId }, this.id, value, options);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
public override stopFind(keepSelection?: boolean): void {
|
// public override stopFind(keepSelection?: boolean): void {
|
||||||
if (!this.element) {
|
// if (!this.element) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
this._iframeDelayer.cancel();
|
// this._iframeDelayer.cancel();
|
||||||
this._findStarted = false;
|
// this._findStarted = false;
|
||||||
this._webviewMainService.stopFindInFrame({ windowId: this._nativeHostService.windowId }, this.id, {
|
// this._webviewMainService.stopFindInFrame({ windowId: this._nativeHostService.windowId }, this.id, {
|
||||||
keepSelection
|
// keepSelection
|
||||||
});
|
// });
|
||||||
this._onDidStopFind.fire();
|
// this._onDidStopFind.fire();
|
||||||
}
|
// }
|
||||||
|
|
||||||
protected override handleFocusChange(isFocused: boolean): void {
|
// protected override handleFocusChange(isFocused: boolean): void {
|
||||||
super.handleFocusChange(isFocused);
|
// super.handleFocusChange(isFocused);
|
||||||
if (isFocused) {
|
// if (isFocused) {
|
||||||
this._webviewKeyboardHandler.didFocus();
|
// this._webviewKeyboardHandler.didFocus();
|
||||||
} else {
|
// } else {
|
||||||
this._webviewKeyboardHandler.didBlur();
|
// this._webviewKeyboardHandler.didBlur();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue