mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2024-11-15 07:45:56 +01:00
Update to CEF 117.1.5
This commit is contained in:
parent
fd75f6f65e
commit
f423f19168
14
README.md
14
README.md
@ -3,15 +3,15 @@ CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chro
|
||||
|
||||
CEF4Delphi is based on DCEF3 and fpCEF3. The original license of those projects still applies to CEF4Delphi. Read the license terms in the LICENSE.md file.
|
||||
|
||||
CEF4Delphi uses CEF 117.1.4 which includes Chromium 117.0.5938.92.
|
||||
CEF4Delphi uses CEF 117.1.5 which includes Chromium 117.0.5938.132.
|
||||
|
||||
The CEF binaries used by CEF4Delphi are available for download at Spotify :
|
||||
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.4%2Bga26f38b%2Bchromium-117.0.5938.92_windows32.tar.bz2)
|
||||
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.4%2Bga26f38b%2Bchromium-117.0.5938.92_windows64.tar.bz2)
|
||||
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.4%2Bga26f38b%2Bchromium-117.0.5938.92_linux64.tar.bz2)
|
||||
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.4%2Bga26f38b%2Bchromium-117.0.5938.92_linuxarm.tar.bz2)
|
||||
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.4%2Bga26f38b%2Bchromium-117.0.5938.92_linuxarm64.tar.bz2)
|
||||
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.4%2Bga26f38b%2Bchromium-117.0.5938.92_macosx64.tar.bz2)
|
||||
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.5%2Bgf1b94ea%2Bchromium-117.0.5938.132_windows32.tar.bz2)
|
||||
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.5%2Bgf1b94ea%2Bchromium-117.0.5938.132_windows64.tar.bz2)
|
||||
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.5%2Bgf1b94ea%2Bchromium-117.0.5938.132_linux64.tar.bz2)
|
||||
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.5%2Bgf1b94ea%2Bchromium-117.0.5938.132_linuxarm.tar.bz2)
|
||||
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.5%2Bgf1b94ea%2Bchromium-117.0.5938.132_linuxarm64.tar.bz2)
|
||||
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_117.1.5%2Bgf1b94ea%2Bchromium-117.0.5938.132_macosx64.tar.bz2)
|
||||
|
||||
CEF4Delphi was developed and tested on Delphi 11.3 and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2, Delphi 10.3, Delphi 10.4 and Lazarus 2.2.6/FPC 3.2.2. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components.
|
||||
|
||||
|
Binary file not shown.
@ -66,14 +66,224 @@ Count=1
|
||||
Item_0=..\source
|
||||
|
||||
[Files]
|
||||
Count=7
|
||||
Item_0=..\source\uCEFApplicationCore.pas
|
||||
Item_1=..\source\uCEFChromium.pas
|
||||
Item_2=..\source\uCEFChromiumCore.pas
|
||||
Item_3=..\source\uCEFConstants.pas
|
||||
Item_4=..\source\uCEFFMXChromium.pas
|
||||
Item_5=..\source\uCEFInterfaces.pas
|
||||
Item_6=..\source\uCEFTypes.pas
|
||||
Count=217
|
||||
Item_0=..\source\uCEFAccessibilityHandler.pas
|
||||
Item_1=..\source\uCEFApp.pas
|
||||
Item_2=..\source\uCEFApplication.pas
|
||||
Item_3=..\source\uCEFApplicationCore.pas
|
||||
Item_4=..\source\uCEFApplicationEvents.pas
|
||||
Item_5=..\source\uCEFArgCopy.pas
|
||||
Item_6=..\source\uCEFAudioHandler.pas
|
||||
Item_7=..\source\uCEFAuthCallback.pas
|
||||
Item_8=..\source\uCEFBaseRefCounted.pas
|
||||
Item_9=..\source\uCEFBaseScopedWrapper.pas
|
||||
Item_10=..\source\uCEFBeforeDownloadCallback.pas
|
||||
Item_11=..\source\uCEFBinaryValue.pas
|
||||
Item_12=..\source\uCEFBitmapBitBuffer.pas
|
||||
Item_13=..\source\uCEFBoxLayout.pas
|
||||
Item_14=..\source\uCEFBrowser.pas
|
||||
Item_15=..\source\uCEFBrowserBitmap.pas
|
||||
Item_16=..\source\uCEFBrowserProcessHandler.pas
|
||||
Item_17=..\source\uCEFBrowserView.pas
|
||||
Item_18=..\source\uCEFBrowserViewComponent.pas
|
||||
Item_19=..\source\uCEFBrowserViewDelegate.pas
|
||||
Item_20=..\source\uCEFBrowserWindow.pas
|
||||
Item_21=..\source\uCEFBufferPanel.pas
|
||||
Item_22=..\source\uCEFButton.pas
|
||||
Item_23=..\source\uCEFButtonComponent.pas
|
||||
Item_24=..\source\uCEFButtonDelegate.pas
|
||||
Item_25=..\source\uCEFCallback.pas
|
||||
Item_26=..\source\uCEFChromium.pas
|
||||
Item_27=..\source\uCEFChromiumCore.pas
|
||||
Item_28=..\source\uCEFChromiumEvents.pas
|
||||
Item_29=..\source\uCEFChromiumFontOptions.pas
|
||||
Item_30=..\source\uCEFChromiumOptions.pas
|
||||
Item_31=..\source\uCEFChromiumWindow.pas
|
||||
Item_32=..\source\uCEFClient.pas
|
||||
Item_33=..\source\uCEFCommandHandler.pas
|
||||
Item_34=..\source\uCEFCommandLine.pas
|
||||
Item_35=..\source\uCEFCompletionCallback.pas
|
||||
Item_36=..\source\uCEFConstants.pas
|
||||
Item_37=..\source\uCEFContextMenuHandler.pas
|
||||
Item_38=..\source\uCEFContextMenuParams.pas
|
||||
Item_39=..\source\uCEFCookieAccessFilter.pas
|
||||
Item_40=..\source\uCEFCookieManager.pas
|
||||
Item_41=..\source\uCEFCookieVisitor.pas
|
||||
Item_42=..\source\uCEFCustomStreamReader.pas
|
||||
Item_43=..\source\uCEFDeleteCookiesCallback.pas
|
||||
Item_44=..\source\uCEFDevToolsMessageObserver.pas
|
||||
Item_45=..\source\uCEFDialogHandler.pas
|
||||
Item_46=..\source\uCEFDictionaryValue.pas
|
||||
Item_47=..\source\uCEFDisplay.pas
|
||||
Item_48=..\source\uCEFDisplayHandler.pas
|
||||
Item_49=..\source\uCEFDomDocument.pas
|
||||
Item_50=..\source\uCEFDomNode.pas
|
||||
Item_51=..\source\uCEFDomVisitor.pas
|
||||
Item_52=..\source\uCEFDownloadHandler.pas
|
||||
Item_53=..\source\uCEFDownloadImageCallBack.pas
|
||||
Item_54=..\source\uCEFDownLoadItem.pas
|
||||
Item_55=..\source\uCEFDownloadItemCallback.pas
|
||||
Item_56=..\source\uCEFDragAndDropMgr.pas
|
||||
Item_57=..\source\uCEFDragData.pas
|
||||
Item_58=..\source\uCEFDragHandler.pas
|
||||
Item_59=..\source\uCEFEndTracingCallback.pas
|
||||
Item_60=..\source\uCEFExtension.pas
|
||||
Item_61=..\source\uCEFExtensionHandler.pas
|
||||
Item_62=..\source\uCEFFileDialogCallback.pas
|
||||
Item_63=..\source\uCEFFileDialogInfo.pas
|
||||
Item_64=..\source\uCEFFillLayout.pas
|
||||
Item_65=..\source\uCEFFindHandler.pas
|
||||
Item_66=..\source\uCEFFMXBufferPanel.pas
|
||||
Item_67=..\source\uCEFFMXChromium.pas
|
||||
Item_68=..\source\uCEFFMXWindowParent.pas
|
||||
Item_69=..\source\uCEFFMXWorkScheduler.pas
|
||||
Item_70=..\source\uCEFFocusHandler.pas
|
||||
Item_71=..\source\uCEFFrame.pas
|
||||
Item_72=..\source\uCEFFrameHandler.pas
|
||||
Item_73=..\source\uCEFGetExtensionResourceCallback.pas
|
||||
Item_74=..\source\uCEFImage.pas
|
||||
Item_75=..\source\uCEFInterfaces.pas
|
||||
Item_76=..\source\uCEFJsDialogCallback.pas
|
||||
Item_77=..\source\uCEFJsDialogHandler.pas
|
||||
Item_78=..\source\uCEFJson.pas
|
||||
Item_79=..\source\uCEFKeyboardHandler.pas
|
||||
Item_80=..\source\uCEFLabelButton.pas
|
||||
Item_81=..\source\uCEFLabelButtonComponent.pas
|
||||
Item_82=..\source\uCEFLayout.pas
|
||||
Item_83=..\source\uceflazaruscocoa.pas
|
||||
Item_84=..\source\uCEFLibFunctions.pas
|
||||
Item_85=..\source\uCEFLifeSpanHandler.pas
|
||||
Item_86=..\source\uCEFLinkedWinControlBase.pas
|
||||
Item_87=..\source\uCEFLinkedWindowParent.pas
|
||||
Item_88=..\source\uCEFLinuxConstants.pas
|
||||
Item_89=..\source\uCEFLinuxEventPipe.pas
|
||||
Item_90=..\source\uCEFLinuxFunctions.pas
|
||||
Item_91=..\source\uCEFLinuxTypes.pas
|
||||
Item_92=..\source\uCEFListValue.pas
|
||||
Item_93=..\source\uCEFLoadHandler.pas
|
||||
Item_94=..\source\uCEFMacOSConstants.pas
|
||||
Item_95=..\source\uCEFMacOSCustomCocoaTimer.pas
|
||||
Item_96=..\source\uCEFMacOSFunctions.pas
|
||||
Item_97=..\source\uCEFMacOSInterfaces.pas
|
||||
Item_98=..\source\uCEFMediaAccessCallback.pas
|
||||
Item_99=..\source\uCEFMediaAccessHandler.pas
|
||||
Item_100=..\source\uCEFMediaObserver.pas
|
||||
Item_101=..\source\uCEFMediaRoute.pas
|
||||
Item_102=..\source\uCEFMediaRouteCreateCallback.pas
|
||||
Item_103=..\source\uCEFMediaRouter.pas
|
||||
Item_104=..\source\uCEFMediaSink.pas
|
||||
Item_105=..\source\uCEFMediaSinkDeviceInfoCallback.pas
|
||||
Item_106=..\source\uCEFMediaSource.pas
|
||||
Item_107=..\source\uCEFMenuButton.pas
|
||||
Item_108=..\source\uCEFMenuButtonComponent.pas
|
||||
Item_109=..\source\uCEFMenuButtonDelegate.pas
|
||||
Item_110=..\source\uCEFMenuButtonPressedLock.pas
|
||||
Item_111=..\source\uCEFMenuModel.pas
|
||||
Item_112=..\source\uCEFMenuModelDelegate.pas
|
||||
Item_113=..\source\uCEFMiscFunctions.pas
|
||||
Item_114=..\source\uCEFNavigationEntry.pas
|
||||
Item_115=..\source\uCEFNavigationEntryVisitor.pas
|
||||
Item_116=..\source\uCEFOAuth2Helper.pas
|
||||
Item_117=..\source\uCEFOLEDragAndDrop.pas
|
||||
Item_118=..\source\uCEFOsrBrowserWindow.pas
|
||||
Item_119=..\source\uCEFOSRIMEHandler.pas
|
||||
Item_120=..\source\uCEFOverlayController.pas
|
||||
Item_121=..\source\uCEFPanel.pas
|
||||
Item_122=..\source\uCEFPanelComponent.pas
|
||||
Item_123=..\source\uCEFPanelDelegate.pas
|
||||
Item_124=..\source\uCEFPDFPrintCallback.pas
|
||||
Item_125=..\source\uCEFPDFPrintOptions.pas
|
||||
Item_126=..\source\uCEFPermissionHandler.pas
|
||||
Item_127=..\source\uCEFPermissionPromptCallback.pas
|
||||
Item_128=..\source\uCEFPostData.pas
|
||||
Item_129=..\source\uCEFPostDataElement.pas
|
||||
Item_130=..\source\uCEFPreferenceManager.pas
|
||||
Item_131=..\source\uCEFPreferenceRegistrar.pas
|
||||
Item_132=..\source\uCEFPrintDialogCallback.pas
|
||||
Item_133=..\source\uCEFPrintHandler.pas
|
||||
Item_134=..\source\uCEFPrintJobCallback.pas
|
||||
Item_135=..\source\uCEFPrintSettings.pas
|
||||
Item_136=..\source\uCEFProcessMessage.pas
|
||||
Item_137=..\source\uCEFRegistration.pas
|
||||
Item_138=..\source\uCEFRenderHandler.pas
|
||||
Item_139=..\source\uCEFRenderProcessHandler.pas
|
||||
Item_140=..\source\uCEFRequest.pas
|
||||
Item_141=..\source\uCEFRequestContext.pas
|
||||
Item_142=..\source\uCEFRequestContextHandler.pas
|
||||
Item_143=..\source\uCEFRequestHandler.pas
|
||||
Item_144=..\source\uCEFResolveCallback.pas
|
||||
Item_145=..\source\uCEFResourceBundle.pas
|
||||
Item_146=..\source\uCEFResourceBundleHandler.pas
|
||||
Item_147=..\source\uCEFResourceHandler.pas
|
||||
Item_148=..\source\uCEFResourceReadCallback.pas
|
||||
Item_149=..\source\uCEFResourceRequestHandler.pas
|
||||
Item_150=..\source\uCEFResourceSkipCallback.pas
|
||||
Item_151=..\source\uCEFResponse.pas
|
||||
Item_152=..\source\uCEFResponseFilter.pas
|
||||
Item_153=..\source\uCEFRunContextMenuCallback.pas
|
||||
Item_154=..\source\uCEFRunFileDialogCallback.pas
|
||||
Item_155=..\source\uCEFRunQuickMenuCallback.pas
|
||||
Item_156=..\source\uCEFSchemeHandlerFactory.pas
|
||||
Item_157=..\source\uCEFSchemeRegistrar.pas
|
||||
Item_158=..\source\uCEFScrollView.pas
|
||||
Item_159=..\source\uCEFScrollViewComponent.pas
|
||||
Item_160=..\source\uCEFSelectClientCertificateCallback.pas
|
||||
Item_161=..\source\uCEFSentinel.pas
|
||||
Item_162=..\source\uCEFServer.pas
|
||||
Item_163=..\source\uCEFServerComponent.pas
|
||||
Item_164=..\source\uCEFServerEvents.pas
|
||||
Item_165=..\source\uCEFServerHandler.pas
|
||||
Item_166=..\source\uCEFSetCookieCallback.pas
|
||||
Item_167=..\source\uCEFSharedMemoryRegion.pas
|
||||
Item_168=..\source\uCEFSharedProcessMessageBuilder.pas
|
||||
Item_169=..\source\uCEFSslInfo.pas
|
||||
Item_170=..\source\uCEFSSLStatus.pas
|
||||
Item_171=..\source\uCEFStreamReader.pas
|
||||
Item_172=..\source\uCEFStreamWriter.pas
|
||||
Item_173=..\source\uCEFStringList.pas
|
||||
Item_174=..\source\uCEFStringMap.pas
|
||||
Item_175=..\source\uCEFStringMultimap.pas
|
||||
Item_176=..\source\uCEFStringVisitor.pas
|
||||
Item_177=..\source\uCEFTask.pas
|
||||
Item_178=..\source\uCEFTaskRunner.pas
|
||||
Item_179=..\source\uCEFTextfield.pas
|
||||
Item_180=..\source\uCEFTextfieldComponent.pas
|
||||
Item_181=..\source\uCEFTextfieldDelegate.pas
|
||||
Item_182=..\source\uCEFThread.pas
|
||||
Item_183=..\source\uCEFTimerWorkScheduler.pas
|
||||
Item_184=..\source\uCEFTypes.pas
|
||||
Item_185=..\source\uCEFUrlRequest.pas
|
||||
Item_186=..\source\uCEFUrlrequestClient.pas
|
||||
Item_187=..\source\uCEFUrlRequestClientComponent.pas
|
||||
Item_188=..\source\uCEFUrlRequestClientEvents.pas
|
||||
Item_189=..\source\uCEFv8Accessor.pas
|
||||
Item_190=..\source\uCEFv8ArrayBufferReleaseCallback.pas
|
||||
Item_191=..\source\uCEFv8Context.pas
|
||||
Item_192=..\source\uCEFv8Exception.pas
|
||||
Item_193=..\source\uCEFv8Handler.pas
|
||||
Item_194=..\source\uCEFv8Interceptor.pas
|
||||
Item_195=..\source\uCEFv8StackFrame.pas
|
||||
Item_196=..\source\uCEFv8StackTrace.pas
|
||||
Item_197=..\source\uCEFv8Value.pas
|
||||
Item_198=..\source\uCEFValue.pas
|
||||
Item_199=..\source\uCEFView.pas
|
||||
Item_200=..\source\uCEFViewComponent.pas
|
||||
Item_201=..\source\uCEFViewDelegate.pas
|
||||
Item_202=..\source\uCEFViewsFrameworkEvents.pas
|
||||
Item_203=..\source\uCEFWaitableEvent.pas
|
||||
Item_204=..\source\uCEFWinControl.pas
|
||||
Item_205=..\source\uCEFWindow.pas
|
||||
Item_206=..\source\uCEFWindowComponent.pas
|
||||
Item_207=..\source\uCEFWindowDelegate.pas
|
||||
Item_208=..\source\uCEFWindowParent.pas
|
||||
Item_209=..\source\uCEFWorkScheduler.pas
|
||||
Item_210=..\source\uCEFWorkSchedulerQueueThread.pas
|
||||
Item_211=..\source\uCEFWorkSchedulerThread.pas
|
||||
Item_212=..\source\uCEFWriteHandler.pas
|
||||
Item_213=..\source\uCEFX509Certificate.pas
|
||||
Item_214=..\source\uCEFX509CertPrincipal.pas
|
||||
Item_215=..\source\uCEFXmlReader.pas
|
||||
Item_216=..\source\uCEFZipReader.pas
|
||||
|
||||
[AdditionalFiles]
|
||||
Count=0
|
||||
|
@ -21,7 +21,7 @@
|
||||
</CompilerOptions>
|
||||
<Description Value="CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC."/>
|
||||
<License Value="MPL 1.1"/>
|
||||
<Version Major="117" Minor="1" Release="4"/>
|
||||
<Version Major="117" Minor="1" Release="5"/>
|
||||
<Files Count="214">
|
||||
<Item1>
|
||||
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/>
|
||||
|
@ -20,12 +20,38 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFLayout;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A Layout manager that arranges child views vertically or horizontally in a
|
||||
/// side-by-side fashion with spacing around and between the child views. The
|
||||
/// child views are always sized according to their preferred size. If the
|
||||
/// host's bounds provide insufficient space, child views will be clamped.
|
||||
/// Excess space will not be distributed. Methods must be called on the browser
|
||||
/// process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see cref="uCEFTypes|TCefBoxLayout">Implements TCefBoxLayout</see></para>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_box_layout_capi.h">CEF source file: /include/capi/views/cef_box_layout_capi.h (cef_box_layout_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefBoxLayoutRef = class(TCefLayoutRef, ICefBoxLayout)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Set the flex weight for the given |view|. Using the preferred size as the
|
||||
/// basis, free space along the main axis is distributed to views in the ratio
|
||||
/// of their flex weights. Similarly, if the views will overflow the parent,
|
||||
/// space is subtracted in these ratios. A flex of 0 means this view is not
|
||||
/// resized. Flex values must not be negative.
|
||||
/// </summary>
|
||||
procedure SetFlexForView(const view: ICefView; flex: Integer);
|
||||
/// <summary>
|
||||
/// Clears the flex for the given |view|, causing it to use the default flex
|
||||
/// specified via TCefBoxLayoutSettings.default_flex.
|
||||
/// </summary>
|
||||
procedure ClearFlexForView(const view: ICefView);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefBoxLayout instance using a PCefBoxLayout data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefBoxLayout;
|
||||
end;
|
||||
|
||||
|
@ -20,15 +20,56 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFView;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A View hosting a ICefBrowser instance. Methods must be called on the
|
||||
/// browser process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_browser_view_capi.h">CEF source file: /include/capi/views/cef_browser_view_capi.h (cef_browser_view_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefBrowserViewRef = class(TCefViewRef, ICefBrowserView)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Returns the ICefBrowser hosted by this BrowserView. Will return NULL if
|
||||
/// the browser has not yet been created or has already been destroyed.
|
||||
/// </summary>
|
||||
function GetBrowser : ICefBrowser;
|
||||
/// <summary>
|
||||
/// Returns the Chrome toolbar associated with this BrowserView. Only
|
||||
/// supported when using the Chrome runtime. The ICefBrowserViewDelegate.GetChromeToolbarType
|
||||
/// function must return a value other than
|
||||
/// CEF_CTT_NONE and the toolbar will not be available until after this
|
||||
/// BrowserView is added to a ICefWindow and
|
||||
/// ICefViewDelegate.OnWindowChanged() has been called.
|
||||
/// </summary>
|
||||
function GetChromeToolbar : ICefView;
|
||||
/// <summary>
|
||||
/// Sets whether accelerators registered with ICefWindow.SetAccelerator are
|
||||
/// triggered before or after the event is sent to the ICefBrowser. If
|
||||
/// |prefer_accelerators| is true (1) then the matching accelerator will be
|
||||
/// triggered immediately and the event will not be sent to the ICefBrowser.
|
||||
/// If |prefer_accelerators| is false (0) then the matching accelerator will
|
||||
/// only be triggered if the event is not handled by web content or by
|
||||
/// ICefKeyboardHandler. The default value is false (0).
|
||||
/// </summary>
|
||||
procedure SetPreferAccelerators(prefer_accelerators: boolean);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefBrowserView instance using a PCefBrowserView data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefBrowserView;
|
||||
/// <summary>
|
||||
/// Create a new BrowserView. The underlying cef_browser_t will not be created
|
||||
/// until this view is added to the views hierarchy. The optional |extra_info|
|
||||
/// parameter provides an opportunity to specify extra information specific to
|
||||
/// the created browser that will be passed to
|
||||
/// cef_render_process_handler_t::on_browser_created() in the render process.
|
||||
/// </summary>
|
||||
class function CreateBrowserView(const client: ICefClient; const url: ustring; const settings: TCefBrowserSettings; const extra_info: ICefDictionaryValue; const request_context: ICefRequestContext; const delegate: ICefBrowserViewDelegate): ICefBrowserView;
|
||||
/// <summary>
|
||||
/// Returns the BrowserView associated with |browser|.
|
||||
/// </summary>
|
||||
class function GetForBrowser(const browser: ICefBrowser): ICefBrowserView;
|
||||
end;
|
||||
|
||||
|
@ -31,25 +31,86 @@ type
|
||||
procedure OnGestureCommand(const browser_view: ICefBrowserView; gesture_command: TCefGestureCommand; var aResult : boolean);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefBrowserViewDelegate instance using a PCefBrowserViewDelegate data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefBrowserViewDelegate;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// Implement this interface to handle BrowserView events. The functions of this
|
||||
/// interface will be called on the browser process UI thread unless otherwise
|
||||
/// indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_browser_view_delegate_capi.h">CEF source file: /include/capi/views/cef_browser_view_delegate_capi.h (cef_browser_view_delegate_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefBrowserViewDelegateOwn = class(TCefViewDelegateOwn, ICefBrowserViewDelegate)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Called when |browser| associated with |browser_view| is created. This
|
||||
/// function will be called after ICefLifeSpanHandler.OnAfterCreated()
|
||||
/// is called for |browser| and before OnPopupBrowserViewCreated() is
|
||||
/// called for |browser|'s parent delegate if |browser| is a popup.
|
||||
/// </summary>
|
||||
procedure OnBrowserCreated(const browser_view: ICefBrowserView; const browser: ICefBrowser); virtual;
|
||||
/// <summary>
|
||||
/// Called when |browser| associated with |browser_view| is destroyed. Release
|
||||
/// all references to |browser| and do not attempt to execute any functions on
|
||||
/// |browser| after this callback returns. This function will be called before
|
||||
/// ICefLifeSpanHandler.OnBeforeClose() is called for |browser|.
|
||||
/// </summary>
|
||||
procedure OnBrowserDestroyed(const browser_view: ICefBrowserView; const browser: ICefBrowser); virtual;
|
||||
/// <summary>
|
||||
/// Called before a new popup BrowserView is created. The popup originated
|
||||
/// from |browser_view|. |settings| and |client| are the values returned from
|
||||
/// ICefLifeSpanHandler.OnBeforePopup(). |is_devtools| will be true (1)
|
||||
/// if the popup will be a DevTools browser. Return the delegate that will be
|
||||
/// used for the new popup BrowserView.
|
||||
/// </summary>
|
||||
procedure OnGetDelegateForPopupBrowserView(const browser_view: ICefBrowserView; const settings: TCefBrowserSettings; const client: ICefClient; is_devtools: boolean; var aResult : ICefBrowserViewDelegate); virtual;
|
||||
/// <summary>
|
||||
/// Called after |popup_browser_view| is created. This function will be called
|
||||
/// after ICefLifeSpanHandler.OnAfterCreated() and OnBrowserCreated()
|
||||
/// are called for the new popup browser. The popup originated from
|
||||
/// |browser_view|. |is_devtools| will be true (1) if the popup is a DevTools
|
||||
/// browser. Optionally add |popup_browser_view| to the views hierarchy
|
||||
/// yourself and return true (1). Otherwise return false (0) and a default
|
||||
/// ICefWindow will be created for the popup.
|
||||
/// </summary>
|
||||
procedure OnPopupBrowserViewCreated(const browser_view, popup_browser_view: ICefBrowserView; is_devtools: boolean; var aResult : boolean); virtual;
|
||||
procedure OnGetChromeToolbarType(const browser_view: ICefBrowserView; var aResult: TCefChromeToolbarType); virtual;
|
||||
/// <summary>
|
||||
/// Returns the Chrome toolbar type that will be available via
|
||||
/// ICefBrowserView.GetChromeToolbar(). See that function for related
|
||||
/// documentation.
|
||||
/// </summary>
|
||||
procedure OnGetChromeToolbarType(const browser_view: ICefBrowserView; var aResult : TCefChromeToolbarType); virtual;
|
||||
/// <summary>
|
||||
/// Return true (1) to create frameless windows for Document picture-in-
|
||||
/// picture popups. Content in frameless windows should specify draggable
|
||||
/// regions using "-webkit-app-region: drag" CSS.
|
||||
/// </summary>
|
||||
procedure OnUseFramelessWindowForPictureInPicture(const browser_view: ICefBrowserView; var aResult: boolean); virtual;
|
||||
/// <summary>
|
||||
/// Called when |browser_view| receives a gesture command. Return true (1) to
|
||||
/// handle (or disable) a |gesture_command| or false (0) to propagate the
|
||||
/// gesture to the browser for default handling. With the Chrome runtime these
|
||||
/// commands can also be handled via cef_command_handler_t::OnChromeCommand.
|
||||
/// </summary>
|
||||
procedure OnGestureCommand(const browser_view: ICefBrowserView; gesture_command: TCefGestureCommand; var aResult : boolean); virtual;
|
||||
|
||||
/// <summary>
|
||||
/// Links the methods in the internal CEF record data pointer with the methods in this class.
|
||||
/// </summary>
|
||||
procedure InitializeCEFMethods; override;
|
||||
|
||||
public
|
||||
constructor Create; override;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// This class handles all the ICefBrowserViewDelegate methods which call the ICefBrowserViewDelegateEvents methods.
|
||||
/// ICefBrowserViewDelegateEvents will be implemented by the control receiving the ICefBrowserViewDelegate events.
|
||||
/// </summary>
|
||||
TCustomBrowserViewDelegate = class(TCefBrowserViewDelegateOwn)
|
||||
protected
|
||||
FEvents : Pointer;
|
||||
|
@ -20,16 +20,47 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFView;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A View representing a button. Depending on the specific type, the button
|
||||
/// could be implemented by a native control or custom rendered. Methods must be
|
||||
/// called on the browser process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_button_capi.h">CEF source file: /include/capi/views/cef_button_capi.h (cef_button_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefButtonRef = class(TCefViewRef, ICefButton)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Returns this Button as a LabelButton or NULL if this is not a LabelButton.
|
||||
/// </summary>
|
||||
function AsLabelButton : ICefLabelButton;
|
||||
/// <summary>
|
||||
/// Sets the current display state of the Button.
|
||||
/// </summary>
|
||||
procedure SetState(state_: TCefButtonState);
|
||||
/// <summary>
|
||||
/// Returns the current display state of the Button.
|
||||
/// </summary>
|
||||
function GetState : TCefButtonState;
|
||||
/// <summary>
|
||||
/// Sets the Button will use an ink drop effect for displaying state changes.
|
||||
/// </summary>
|
||||
procedure SetInkDropEnabled(enabled_: boolean);
|
||||
/// <summary>
|
||||
/// Sets the tooltip text that will be displayed when the user hovers the
|
||||
/// mouse cursor over the Button.
|
||||
/// </summary>
|
||||
procedure SetTooltipText(const tooltip_text: ustring);
|
||||
/// <summary>
|
||||
/// Sets the accessible name that will be exposed to assistive technology
|
||||
/// (AT).
|
||||
/// </summary>
|
||||
procedure SetAccessibleName(const name: ustring);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefButton instance using a PCefButton data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefButton;
|
||||
end;
|
||||
|
||||
|
@ -47,15 +47,37 @@ type
|
||||
procedure doOnButtonStateChanged(const button: ICefButton);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Sets the Button will use an ink drop effect for displaying state changes.
|
||||
/// </summary>
|
||||
procedure SetInkDropEnabled(enabled_: boolean);
|
||||
/// <summary>
|
||||
/// Sets the tooltip text that will be displayed when the user hovers the
|
||||
/// mouse cursor over the Button.
|
||||
/// </summary>
|
||||
procedure SetTooltipText(const tooltip_text: ustring);
|
||||
/// <summary>
|
||||
/// Sets the accessible name that will be exposed to assistive technology
|
||||
/// (AT).
|
||||
/// </summary>
|
||||
procedure SetAccessibleName(const name_: ustring);
|
||||
|
||||
/// <summary>
|
||||
/// Returns this Button as a LabelButton or NULL if this is not a LabelButton.
|
||||
/// </summary>
|
||||
property AsLabelButton : ICefLabelButton read GetAsLabelButton;
|
||||
/// <summary>
|
||||
/// Returns the current display state of the Button.
|
||||
/// </summary>
|
||||
property State : TCefButtonState read GetState write SetState;
|
||||
|
||||
published
|
||||
/// <summary>
|
||||
/// Called when |button| is pressed.
|
||||
/// </summary>
|
||||
property OnButtonPressed : TOnButtonPressedEvent read FOnButtonPressed write FOnButtonPressed;
|
||||
/// <summary>
|
||||
/// Called when the state of |button| changes.
|
||||
/// </summary>
|
||||
property OnButtonStateChanged : TOnButtonStateChangedEvent read FOnButtonStateChanged write FOnButtonStateChanged;
|
||||
end;
|
||||
|
||||
|
@ -26,19 +26,42 @@ type
|
||||
procedure OnButtonStateChanged(const button: ICefButton);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefButtonDelegate instance using a PCefButtonDelegate data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefButtonDelegate;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// Implement this interface to handle Button events. The functions of this
|
||||
/// interface will be called on the browser process UI thread unless otherwise
|
||||
/// indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_button_delegate_capi.h">CEF source file: /include/capi/views/cef_button_delegate_capi.h (cef_button_delegate_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefButtonDelegateOwn = class(TCefViewDelegateOwn, ICefButtonDelegate)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Called when |button| is pressed.
|
||||
/// </summary>
|
||||
procedure OnButtonPressed(const button: ICefButton); virtual;
|
||||
/// <summary>
|
||||
/// Called when the state of |button| changes.
|
||||
/// </summary>
|
||||
procedure OnButtonStateChanged(const button: ICefButton); virtual;
|
||||
|
||||
/// <summary>
|
||||
/// Links the methods in the internal CEF record data pointer with the methods in this class.
|
||||
/// </summary>
|
||||
procedure InitializeCEFMethods; override;
|
||||
public
|
||||
constructor Create; override;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// This class handles all the ICefButtonDelegate methods which call the ICefButtonDelegateEvents methods.
|
||||
/// ICefButtonDelegateEvents will be implemented by the control receiving the ICefButtonDelegate events.
|
||||
/// </summary>
|
||||
TCustomButtonDelegate = class(TCefButtonDelegateOwn)
|
||||
protected
|
||||
FEvents : Pointer;
|
||||
@ -60,6 +83,9 @@ type
|
||||
procedure OnButtonStateChanged(const button: ICefButton); override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Creates an instance of this class liked to an interface that's implemented by a control receiving the events.
|
||||
/// </summary>
|
||||
constructor Create(const events: ICefButtonDelegateEvents); reintroduce;
|
||||
end;
|
||||
|
||||
|
@ -20,26 +20,104 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// This class typically, but not always, corresponds to a physical display
|
||||
/// connected to the system. A fake Display may exist on a headless system, or a
|
||||
/// Display may correspond to a remote, virtual display. All size and position
|
||||
/// values are in density independent pixel (DIP) coordinates unless otherwise
|
||||
/// indicated. Methods must be called on the browser process UI thread unless
|
||||
/// otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_display_capi.h">CEF source file: /include/capi/views/cef_display_capi.h (cef_display_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefDisplayRef = class(TCefBaseRefCountedRef, ICefDisplay)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Returns the unique identifier for this Display.
|
||||
/// </summary>
|
||||
function GetID : int64;
|
||||
/// <summary>
|
||||
/// Returns this Display's device pixel scale factor. This specifies how much
|
||||
/// the UI should be scaled when the actual output has more pixels than
|
||||
/// standard displays (which is around 100~120dpi). The potential return
|
||||
/// values differ by platform.
|
||||
/// </summary>
|
||||
function GetDeviceScaleFactor : Single;
|
||||
/// <summary>
|
||||
/// Convert |point| from DIP coordinates to pixel coordinates using this
|
||||
/// Display's device scale factor.
|
||||
/// </summary>
|
||||
procedure ConvertPointToPixels(var point: TCefPoint);
|
||||
/// <summary>
|
||||
/// Convert |point| from pixel coordinates to DIP coordinates using this
|
||||
/// Display's device scale factor.
|
||||
/// </summary>
|
||||
procedure ConvertPointFromPixels(var point: TCefPoint);
|
||||
/// <summary>
|
||||
/// Returns this Display's bounds in DIP screen coordinates. This is the full
|
||||
/// size of the display.
|
||||
/// </summary>
|
||||
function GetBounds : TCefRect;
|
||||
/// <summary>
|
||||
/// Returns this Display's work area in DIP screen coordinates. This excludes
|
||||
/// areas of the display that are occupied with window manager toolbars, etc.
|
||||
/// </summary>
|
||||
function GetWorkArea : TCefRect;
|
||||
/// <summary>
|
||||
/// Returns this Display's rotation in degrees.
|
||||
/// </summary>
|
||||
function GetRotation : Integer;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefDisplay instance using a PCefDisplay data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefDisplay;
|
||||
/// <summary>
|
||||
/// Returns the primary Display.
|
||||
/// </summary>
|
||||
class function Primary: ICefDisplay;
|
||||
/// <summary>
|
||||
/// Returns the Display nearest |point|. Set |input_pixel_coords| to true (1) if
|
||||
/// |point| is in pixel screen coordinates instead of DIP screen coordinates.
|
||||
/// </summary>
|
||||
class function NearestPoint(const point: TCefPoint; input_pixel_coords: boolean): ICefDisplay;
|
||||
/// <summary>
|
||||
/// Returns the Display that most closely intersects |bounds|. Set
|
||||
/// |input_pixel_coords| to true (1) if |bounds| is in pixel screen coordinates
|
||||
/// instead of DIP screen coordinates.
|
||||
/// </summary>
|
||||
class function MatchingBounds(const bounds: TCefRect; input_pixel_coords: boolean): ICefDisplay;
|
||||
/// <summary>
|
||||
/// Returns the total number of Displays. Mirrored displays are excluded; this
|
||||
/// function is intended to return the number of distinct, usable displays.
|
||||
/// </summary>
|
||||
class function GetCount: NativeUInt;
|
||||
/// <summary>
|
||||
/// Returns all Displays. Mirrored displays are excluded; this function is
|
||||
/// intended to return distinct, usable displays.
|
||||
/// </summary>
|
||||
class function GetAlls(var aDisplayArray : TCefDisplayArray) : boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| from DIP screen coordinates to pixel screen coordinates.
|
||||
/// This function is only used on Windows.
|
||||
/// </summary>
|
||||
class function ScreenPointToPixels(const aScreenPoint : TPoint) : TPoint;
|
||||
/// <summary>
|
||||
/// Convert |point| from pixel screen coordinates to DIP screen coordinates.
|
||||
/// This function is only used on Windows.
|
||||
/// </summary>
|
||||
class function ScreenPointFromPixels(const aPixelsPoint : TPoint) : TPoint;
|
||||
/// <summary>
|
||||
/// Convert |rect| from DIP screen coordinates to pixel screen coordinates. This
|
||||
/// function is only used on Windows.
|
||||
/// </summary>
|
||||
class function ScreenRectToPixels(const aScreenRect : TRect) : TRect;
|
||||
/// <summary>
|
||||
/// Convert |rect| from pixel screen coordinates to DIP screen coordinates. This
|
||||
/// function is only used on Windows.
|
||||
/// </summary>
|
||||
class function ScreenRectFromPixels(const aPixelsRect : TRect) : TRect;
|
||||
end;
|
||||
|
||||
|
@ -20,8 +20,19 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFLayout;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A simple Layout that causes the associated Panel's one child to be sized to
|
||||
/// match the bounds of its parent. Methods must be called on the browser
|
||||
/// process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_fill_layout_capi.h">CEF source file: /include/capi/views/cef_fill_layout_capi.h (cef_fill_layout_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefFillLayoutRef = class(TCefLayoutRef, ICefFillLayout)
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefFillLayout instance using a PCefFillLayout data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefFillLayout;
|
||||
end;
|
||||
|
||||
|
@ -20,22 +20,84 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFButton;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// LabelButton is a button with optional text and/or icon. Methods must be
|
||||
/// called on the browser process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_label_button_capi.h">CEF source file: /include/capi/views/cef_label_button_capi.h (cef_label_button_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefLabelButtonRef = class(TCefButtonRef, ICefLabelButton)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Returns this LabelButton as a MenuButton or NULL if this is not a
|
||||
/// MenuButton.
|
||||
/// </summary>
|
||||
function AsMenuButton : ICefMenuButton;
|
||||
/// <summary>
|
||||
/// Sets the text shown on the LabelButton. By default |text| will also be
|
||||
/// used as the accessible name.
|
||||
/// </summary>
|
||||
procedure SetText(const text_: ustring);
|
||||
/// <summary>
|
||||
/// Returns the text shown on the LabelButton.
|
||||
/// </summary>
|
||||
function GetText : ustring;
|
||||
/// <summary>
|
||||
/// Sets the image shown for |button_state|. When this Button is drawn if no
|
||||
/// image exists for the current state then the image for
|
||||
/// CEF_BUTTON_STATE_NORMAL, if any, will be shown.
|
||||
/// </summary>
|
||||
procedure SetImage(button_state: TCefButtonState; const image: ICefImage);
|
||||
/// <summary>
|
||||
/// Returns the image shown for |button_state|. If no image exists for that
|
||||
/// state then the image for CEF_BUTTON_STATE_NORMAL will be returned.
|
||||
/// </summary>
|
||||
function GetImage(button_state: TCefButtonState): ICefImage;
|
||||
/// <summary>
|
||||
/// Sets the text color shown for the specified button |for_state| to |color|.
|
||||
/// </summary>
|
||||
procedure SetTextColor(for_state: TCefButtonState; color: TCefColor);
|
||||
/// <summary>
|
||||
/// Sets the text colors shown for the non-disabled states to |color|.
|
||||
/// </summary>
|
||||
procedure SetEnabledTextColors(color: TCefColor);
|
||||
/// <summary>
|
||||
/// Sets the font list. The format is "<FONT_FAMILY_LIST>,[STYLES] <SIZE>",
|
||||
/// where: - FONT_FAMILY_LIST is a comma-separated list of font family names,
|
||||
/// - STYLES is an optional space-separated list of style names (case-
|
||||
/// sensitive
|
||||
/// "Bold" and "Italic" are supported), and
|
||||
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||
///
|
||||
/// Here are examples of valid font description strings: - "Arial, Helvetica,
|
||||
/// Bold Italic 14px" - "Arial, 14px"
|
||||
/// </summary>
|
||||
procedure SetFontList(const font_list: ustring);
|
||||
/// <summary>
|
||||
/// Sets the horizontal alignment; reversed in RTL. Default is
|
||||
/// CEF_HORIZONTAL_ALIGNMENT_CENTER.
|
||||
/// </summary>
|
||||
procedure SetHorizontalAlignment(alignment: TCefHorizontalAlignment);
|
||||
/// <summary>
|
||||
/// Reset the minimum size of this LabelButton to |size|.
|
||||
/// </summary>
|
||||
procedure SetMinimumSize(const size_: TCefSize);
|
||||
/// <summary>
|
||||
/// Reset the maximum size of this LabelButton to |size|.
|
||||
/// </summary>
|
||||
procedure SetMaximumSize(const size_: TCefSize);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefLabelButton instance using a PCefLabelButton data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefLabelButton;
|
||||
/// <summary>
|
||||
/// Create a new LabelButton. A |delegate| must be provided to handle the button
|
||||
/// click. |text| will be shown on the LabelButton and used as the default
|
||||
/// accessible name.
|
||||
/// </summary>
|
||||
class function CreateLabelButton(const delegate: ICefButtonDelegate; const text: ustring): ICefLabelButton;
|
||||
end;
|
||||
|
||||
|
@ -47,16 +47,62 @@ type
|
||||
procedure doCreateCustomView; override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Create a new LabelButton. |aText| will be shown on the LabelButton and used as the default
|
||||
/// accessible name.
|
||||
/// </summary>
|
||||
procedure CreateLabelButton(const aText : ustring);
|
||||
/// <summary>
|
||||
/// Sets the text color shown for the specified button |for_state| to |color|.
|
||||
/// </summary>
|
||||
procedure SetTextColor(for_state: TCefButtonState; color: TCefColor);
|
||||
/// <summary>
|
||||
/// Sets the text colors shown for the non-disabled states to |color|.
|
||||
/// </summary>
|
||||
procedure SetEnabledTextColors(color: TCefColor);
|
||||
/// <summary>
|
||||
/// <para>Sets the font list. The format is "<FONT_FAMILY_LIST>,[STYLES] <SIZE>",
|
||||
/// where:</para>
|
||||
/// <code>
|
||||
/// - FONT_FAMILY_LIST is a comma-separated list of font family names,
|
||||
/// - STYLES is an optional space-separated list of style names (case-sensitive
|
||||
/// "Bold" and "Italic" are supported), and
|
||||
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||
/// </code>
|
||||
/// <para>Here are examples of valid font description strings:</para>
|
||||
/// <code>
|
||||
/// - "Arial, Helvetica, Bold Italic 14px"
|
||||
/// - "Arial, 14px"
|
||||
/// </code>
|
||||
/// </summary>
|
||||
procedure SetFontList(const font_list: ustring);
|
||||
/// <summary>
|
||||
/// Sets the horizontal alignment; reversed in RTL. Default is
|
||||
/// CEF_HORIZONTAL_ALIGNMENT_CENTER.
|
||||
/// </summary>
|
||||
procedure SetHorizontalAlignment(alignment: TCefHorizontalAlignment);
|
||||
/// <summary>
|
||||
/// Reset the minimum size of this LabelButton to |size|.
|
||||
/// </summary>
|
||||
procedure SetMinimumSize(const size_: TCefSize);
|
||||
/// <summary>
|
||||
/// Reset the maximum size of this LabelButton to |size|.
|
||||
/// </summary>
|
||||
procedure SetMaximumSize(const size_: TCefSize);
|
||||
|
||||
/// <summary>
|
||||
/// Gets and sets the text shown on the LabelButton. By default |text| will also be
|
||||
/// used as the accessible name.
|
||||
/// </summary>
|
||||
property Text : ustring read GetText write SetText;
|
||||
/// <summary>
|
||||
/// Returns the image shown for |button_state|. If no image exists for that
|
||||
/// state then the image for CEF_BUTTON_STATE_NORMAL will be returned.
|
||||
/// </summary>
|
||||
property Image[button_state : TCefButtonState] : ICefImage read GetImage write SetImage;
|
||||
/// <summary>
|
||||
/// Returns this LabelButton as a MenuButton or NULL if this is not a
|
||||
/// MenuButton.
|
||||
/// </summary>
|
||||
property AsMenuButton : ICefMenuButton read GetAsMenuButton;
|
||||
end;
|
||||
|
||||
|
@ -20,13 +20,33 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A Layout handles the sizing of the children of a Panel according to
|
||||
/// implementation-specific heuristics. Methods must be called on the browser
|
||||
/// process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_layout_capi.h">CEF source file: /include/capi/views/cef_layout_capi.h (cef_layout_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefLayoutRef = class(TCefBaseRefCountedRef, ICefLayout)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Returns this Layout as a BoxLayout or NULL if this is not a BoxLayout.
|
||||
/// </summary>
|
||||
function AsBoxLayout : ICefBoxLayout;
|
||||
/// <summary>
|
||||
/// Returns this Layout as a FillLayout or NULL if this is not a FillLayout.
|
||||
/// </summary>
|
||||
function AsFillLayout : ICefFillLayout;
|
||||
/// <summary>
|
||||
/// Returns true (1) if this Layout is valid.
|
||||
/// </summary>
|
||||
function IsValid : boolean;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefLayout instance using a PCefLayout data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefLayout;
|
||||
end;
|
||||
|
||||
|
@ -20,13 +20,45 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFLabelButton;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// MenuButton is a button with optional text, icon and/or menu marker that
|
||||
/// shows a menu when clicked with the left mouse button. All size and position
|
||||
/// values are in density independent pixels (DIP) unless otherwise indicated.
|
||||
/// Methods must be called on the browser process UI thread unless otherwise
|
||||
/// indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_menu_button_capi.h">CEF source file: /include/capi/views/cef_menu_button_capi.h (cef_menu_button_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefMenuButtonRef = class(TCefLabelButtonRef, ICefMenuButton)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Show a menu with contents |menu_model|. |screen_point| specifies the menu
|
||||
/// position in screen coordinates. |anchor_position| specifies how the menu
|
||||
/// will be anchored relative to |screen_point|. This function should be
|
||||
/// called from ICefMenuButtonDelegate.OnMenuButtonPressed().
|
||||
/// </summary>
|
||||
procedure ShowMenu(const menu_model: ICefMenuModel; const screen_point: TCefPoint; anchor_position: TCefMenuAnchorPosition);
|
||||
/// <summary>
|
||||
/// Show the menu for this button. Results in a call to
|
||||
/// ICefMenuButtonDelegate.OnMenuButtonPressed().
|
||||
/// </summary>
|
||||
procedure TriggerMenu;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefMenuButton instance using a PCefMenuButton data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefMenuButton;
|
||||
/// <summary>
|
||||
/// Create a new MenuButton. A |delegate| must be provided to call show_menu()
|
||||
/// when the button is clicked. |text| will be shown on the MenuButton and used
|
||||
/// as the default accessible name. If |with_frame| is true (1) the button will
|
||||
/// have a visible frame at all times, center alignment, additional padding and
|
||||
/// a default minimum size of 70x33 DIP. If |with_frame| is false (0) the button
|
||||
/// will only have a visible frame on hover/press, left alignment, less padding
|
||||
/// and no default minimum size.
|
||||
/// </summary>
|
||||
class function CreateMenuButton(const delegate: ICefMenuButtonDelegate; const text: ustring): ICefMenuButton;
|
||||
end;
|
||||
|
||||
|
@ -47,11 +47,30 @@ type
|
||||
procedure doCreateCustomView; override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Create a new MenuButton.
|
||||
/// </summary>
|
||||
procedure CreateMenuButton(const aText : ustring);
|
||||
/// <summary>
|
||||
/// Show a menu with contents |menu_model|. |screen_point| specifies the menu
|
||||
/// position in screen coordinates. |anchor_position| specifies how the menu
|
||||
/// will be anchored relative to |screen_point|. This function should be
|
||||
/// called from ICefMenuButtonDelegate.OnMenuButtonPressed().
|
||||
/// </summary>
|
||||
procedure ShowMenu(const menu_model: ICefMenuModel; const screen_point: TCefPoint; anchor_position: TCefMenuAnchorPosition);
|
||||
/// <summary>
|
||||
/// Show the menu for this button. Results in a call to
|
||||
/// ICefMenuButtonDelegate.OnMenuButtonPressed().
|
||||
/// </summary>
|
||||
procedure TriggerMenu;
|
||||
|
||||
published
|
||||
/// <summary>
|
||||
/// Called when |button| is pressed. Call ICefMenuButton.ShowMenu() to
|
||||
/// show a popup menu at |screen_point|. When showing a custom popup such as a
|
||||
/// window keep a reference to |button_pressed_lock| until the popup is hidden
|
||||
/// to maintain the pressed button state.
|
||||
/// </summary>
|
||||
property OnMenuButtonPressed : TOnMenuButtonPressedEvent read FOnMenuButtonPressed write FOnMenuButtonPressed;
|
||||
end;
|
||||
|
||||
|
@ -25,18 +25,41 @@ type
|
||||
procedure OnMenuButtonPressed(const menu_button: ICefMenuButton; const screen_point: TCefPoint; const button_pressed_lock: ICefMenuButtonPressedLock);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefMenuButtonDelegate instance using a PCefMenuButtonDelegate data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefMenuButtonDelegate;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// Implement this interface to handle MenuButton events. The functions of this
|
||||
/// interface will be called on the browser process UI thread unless otherwise
|
||||
/// indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_menu_button_delegate_capi.h">CEF source file: /include/capi/views/cef_menu_button_delegate_capi.h (cef_menu_button_delegate_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefMenuButtonDelegateOwn = class(TCefButtonDelegateOwn, ICefMenuButtonDelegate)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Called when |button| is pressed. Call ICefMenuButton.ShowMenu() to
|
||||
/// show a popup menu at |screen_point|. When showing a custom popup such as a
|
||||
/// window keep a reference to |button_pressed_lock| until the popup is hidden
|
||||
/// to maintain the pressed button state.
|
||||
/// </summary>
|
||||
procedure OnMenuButtonPressed(const menu_button: ICefMenuButton; const screen_point: TCefPoint; const button_pressed_lock: ICefMenuButtonPressedLock); virtual;
|
||||
|
||||
/// <summary>
|
||||
/// Links the methods in the internal CEF record data pointer with the methods in this class.
|
||||
/// </summary>
|
||||
procedure InitializeCEFMethods; override;
|
||||
public
|
||||
constructor Create; override;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// This class handles all the ICefMenuButtonDelegate methods which call the ICefMenuButtonDelegateEvents methods.
|
||||
/// ICefMenuButtonDelegateEvents will be implemented by the control receiving the ICefMenuButtonDelegate events.
|
||||
/// </summary>
|
||||
TCustomMenuButtonDelegate = class(TCefMenuButtonDelegateOwn)
|
||||
protected
|
||||
FEvents : Pointer;
|
||||
@ -61,6 +84,9 @@ type
|
||||
procedure OnMenuButtonPressed(const menu_button: ICefMenuButton; const screen_point: TCefPoint; const button_pressed_lock: ICefMenuButtonPressedLock); override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Creates an instance of this class liked to an interface that's implemented by a control receiving the events.
|
||||
/// </summary>
|
||||
constructor Create(const events: ICefMenuButtonDelegateEvents); reintroduce;
|
||||
end;
|
||||
|
||||
|
@ -20,8 +20,17 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// MenuButton pressed lock is released when this object is destroyed.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_menu_button_delegate_capi.h">CEF source file: /include/capi/views/cef_menu_button_delegate_capi.h (cef_menu_button_pressed_lock_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefMenuButtonPressedLockRef = class(TCefBaseRefCountedRef, ICefMenuButtonPressedLock)
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefMenuButtonPressedLock instance using a PCefMenuButtonPressedLock data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefMenuButtonPressedLock;
|
||||
end;
|
||||
|
||||
|
@ -20,28 +20,137 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// Controller for an overlay that contains a contents View added via
|
||||
/// ICefWindow.AddOverlayView. Methods exposed by this controller should be
|
||||
/// called in preference to functions of the same name exposed by the contents
|
||||
/// View unless otherwise indicated. Methods must be called on the browser
|
||||
/// process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_overlay_controller_capi.h">CEF source file: /include/capi/views/cef_overlay_controller_capi.h (cef_overlay_controller_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefOverlayControllerRef = class(TCefBaseRefCountedRef, ICefOverlayController)
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns true (1) if this object is valid.
|
||||
/// </summary>
|
||||
function IsValid: boolean;
|
||||
/// <summary>
|
||||
/// Returns true (1) if this object is the same as |that| object.
|
||||
/// </summary>
|
||||
function IsSame(const that: ICefOverlayController): boolean;
|
||||
/// <summary>
|
||||
/// Returns the contents View for this overlay.
|
||||
/// </summary>
|
||||
function GetContentsView: ICefView;
|
||||
/// <summary>
|
||||
/// Returns the top-level Window hosting this overlay. Use this function
|
||||
/// instead of calling get_window() on the contents View.
|
||||
/// </summary>
|
||||
function GetWindow: ICefWindow;
|
||||
/// <summary>
|
||||
/// Returns the docking mode for this overlay.
|
||||
/// </summary>
|
||||
function GetDockingMode: TCefDockingMode;
|
||||
/// <summary>
|
||||
/// Destroy this overlay.
|
||||
/// </summary>
|
||||
procedure DestroyOverlay;
|
||||
/// <summary>
|
||||
/// Sets the bounds (size and position) of this overlay. This will set the
|
||||
/// bounds of the contents View to match and trigger a re-layout if necessary.
|
||||
/// |bounds| is in parent coordinates and any insets configured on this
|
||||
/// overlay will be ignored. Use this function only for overlays created with
|
||||
/// a docking mode value of CEF_DOCKING_MODE_CUSTOM. With other docking modes
|
||||
/// modify the insets of this overlay and/or layout of the contents View and
|
||||
/// call size_to_preferred_size() instead to calculate the new size and re-
|
||||
/// position the overlay if necessary.
|
||||
/// </summary>
|
||||
procedure SetBounds(const bounds: TCefRect);
|
||||
/// <summary>
|
||||
/// Returns the bounds (size and position) of this overlay in parent
|
||||
/// coordinates.
|
||||
/// </summary>
|
||||
function GetBounds: TCefRect;
|
||||
/// <summary>
|
||||
/// Returns the bounds (size and position) of this overlay in DIP screen
|
||||
/// coordinates.
|
||||
/// </summary>
|
||||
function GetBoundsInScreen: TCefRect;
|
||||
/// <summary>
|
||||
/// Sets the size of this overlay without changing the position. This will set
|
||||
/// the size of the contents View to match and trigger a re-layout if
|
||||
/// necessary. |size| is in parent coordinates and any insets configured on
|
||||
/// this overlay will be ignored. Use this function only for overlays created
|
||||
/// with a docking mode value of CEF_DOCKING_MODE_CUSTOM. With other docking
|
||||
/// modes modify the insets of this overlay and/or layout of the contents View
|
||||
/// and call size_to_preferred_size() instead to calculate the new size and
|
||||
/// re-position the overlay if necessary.
|
||||
/// </summary>
|
||||
procedure SetSize(const size: TCefSize);
|
||||
/// <summary>
|
||||
/// Returns the size of this overlay in parent coordinates.
|
||||
/// </summary>
|
||||
function GetSize: TCefSize;
|
||||
/// <summary>
|
||||
/// Sets the position of this overlay without changing the size. |position| is
|
||||
/// in parent coordinates and any insets configured on this overlay will be
|
||||
/// ignored. Use this function only for overlays created with a docking mode
|
||||
/// value of CEF_DOCKING_MODE_CUSTOM. With other docking modes modify the
|
||||
/// insets of this overlay and/or layout of the contents View and call
|
||||
/// size_to_preferred_size() instead to calculate the new size and re-position
|
||||
/// the overlay if necessary.
|
||||
/// </summary>
|
||||
procedure SetPosition(const position: TCefPoint);
|
||||
/// <summary>
|
||||
/// Returns the position of this overlay in parent coordinates.
|
||||
/// </summary>
|
||||
function GetPosition: TCefPoint;
|
||||
/// <summary>
|
||||
/// Sets the insets for this overlay. |insets| is in parent coordinates. Use
|
||||
/// this function only for overlays created with a docking mode value other
|
||||
/// than CEF_DOCKING_MODE_CUSTOM.
|
||||
/// </summary>
|
||||
procedure SetInsets(const insets: TCefInsets);
|
||||
/// <summary>
|
||||
/// Returns the insets for this overlay in parent coordinates.
|
||||
/// </summary>
|
||||
function GetInsets: TCefInsets;
|
||||
/// <summary>
|
||||
/// Size this overlay to its preferred size and trigger a re-layout if
|
||||
/// necessary. The position of overlays created with a docking mode value of
|
||||
/// CEF_DOCKING_MODE_CUSTOM will not be modified by calling this function.
|
||||
/// With other docking modes this function may re-position the overlay if
|
||||
/// necessary to accommodate the new size and any insets configured on the
|
||||
/// contents View.
|
||||
/// </summary>
|
||||
procedure SizeToPreferredSize;
|
||||
/// <summary>
|
||||
/// Sets whether this overlay is visible. Overlays are hidden by default. If
|
||||
/// this overlay is hidden then it and any child Views will not be drawn and,
|
||||
/// if any of those Views currently have focus, then focus will also be
|
||||
/// cleared. Painting is scheduled as needed.
|
||||
/// </summary>
|
||||
procedure SetVisible(visible: boolean);
|
||||
/// <summary>
|
||||
/// Returns whether this overlay is visible. A View may be visible but still
|
||||
/// not drawn in a Window if any parent Views are hidden. Call is_drawn() to
|
||||
/// determine whether this overlay and all parent Views are visible and will
|
||||
/// be drawn.
|
||||
/// </summary>
|
||||
function IsVisible: boolean;
|
||||
/// <summary>
|
||||
/// Returns whether this overlay is visible and drawn in a Window. A View is
|
||||
/// drawn if it and all parent Views are visible. To determine if the
|
||||
/// containing Window is visible to the user on-screen call is_visible() on
|
||||
/// the Window.
|
||||
/// </summary>
|
||||
function IsDrawn: boolean;
|
||||
|
||||
/// <summary>
|
||||
/// Returns a ICefOverlayController instance using a PCefOverlayController data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefOverlayController;
|
||||
end;
|
||||
|
||||
|
@ -20,23 +20,77 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFView;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A Panel is a container in the views hierarchy that can contain other Views
|
||||
/// as children. Methods must be called on the browser process UI thread unless
|
||||
/// otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_panel_capi.h">CEF source file: /include/capi/views/cef_panel_capi.h (cef_panel_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefPanelRef = class(TCefViewRef, ICefPanel)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Returns this Panel as a Window or NULL if this is not a Window.
|
||||
/// </summary>
|
||||
function GetAsWindow : ICefWindow;
|
||||
/// <summary>
|
||||
/// Set this Panel's Layout to FillLayout and return the FillLayout object.
|
||||
/// </summary>
|
||||
function SetToFillLayout : ICefFillLayout;
|
||||
/// <summary>
|
||||
/// Set this Panel's Layout to BoxLayout and return the BoxLayout object.
|
||||
/// </summary>
|
||||
function SetToBoxLayout(const settings: TCefBoxLayoutSettings): ICefBoxLayout;
|
||||
/// <summary>
|
||||
/// Get the Layout.
|
||||
/// </summary>
|
||||
function GetLayout : ICefLayout;
|
||||
/// <summary>
|
||||
/// Lay out the child Views (set their bounds based on sizing heuristics
|
||||
/// specific to the current Layout).
|
||||
/// </summary>
|
||||
procedure Layout;
|
||||
/// <summary>
|
||||
/// Add a child View.
|
||||
/// </summary>
|
||||
procedure AddChildView(const view: ICefView);
|
||||
/// <summary>
|
||||
/// Add a child View at the specified |index|. If |index| matches the result
|
||||
/// of GetChildCount() then the View will be added at the end.
|
||||
/// </summary>
|
||||
procedure AddChildViewAt(const view: ICefView; index: Integer);
|
||||
/// <summary>
|
||||
/// Move the child View to the specified |index|. A negative value for |index|
|
||||
/// will move the View to the end.
|
||||
/// </summary>
|
||||
procedure ReorderChildView(const view: ICefView; index: Integer);
|
||||
/// <summary>
|
||||
/// Remove a child View. The View can then be added to another Panel.
|
||||
/// </summary>
|
||||
procedure RemoveChildView(const view: ICefView);
|
||||
/// <summary>
|
||||
/// Remove all child Views. The removed Views will be deleted if the client
|
||||
/// holds no references to them.
|
||||
/// </summary>
|
||||
procedure RemoveAllChildViews;
|
||||
/// <summary>
|
||||
/// Returns the number of child Views.
|
||||
/// </summary>
|
||||
function GetChildViewCount : NativeUInt;
|
||||
/// <summary>
|
||||
/// Returns the child View at the specified |index|.
|
||||
/// </summary>
|
||||
function GetChildViewAt(index: Integer): ICefView;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefPanel instance using a PCefPanel data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefPanel;
|
||||
/// <summary>
|
||||
/// Create a new Panel.
|
||||
/// </summary>
|
||||
class function CreatePanel(const delegate: ICefPanelDelegate): ICefPanel;
|
||||
end;
|
||||
|
||||
|
@ -35,25 +35,68 @@ type
|
||||
function GetAsView : ICefView; override;
|
||||
function GetAsPanel : ICefPanel; override;
|
||||
function GetAsWindow : ICefWindow; virtual;
|
||||
function GetChildViewCount : NativeUInt;
|
||||
|
||||
// ICefViewDelegateEvents
|
||||
procedure doCreateCustomView; override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Create a new Panel.
|
||||
/// </summary>
|
||||
procedure CreatePanel;
|
||||
/// <summary>
|
||||
/// Set this Panel's Layout to FillLayout and return the FillLayout object.
|
||||
/// </summary>
|
||||
function SetToFillLayout : ICefFillLayout;
|
||||
/// <summary>
|
||||
/// Set this Panel's Layout to BoxLayout and return the BoxLayout object.
|
||||
/// </summary>
|
||||
function SetToBoxLayout(const settings: TCefBoxLayoutSettings): ICefBoxLayout;
|
||||
/// <summary>
|
||||
/// Get the Layout.
|
||||
/// </summary>
|
||||
function GetLayout : ICefLayout;
|
||||
/// <summary>
|
||||
/// Lay out the child Views (set their bounds based on sizing heuristics
|
||||
/// specific to the current Layout).
|
||||
/// </summary>
|
||||
procedure Layout;
|
||||
/// <summary>
|
||||
/// Add a child View.
|
||||
/// </summary>
|
||||
procedure AddChildView(const view: ICefView);
|
||||
/// <summary>
|
||||
/// Add a child View at the specified |index|. If |index| matches the result
|
||||
/// of GetChildCount() then the View will be added at the end.
|
||||
/// </summary>
|
||||
procedure AddChildViewAt(const view: ICefView; index: Integer);
|
||||
/// <summary>
|
||||
/// Move the child View to the specified |index|. A negative value for |index|
|
||||
/// will move the View to the end.
|
||||
/// </summary>
|
||||
procedure ReorderChildView(const view: ICefView; index: Integer);
|
||||
/// <summary>
|
||||
/// Remove a child View. The View can then be added to another Panel.
|
||||
/// </summary>
|
||||
procedure RemoveChildView(const view: ICefView);
|
||||
/// <summary>
|
||||
/// Remove all child Views. The removed Views will be deleted if the client
|
||||
/// holds no references to them.
|
||||
/// </summary>
|
||||
procedure RemoveAllChildViews;
|
||||
function GetChildViewCount : NativeUInt;
|
||||
/// <summary>
|
||||
/// Returns the child View at the specified |index|.
|
||||
/// </summary>
|
||||
function GetChildViewAt(index: Integer): ICefView;
|
||||
|
||||
property AsWindow : ICefWindow read GetAsWindow;
|
||||
/// <summary>
|
||||
/// Returns this Panel as a Window or NULL if this is not a Window.
|
||||
/// </summary>
|
||||
property AsWindow : ICefWindow read GetAsWindow;
|
||||
/// <summary>
|
||||
/// Returns the number of child Views.
|
||||
/// </summary>
|
||||
property ChildViewCount : NativeUInt read GetChildViewCount;
|
||||
end;
|
||||
|
||||
{$IFDEF FPC}
|
||||
|
@ -22,14 +22,29 @@ uses
|
||||
type
|
||||
TCefPanelDelegateRef = class(TCefViewDelegateRef, ICefPanelDelegate)
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefPanelDelegate instance using a PCefPanelDelegate data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefPanelDelegate;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// Implement this interface to handle Panel events. The functions of this
|
||||
/// interface will be called on the browser process UI thread unless otherwise
|
||||
/// indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_panel_delegate_capi.h">CEF source file: /include/capi/views/cef_panel_delegate_capi.h (cef_panel_delegate_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefPanelDelegateOwn = class(TCefViewDelegateOwn, ICefPanelDelegate)
|
||||
public
|
||||
constructor Create; override;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// This class handles all the ICefPanelDelegate methods which call the ICefPanelDelegateEvents methods.
|
||||
/// ICefPanelDelegateEvents will be implemented by the control receiving the ICefPanelDelegate events.
|
||||
/// </summary>
|
||||
TCustomPanelDelegate = class(TCefPanelDelegateOwn)
|
||||
protected
|
||||
FEvents : Pointer;
|
||||
@ -47,6 +62,9 @@ type
|
||||
procedure OnBlur(const view: ICefView); override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Creates an instance of this class liked to an interface that's implemented by a control receiving the events.
|
||||
/// </summary>
|
||||
constructor Create(const events: ICefPanelDelegateEvents); reintroduce;
|
||||
end;
|
||||
|
||||
|
@ -20,18 +20,54 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFView;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A ScrollView will show horizontal and/or vertical scrollbars when necessary
|
||||
/// based on the size of the attached content view. Methods must be called on
|
||||
/// the browser process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_scroll_view_capi.h">CEF source file: /include/capi/views/cef_scroll_view_capi.h (cef_scroll_view_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefScrollViewRef = class(TCefViewRef, ICefScrollView)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Set the content View. The content View must have a specified size (e.g.
|
||||
/// via ICefView.SetBounds or ICefViewDelegate.GetPreferredSize).
|
||||
/// </summary>
|
||||
procedure SetContentView(const view: ICefView);
|
||||
/// <summary>
|
||||
/// Returns the content View.
|
||||
/// </summary>
|
||||
function GetContentView : ICefView;
|
||||
/// <summary>
|
||||
/// Returns the visible region of the content View.
|
||||
/// </summary>
|
||||
function GetVisibleContentRect : TCefRect;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the horizontal scrollbar is currently showing.
|
||||
/// </summary>
|
||||
function HasHorizontalScrollbar : boolean;
|
||||
/// <summary>
|
||||
/// Returns the height of the horizontal scrollbar.
|
||||
/// </summary>
|
||||
function GetHorizontalScrollbarHeight : Integer;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the vertical scrollbar is currently showing.
|
||||
/// </summary>
|
||||
function HasVerticalScrollbar : boolean;
|
||||
/// <summary>
|
||||
/// Returns the width of the vertical scrollbar.
|
||||
/// </summary>
|
||||
function GetVerticalScrollbarWidth : Integer;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefScrollView instance using a PCefScrollView data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefScrollView;
|
||||
/// <summary>
|
||||
/// Create a new ScrollView.
|
||||
/// </summary>
|
||||
class function CreateScrollView(const delegate: ICefViewDelegate): ICefScrollView;
|
||||
end;
|
||||
|
||||
|
@ -47,13 +47,34 @@ type
|
||||
procedure doCreateCustomView; override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Create a new ScrollView.
|
||||
/// </summary>
|
||||
procedure CreateScrollView;
|
||||
|
||||
/// <summary>
|
||||
/// Get and set the content View. The content View must have a specified size (e.g.
|
||||
/// via ICefView.SetBounds or ICefViewDelegate.GetPreferredSize).
|
||||
/// </summary>
|
||||
property ContentView : ICefView read GetContentView write SetContentView;
|
||||
/// <summary>
|
||||
/// Returns the visible region of the content View.
|
||||
/// </summary>
|
||||
property VisibleContentRect : TCefRect read GetVisibleContentRect;
|
||||
/// <summary>
|
||||
/// Returns the height of the horizontal scrollbar.
|
||||
/// </summary>
|
||||
property HorizontalScrollbarHeight : Integer read GetHorizontalScrollbarHeight;
|
||||
/// <summary>
|
||||
/// Returns the width of the vertical scrollbar.
|
||||
/// </summary>
|
||||
property VerticalScrollbarWidth : Integer read GetVerticalScrollbarWidth;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the horizontal scrollbar is currently showing.
|
||||
/// </summary>
|
||||
property HasHorizontalScrollbar : boolean read GetHasHorizontalScrollbar;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the vertical scrollbar is currently showing.
|
||||
/// </summary>
|
||||
property HasVerticalScrollbar : boolean read GetHasVerticalScrollbar;
|
||||
end;
|
||||
|
||||
|
@ -20,42 +20,168 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFView;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A Textfield supports editing of text. This control is custom rendered with
|
||||
/// no platform-specific code. Methods must be called on the browser process UI
|
||||
/// thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_textfield_capi.h">CEF source file: /include/capi/views/cef_textfield_capi.h (cef_textfield_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefTextfieldRef = class(TCefViewRef, ICefTextfield)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Sets whether the text will be displayed as asterisks.
|
||||
/// </summary>
|
||||
procedure SetPasswordInput(password_input: boolean);
|
||||
/// <summary>
|
||||
/// Returns true (1) if the text will be displayed as asterisks.
|
||||
/// </summary>
|
||||
function IsPasswordInput : boolean;
|
||||
/// <summary>
|
||||
/// Sets whether the text will read-only.
|
||||
/// </summary>
|
||||
procedure SetReadOnly(read_only: boolean);
|
||||
/// <summary>
|
||||
/// Returns true (1) if the text is read-only.
|
||||
/// </summary>
|
||||
function IsReadOnly : boolean;
|
||||
/// <summary>
|
||||
/// Returns the currently displayed text.
|
||||
/// </summary>
|
||||
function GetText : ustring;
|
||||
/// <summary>
|
||||
/// Sets the contents to |text|. The cursor will be moved to end of the text
|
||||
/// if the current position is outside of the text range.
|
||||
/// </summary>
|
||||
procedure SetText(const text_: ustring);
|
||||
/// <summary>
|
||||
/// Appends |text| to the previously-existing text.
|
||||
/// </summary>
|
||||
procedure AppendText(const text_: ustring);
|
||||
/// <summary>
|
||||
/// Inserts |text| at the current cursor position replacing any selected text.
|
||||
/// </summary>
|
||||
procedure InsertOrReplaceText(const text_: ustring);
|
||||
/// <summary>
|
||||
/// Returns true (1) if there is any selected text.
|
||||
/// </summary>
|
||||
function HasSelection : boolean;
|
||||
/// <summary>
|
||||
/// Returns the currently selected text.
|
||||
/// </summary>
|
||||
function GetSelectedText : ustring;
|
||||
/// <summary>
|
||||
/// Selects all text. If |reversed| is true (1) the range will end at the
|
||||
/// logical beginning of the text; this generally shows the leading portion of
|
||||
/// text that overflows its display area.
|
||||
/// </summary>
|
||||
procedure SelectAll(reversed: boolean);
|
||||
/// <summary>
|
||||
/// Clears the text selection and sets the caret to the end.
|
||||
/// </summary>
|
||||
procedure ClearSelection;
|
||||
/// <summary>
|
||||
/// Returns the selected logical text range.
|
||||
/// </summary>
|
||||
function GetSelectedRange : TCefRange;
|
||||
/// <summary>
|
||||
/// Selects the specified logical text range.
|
||||
/// </summary>
|
||||
procedure SelectRange(const range: TCefRange);
|
||||
/// <summary>
|
||||
/// Returns the current cursor position.
|
||||
/// </summary>
|
||||
function GetCursorPosition : NativeUInt;
|
||||
/// <summary>
|
||||
/// Sets the text color.
|
||||
/// </summary>
|
||||
procedure SetTextColor(color: TCefColor);
|
||||
/// <summary>
|
||||
/// Returns the text color.
|
||||
/// </summary>
|
||||
function GetTextColor : TCefColor;
|
||||
/// <summary>
|
||||
/// Sets the selection text color.
|
||||
/// </summary>
|
||||
procedure SetSelectionTextColor(color: TCefColor);
|
||||
/// <summary>
|
||||
/// Returns the selection text color.
|
||||
/// </summary>
|
||||
function GetSelectionTextColor : TCefColor;
|
||||
/// <summary>
|
||||
/// Sets the selection background color.
|
||||
/// </summary>
|
||||
procedure SetSelectionBackgroundColor(color: TCefColor);
|
||||
/// <summary>
|
||||
/// Returns the selection background color.
|
||||
/// </summary>
|
||||
function GetSelectionBackgroundColor : TCefColor;
|
||||
/// <summary>
|
||||
/// Sets the font list. The format is "<FONT_FAMILY_LIST>,[STYLES] <SIZE>",
|
||||
/// where: - FONT_FAMILY_LIST is a comma-separated list of font family names,
|
||||
/// - STYLES is an optional space-separated list of style names (case-
|
||||
/// sensitive
|
||||
/// "Bold" and "Italic" are supported), and
|
||||
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||
///
|
||||
/// Here are examples of valid font description strings: - "Arial, Helvetica,
|
||||
/// Bold Italic 14px" - "Arial, 14px"
|
||||
/// </summary>
|
||||
procedure SetFontList(const font_list: ustring);
|
||||
/// <summary>
|
||||
/// Applies |color| to the specified |range| without changing the default
|
||||
/// color. If |range| is NULL the color will be set on the complete text
|
||||
/// contents.
|
||||
/// </summary>
|
||||
procedure ApplyTextColor(color: TCefColor; const range: TCefRange);
|
||||
/// <summary>
|
||||
/// Applies |style| to the specified |range| without changing the default
|
||||
/// style. If |add| is true (1) the style will be added, otherwise the style
|
||||
/// will be removed. If |range| is NULL the style will be set on the complete
|
||||
/// text contents.
|
||||
/// </summary>
|
||||
procedure ApplyTextStyle(style: TCefTextStyle; add: boolean; const range: TCefRange);
|
||||
/// <summary>
|
||||
/// Returns true (1) if the action associated with the specified command id is
|
||||
/// enabled. See additional comments on execute_command().
|
||||
/// </summary>
|
||||
function IsCommandEnabled(command_id: TCefTextFieldCommands): boolean;
|
||||
/// <summary>
|
||||
/// Performs the action associated with the specified command id.
|
||||
/// </summary>
|
||||
procedure ExecuteCommand(command_id: TCefTextFieldCommands);
|
||||
/// <summary>
|
||||
/// Clears Edit history.
|
||||
/// </summary>
|
||||
procedure ClearEditHistory;
|
||||
/// <summary>
|
||||
/// Sets the placeholder text that will be displayed when the Textfield is
|
||||
/// NULL.
|
||||
/// </summary>
|
||||
procedure SetPlaceholderText(const text_: ustring);
|
||||
/// <summary>
|
||||
/// Returns the placeholder text that will be displayed when the Textfield is
|
||||
/// NULL.
|
||||
/// </summary>
|
||||
function GetPlaceholderText : ustring;
|
||||
/// <summary>
|
||||
/// Sets the placeholder text color.
|
||||
/// </summary>
|
||||
procedure SetPlaceholderTextColor(color: TCefColor);
|
||||
/// <summary>
|
||||
/// Set the accessible name that will be exposed to assistive technology (AT).
|
||||
/// </summary>
|
||||
procedure SetAccessibleName(const name: ustring);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefTextfield instance using a PCefTextfield data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefTextfield;
|
||||
/// <summary>
|
||||
/// Create a new Textfield.
|
||||
/// </summary>
|
||||
class function CreateTextField(const delegate: ICefTextfieldDelegate): ICefTextfield;
|
||||
end;
|
||||
|
||||
|
@ -57,6 +57,7 @@ type
|
||||
procedure SetSelectionTextColor(color: TCefColor);
|
||||
procedure SetSelectionBackgroundColor(color: TCefColor);
|
||||
procedure SetPlaceholderText(const text_: ustring);
|
||||
procedure SetSelectedRange(const range: TCefRange);
|
||||
|
||||
// ICefTextfieldDelegateEvents
|
||||
procedure doOnKeyEvent(const textfield: ICefTextfield; const event: TCefKeyEvent; var aResult : boolean);
|
||||
@ -66,33 +67,134 @@ type
|
||||
procedure doCreateCustomView; override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Create a new Textfield.
|
||||
/// </summary>
|
||||
procedure CreateTextField;
|
||||
/// <summary>
|
||||
/// Appends |text| to the previously-existing text.
|
||||
/// </summary>
|
||||
procedure AppendText(const text_: ustring);
|
||||
/// <summary>
|
||||
/// Inserts |text| at the current cursor position replacing any selected text.
|
||||
/// </summary>
|
||||
procedure InsertOrReplaceText(const text_: ustring);
|
||||
/// <summary>
|
||||
/// Selects all text. If |reversed| is true (1) the range will end at the
|
||||
/// logical beginning of the text; this generally shows the leading portion of
|
||||
/// text that overflows its display area.
|
||||
/// </summary>
|
||||
procedure SelectAll(reversed: boolean);
|
||||
/// <summary>
|
||||
/// Clears the text selection and sets the caret to the end.
|
||||
/// </summary>
|
||||
procedure ClearSelection;
|
||||
procedure SelectRange(const range: TCefRange);
|
||||
/// <summary>
|
||||
/// <para>Sets the font list. The format is "<FONT_FAMILY_LIST>,[STYLES] <SIZE>",
|
||||
/// where:</para>
|
||||
/// <code>
|
||||
/// - FONT_FAMILY_LIST is a comma-separated list of font family names,
|
||||
/// - STYLES is an optional space-separated list of style names (case-sensitive
|
||||
/// "Bold" and "Italic" are supported), and
|
||||
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||
/// </code>
|
||||
/// <para>Here are examples of valid font description strings:</para>
|
||||
/// <code>
|
||||
/// - "Arial, Helvetica, Bold Italic 14px"
|
||||
/// - "Arial, 14px"
|
||||
/// </code>
|
||||
/// </summary>
|
||||
procedure SetFontList(const font_list: ustring);
|
||||
/// <summary>
|
||||
/// Applies |color| to the specified |range| without changing the default
|
||||
/// color. If |range| is NULL the color will be set on the complete text
|
||||
/// contents.
|
||||
/// </summary>
|
||||
procedure ApplyTextColor(color: TCefColor; const range: TCefRange);
|
||||
/// <summary>
|
||||
/// Applies |style| to the specified |range| without changing the default
|
||||
/// style. If |add| is true (1) the style will be added, otherwise the style
|
||||
/// will be removed. If |range| is NULL the style will be set on the complete
|
||||
/// text contents.
|
||||
/// </summary>
|
||||
procedure ApplyTextStyle(style: TCefTextStyle; add: boolean; const range: TCefRange);
|
||||
/// <summary>
|
||||
/// Returns true (1) if the action associated with the specified command id is
|
||||
/// enabled. See additional comments on execute_command().
|
||||
/// </summary>
|
||||
function IsCommandEnabled(command_id: TCefTextFieldCommands): boolean;
|
||||
/// <summary>
|
||||
/// Performs the action associated with the specified command id.
|
||||
/// </summary>
|
||||
procedure ExecuteCommand(command_id: TCefTextFieldCommands);
|
||||
/// <summary>
|
||||
/// Clears Edit history.
|
||||
/// </summary>
|
||||
procedure ClearEditHistory;
|
||||
/// <summary>
|
||||
/// Set the accessible name that will be exposed to assistive technology (AT).
|
||||
/// </summary>
|
||||
procedure SetAccessibleName(const name_: ustring);
|
||||
/// <summary>
|
||||
/// Sets the placeholder text color.
|
||||
/// </summary>
|
||||
procedure SetPlaceholderTextColor(color: TCefColor);
|
||||
|
||||
/// <summary>
|
||||
/// Returns true (1) if the text will be displayed as asterisks.
|
||||
/// </summary>
|
||||
property PasswordInput : boolean read GetIsPasswordInput write SetPasswordInput;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the text is read-only.
|
||||
/// </summary>
|
||||
property ReadOnly : boolean read GetIsReadOnly write SetReadOnly;
|
||||
/// <summary>
|
||||
/// Returns the currently displayed text.
|
||||
/// </summary>
|
||||
property Text : ustring read GetText write SetText;
|
||||
/// <summary>
|
||||
/// Returns the currently selected text.
|
||||
/// </summary>
|
||||
property SelectedText : ustring read GetSelectedText;
|
||||
/// <summary>
|
||||
/// Returns the selected logical text range.
|
||||
/// </summary>
|
||||
property SelectedRange : TCefRange read GetSelectedRange write SetSelectedRange;
|
||||
/// <summary>
|
||||
/// Returns the current cursor position.
|
||||
/// </summary>
|
||||
property CursorPosition : NativeUInt read GetCursorPosition;
|
||||
/// <summary>
|
||||
/// Returns the text color.
|
||||
/// </summary>
|
||||
property TextColor : TCefColor read GetTextColor write SetTextColor;
|
||||
/// <summary>
|
||||
/// Returns the selection text color.
|
||||
/// </summary>
|
||||
property SelectionTextColor : TCefColor read GetSelectionTextColor write SetSelectionTextColor;
|
||||
/// <summary>
|
||||
/// Returns the selection background color.
|
||||
/// </summary>
|
||||
property SelectionBackgroundColor : TCefColor read GetSelectionBackgroundColor write SetSelectionBackgroundColor;
|
||||
/// <summary>
|
||||
/// Returns the placeholder text that will be displayed when the Textfield is
|
||||
/// NULL.
|
||||
/// </summary>
|
||||
property PlaceholderText : ustring read GetPlaceholderText write SetPlaceholderText;
|
||||
/// <summary>
|
||||
/// Returns true (1) if there is any selected text.
|
||||
/// </summary>
|
||||
property HasSelection : boolean read GetHasSelection;
|
||||
|
||||
published
|
||||
/// <summary>
|
||||
/// Called when |textfield| recieves a keyboard event. |event| contains
|
||||
/// information about the keyboard event. Return true (1) if the keyboard
|
||||
/// event was handled or false (0) otherwise for default handling.
|
||||
/// </summary>
|
||||
property OnTextfieldKeyEvent : TOnTextfieldKeyEventEvent read FOnTextfieldKeyEvent write FOnTextfieldKeyEvent;
|
||||
/// <summary>
|
||||
/// Called after performing a user action that may change |textfield|.
|
||||
/// </summary>
|
||||
property OnAfterUserAction : TOnAfterUserActionEvent read FOnAfterUserAction write FOnAfterUserAction;
|
||||
end;
|
||||
|
||||
@ -345,7 +447,7 @@ begin
|
||||
FTextfield.ClearSelection;
|
||||
end;
|
||||
|
||||
procedure TCEFTextfieldComponent.SelectRange(const range: TCefRange);
|
||||
procedure TCEFTextfieldComponent.SetSelectedRange(const range: TCefRange);
|
||||
begin
|
||||
if Initialized then
|
||||
FTextfield.SelectRange(range);
|
||||
|
@ -26,20 +26,45 @@ type
|
||||
procedure OnAfterUserAction(const textfield: ICefTextfield);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefTextfieldDelegate instance using a PCefTextfieldDelegate data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefTextfieldDelegate;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// Implement this interface to handle Textfield events. The functions of this
|
||||
/// interface will be called on the browser process UI thread unless otherwise
|
||||
/// indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_textfield_delegate_capi.h">CEF source file: /include/capi/views/cef_textfield_delegate_capi.h (cef_textfield_delegate_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefTextfieldDelegateOwn = class(TCefViewDelegateOwn, ICefTextfieldDelegate)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Called when |textfield| recieves a keyboard event. |event| contains
|
||||
/// information about the keyboard event. Return true (1) if the keyboard
|
||||
/// event was handled or false (0) otherwise for default handling.
|
||||
/// </summary>
|
||||
procedure OnKeyEvent(const textfield: ICefTextfield; const event: TCefKeyEvent; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Called after performing a user action that may change |textfield|.
|
||||
/// </summary>
|
||||
procedure OnAfterUserAction(const textfield: ICefTextfield); virtual;
|
||||
|
||||
/// <summary>
|
||||
/// Links the methods in the internal CEF record data pointer with the methods in this class.
|
||||
/// </summary>
|
||||
procedure InitializeCEFMethods; override;
|
||||
|
||||
public
|
||||
constructor Create; override;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// This class handles all the ICefTextfieldDelegate and ICefViewDelegate methods which call the ICefTextfieldDelegateEvents methods.
|
||||
/// ICefTextfieldDelegateEvents will be implemented by the control receiving the ICefTextfieldDelegate events.
|
||||
/// </summary>
|
||||
TCustomTextfieldDelegate = class(TCefTextfieldDelegateOwn)
|
||||
protected
|
||||
FEvents : Pointer;
|
||||
@ -61,6 +86,9 @@ type
|
||||
procedure OnAfterUserAction(const textfield: ICefTextfield); override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Creates an instance of this class liked to an interface that's implemented by a control receiving the events.
|
||||
/// </summary>
|
||||
constructor Create(const events: ICefTextfieldDelegateEvents); reintroduce;
|
||||
end;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
CEF_SUPPORTED_VERSION_MAJOR = 117;
|
||||
CEF_SUPPORTED_VERSION_MINOR = 1;
|
||||
CEF_SUPPORTED_VERSION_RELEASE = 4;
|
||||
CEF_SUPPORTED_VERSION_RELEASE = 5;
|
||||
CEF_SUPPORTED_VERSION_BUILD = 0;
|
||||
|
||||
CEF_CHROMEELF_VERSION_MAJOR = CEF_SUPPORTED_VERSION_MAJOR;
|
||||
CEF_CHROMEELF_VERSION_MINOR = 0;
|
||||
CEF_CHROMEELF_VERSION_RELEASE = 5938;
|
||||
CEF_CHROMEELF_VERSION_BUILD = 92;
|
||||
CEF_CHROMEELF_VERSION_BUILD = 132;
|
||||
|
@ -20,60 +20,289 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
||||
|
||||
type
|
||||
/// <summary>
|
||||
/// A View is a rectangle within the views View hierarchy. It is the base
|
||||
/// interface for all Views. All size and position values are in density
|
||||
/// independent pixels (DIP) unless otherwise indicated. Methods must be called
|
||||
/// on the browser process UI thread unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_view_capi.h">CEF source file: /include/capi/views/cef_view_capi.h (cef_view_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefViewRef = class(TCefBaseRefCountedRef, ICefView)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Returns this View as a BrowserView or NULL if this is not a BrowserView.
|
||||
/// </summary>
|
||||
function AsBrowserView : ICefBrowserView;
|
||||
/// <summary>
|
||||
/// Returns this View as a Button or NULL if this is not a Button.
|
||||
/// </summary>
|
||||
function AsButton : ICefButton;
|
||||
/// <summary>
|
||||
/// Returns this View as a Panel or NULL if this is not a Panel.
|
||||
/// </summary>
|
||||
function AsPanel : ICefPanel;
|
||||
/// <summary>
|
||||
/// Returns this View as a ScrollView or NULL if this is not a ScrollView.
|
||||
/// </summary>
|
||||
function AsScrollView : ICefScrollView;
|
||||
/// <summary>
|
||||
/// Returns this View as a Textfield or NULL if this is not a Textfield.
|
||||
/// </summary>
|
||||
function AsTextfield : ICefTextfield;
|
||||
/// <summary>
|
||||
/// Returns the type of this View as a string. Used primarily for testing
|
||||
/// purposes.
|
||||
/// </summary>
|
||||
function GetTypeString : ustring;
|
||||
/// <summary>
|
||||
/// Returns a string representation of this View which includes the type and
|
||||
/// various type-specific identifying attributes. If |include_children| is
|
||||
/// true (1) any child Views will also be included. Used primarily for testing
|
||||
/// purposes.
|
||||
/// </summary>
|
||||
function ToStringEx(include_children: boolean): ustring;
|
||||
/// <summary>
|
||||
/// Returns true (1) if this View is valid.
|
||||
/// </summary>
|
||||
function IsValid : boolean;
|
||||
/// <summary>
|
||||
/// Returns true (1) if this View is currently attached to another View. A
|
||||
/// View can only be attached to one View at a time.
|
||||
/// </summary>
|
||||
function IsAttached : boolean;
|
||||
/// <summary>
|
||||
/// Returns true (1) if this View is the same as |that| View.
|
||||
/// </summary>
|
||||
function IsSame(const that: ICefView): boolean;
|
||||
/// <summary>
|
||||
/// Returns the delegate associated with this View, if any.
|
||||
/// </summary>
|
||||
function GetDelegate : ICefViewDelegate;
|
||||
/// <summary>
|
||||
/// Returns the top-level Window hosting this View, if any.
|
||||
/// </summary>
|
||||
function GetWindow : ICefWindow;
|
||||
/// <summary>
|
||||
/// Returns the ID for this View.
|
||||
/// </summary>
|
||||
function GetID : Integer;
|
||||
/// <summary>
|
||||
/// Sets the ID for this View. ID should be unique within the subtree that you
|
||||
/// intend to search for it. 0 is the default ID for views.
|
||||
/// </summary>
|
||||
procedure SetID(id_: Integer);
|
||||
/// <summary>
|
||||
/// Returns the group id of this View, or -1 if not set.
|
||||
/// </summary>
|
||||
function GetGroupID : Integer;
|
||||
/// <summary>
|
||||
/// A group id is used to tag Views which are part of the same logical group.
|
||||
/// Focus can be moved between views with the same group using the arrow keys.
|
||||
/// The group id is immutable once it's set.
|
||||
/// </summary>
|
||||
procedure SetGroupID(group_id: Integer);
|
||||
/// <summary>
|
||||
/// Returns the View that contains this View, if any.
|
||||
/// </summary>
|
||||
function GetParentView : ICefView;
|
||||
/// <summary>
|
||||
/// Recursively descends the view tree starting at this View, and returns the
|
||||
/// first child that it encounters with the given ID. Returns NULL if no
|
||||
/// matching child view is found.
|
||||
/// </summary>
|
||||
function GetViewForID(id_: Integer): ICefView;
|
||||
/// <summary>
|
||||
/// Sets the bounds (size and position) of this View. |bounds| is in parent
|
||||
/// coordinates, or DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
procedure SetBounds(const bounds_: TCefRect);
|
||||
/// <summary>
|
||||
/// Returns the bounds (size and position) of this View in parent coordinates,
|
||||
/// or DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
function GetBounds : TCefRect;
|
||||
/// <summary>
|
||||
/// Returns the bounds (size and position) of this View in DIP screen
|
||||
/// coordinates.
|
||||
/// </summary>
|
||||
function GetBoundsInScreen : TCefRect;
|
||||
/// <summary>
|
||||
/// Sets the size of this View without changing the position. |size| in parent
|
||||
/// coordinates, or DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
procedure SetSize(const size_: TCefSize);
|
||||
/// <summary>
|
||||
/// Returns the size of this View in parent coordinates, or DIP screen
|
||||
/// coordinates if there is no parent.
|
||||
/// </summary>
|
||||
function GetSize : TCefSize;
|
||||
/// <summary>
|
||||
/// Sets the position of this View without changing the size. |position| is in
|
||||
/// parent coordinates, or DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
procedure SetPosition(const position_: TCefPoint);
|
||||
/// <summary>
|
||||
/// Returns the position of this View. Position is in parent coordinates, or
|
||||
/// DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
function GetPosition : TCefPoint;
|
||||
/// <summary>
|
||||
/// Sets the insets for this View. |insets| is in parent coordinates, or DIP
|
||||
/// screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
procedure SetInsets(const insets: TCefInsets);
|
||||
/// <summary>
|
||||
/// Returns the insets for this View in parent coordinates, or DIP screen
|
||||
/// coordinates if there is no parent.
|
||||
/// </summary>
|
||||
function GetInsets: TCefInsets;
|
||||
/// <summary>
|
||||
/// Returns the size this View would like to be if enough space is available.
|
||||
/// Size is in parent coordinates, or DIP screen coordinates if there is no
|
||||
/// parent.
|
||||
/// </summary>
|
||||
function GetPreferredSize : TCefSize;
|
||||
/// <summary>
|
||||
/// Size this View to its preferred size. Size is in parent coordinates, or
|
||||
/// DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
procedure SizeToPreferredSize;
|
||||
/// <summary>
|
||||
/// Returns the minimum size for this View. Size is in parent coordinates, or
|
||||
/// DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
function GetMinimumSize : TCefSize;
|
||||
/// <summary>
|
||||
/// Returns the maximum size for this View. Size is in parent coordinates, or
|
||||
/// DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
function GetMaximumSize : TCefSize;
|
||||
/// <summary>
|
||||
/// Returns the height necessary to display this View with the provided width.
|
||||
/// </summary>
|
||||
function GetHeightForWidth(width: Integer): Integer;
|
||||
/// <summary>
|
||||
/// Indicate that this View and all parent Views require a re-layout. This
|
||||
/// ensures the next call to layout() will propagate to this View even if the
|
||||
/// bounds of parent Views do not change.
|
||||
/// </summary>
|
||||
procedure InvalidateLayout;
|
||||
/// <summary>
|
||||
/// Sets whether this View is visible. Windows are hidden by default and other
|
||||
/// views are visible by default. This View and any parent views must be set
|
||||
/// as visible for this View to be drawn in a Window. If this View is set as
|
||||
/// hidden then it and any child views will not be drawn and, if any of those
|
||||
/// views currently have focus, then focus will also be cleared. Painting is
|
||||
/// scheduled as needed. If this View is a Window then calling this function
|
||||
/// is equivalent to calling the Window show() and hide() functions.
|
||||
/// </summary>
|
||||
procedure SetVisible(visible_: boolean);
|
||||
/// <summary>
|
||||
/// Returns whether this View is visible. A view may be visible but still not
|
||||
/// drawn in a Window if any parent views are hidden. If this View is a Window
|
||||
/// then a return value of true (1) indicates that this Window is currently
|
||||
/// visible to the user on-screen. If this View is not a Window then call
|
||||
/// is_drawn() to determine whether this View and all parent views are visible
|
||||
/// and will be drawn.
|
||||
/// </summary>
|
||||
function IsVisible : boolean;
|
||||
/// <summary>
|
||||
/// Returns whether this View is visible and drawn in a Window. A view is
|
||||
/// drawn if it and all parent views are visible. If this View is a Window
|
||||
/// then calling this function is equivalent to calling is_visible().
|
||||
/// Otherwise, to determine if the containing Window is visible to the user
|
||||
/// on-screen call is_visible() on the Window.
|
||||
/// </summary>
|
||||
function IsDrawn : boolean;
|
||||
/// <summary>
|
||||
/// Set whether this View is enabled. A disabled View does not receive
|
||||
/// keyboard or mouse inputs. If |enabled| differs from the current value the
|
||||
/// View will be repainted. Also, clears focus if the focused View is
|
||||
/// disabled.
|
||||
/// </summary>
|
||||
procedure SetEnabled(enabled_: boolean);
|
||||
/// <summary>
|
||||
/// Returns whether this View is enabled.
|
||||
/// </summary>
|
||||
function IsEnabled : boolean;
|
||||
/// <summary>
|
||||
/// Sets whether this View is capable of taking focus. It will clear focus if
|
||||
/// the focused View is set to be non-focusable. This is false (0) by default
|
||||
/// so that a View used as a container does not get the focus.
|
||||
/// </summary>
|
||||
procedure SetFocusable(focusable_: boolean);
|
||||
/// <summary>
|
||||
/// Returns true (1) if this View is focusable, enabled and drawn.
|
||||
/// </summary>
|
||||
function IsFocusable : boolean;
|
||||
/// <summary>
|
||||
/// Return whether this View is focusable when the user requires full keyboard
|
||||
/// access, even though it may not be normally focusable.
|
||||
/// </summary>
|
||||
function IsAccessibilityFocusable : boolean;
|
||||
/// <summary>
|
||||
/// Request keyboard focus. If this View is focusable it will become the
|
||||
/// focused View.
|
||||
/// </summary>
|
||||
procedure RequestFocus;
|
||||
/// <summary>
|
||||
/// Sets the background color for this View.
|
||||
/// </summary>
|
||||
procedure SetBackgroundColor(color: TCefColor);
|
||||
/// <summary>
|
||||
/// Returns the background color for this View.
|
||||
/// </summary>
|
||||
function GetBackgroundColor : TCefColor;
|
||||
/// <summary>
|
||||
/// Convert |point| from this View's coordinate system to DIP screen
|
||||
/// coordinates. This View must belong to a Window when calling this function.
|
||||
/// Returns true (1) if the conversion is successful or false (0) otherwise.
|
||||
/// Use ICefDisplay.ConvertPointToPixels() after calling this function
|
||||
/// if further conversion to display-specific pixel coordinates is desired.
|
||||
/// </summary>
|
||||
function ConvertPointToScreen(var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| to this View's coordinate system from DIP screen
|
||||
/// coordinates. This View must belong to a Window when calling this function.
|
||||
/// Returns true (1) if the conversion is successful or false (0) otherwise.
|
||||
/// Use ICefDisplay.ConvertPointFromPixels() before calling this
|
||||
/// function if conversion from display-specific pixel coordinates is
|
||||
/// necessary.
|
||||
/// </summary>
|
||||
function ConvertPointFromScreen(var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| from this View's coordinate system to that of the Window.
|
||||
/// This View must belong to a Window when calling this function. Returns true
|
||||
/// (1) if the conversion is successful or false (0) otherwise.
|
||||
/// </summary>
|
||||
function ConvertPointToWindow(var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| to this View's coordinate system from that of the Window.
|
||||
/// This View must belong to a Window when calling this function. Returns true
|
||||
/// (1) if the conversion is successful or false (0) otherwise.
|
||||
/// </summary>
|
||||
function ConvertPointFromWindow(var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| from this View's coordinate system to that of |view|.
|
||||
/// |view| needs to be in the same Window but not necessarily the same view
|
||||
/// hierarchy. Returns true (1) if the conversion is successful or false (0)
|
||||
/// otherwise.
|
||||
/// </summary>
|
||||
function ConvertPointToView(const view : ICefView; var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| to this View's coordinate system from that |view|. |view|
|
||||
/// needs to be in the same Window but not necessarily the same view
|
||||
/// hierarchy. Returns true (1) if the conversion is successful or false (0)
|
||||
/// otherwise.
|
||||
/// </summary>
|
||||
function ConvertPointFromView(const view : ICefView; var point: TCefPoint): boolean;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefView instance using a PCefView data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefView;
|
||||
end;
|
||||
|
||||
|
@ -71,6 +71,7 @@ type
|
||||
function GetBackgroundColor : TCefColor;
|
||||
function GetViewForID(id_: Integer): ICefView;
|
||||
function GetHeightForWidth(width: Integer): Integer;
|
||||
function GetInsets: TCefInsets;
|
||||
|
||||
procedure SetID(id_: Integer);
|
||||
procedure SetGroupID(group_id: Integer);
|
||||
@ -81,6 +82,7 @@ type
|
||||
procedure SetEnabled(enabled_: boolean);
|
||||
procedure SetFocusable(focusable_: boolean);
|
||||
procedure SetBackgroundColor(color: TCefColor);
|
||||
procedure SetInsets(const insets: TCefInsets);
|
||||
|
||||
// ICefViewDelegateEvents
|
||||
procedure doOnGetPreferredSize(const view: ICefView; var aResult : TCefSize); virtual;
|
||||
@ -98,61 +100,283 @@ type
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure BeforeDestruction; override;
|
||||
|
||||
/// <summary>
|
||||
/// Returns a string representation of this View which includes the type and
|
||||
/// various type-specific identifying attributes. If |include_children| is
|
||||
/// true (1) any child Views will also be included. Used primarily for testing
|
||||
/// purposes.
|
||||
/// </summary>
|
||||
function ToStringEx(include_children: boolean): ustring;
|
||||
/// <summary>
|
||||
/// Returns true (1) if this View is the same as |that| View.
|
||||
/// </summary>
|
||||
function IsSame(const that: ICefView): boolean;
|
||||
/// <summary>
|
||||
/// Size this View to its preferred size. Size is in parent coordinates, or
|
||||
/// DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
procedure SizeToPreferredSize;
|
||||
/// <summary>
|
||||
/// Indicate that this View and all parent Views require a re-layout. This
|
||||
/// ensures the next call to layout() will propagate to this View even if the
|
||||
/// bounds of parent Views do not change.
|
||||
/// </summary>
|
||||
procedure InvalidateLayout;
|
||||
/// <summary>
|
||||
/// Request keyboard focus. If this View is focusable it will become the
|
||||
/// focused View.
|
||||
/// </summary>
|
||||
procedure RequestFocus;
|
||||
|
||||
/// <summary>
|
||||
/// Convert |point| from this View's coordinate system to DIP screen
|
||||
/// coordinates. This View must belong to a Window when calling this function.
|
||||
/// Returns true (1) if the conversion is successful or false (0) otherwise.
|
||||
/// Use ICefDisplay.ConvertPointToPixels() after calling this function
|
||||
/// if further conversion to display-specific pixel coordinates is desired.
|
||||
/// </summary>
|
||||
function ConvertPointToScreen(var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| to this View's coordinate system from DIP screen
|
||||
/// coordinates. This View must belong to a Window when calling this function.
|
||||
/// Returns true (1) if the conversion is successful or false (0) otherwise.
|
||||
/// Use ICefDisplay.ConvertPointFromPixels() before calling this
|
||||
/// function if conversion from display-specific pixel coordinates is
|
||||
/// necessary.
|
||||
/// </summary>
|
||||
function ConvertPointFromScreen(var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| from this View's coordinate system to that of the Window.
|
||||
/// This View must belong to a Window when calling this function. Returns true
|
||||
/// (1) if the conversion is successful or false (0) otherwise.
|
||||
/// </summary>
|
||||
function ConvertPointToWindow(var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| to this View's coordinate system from that of the Window.
|
||||
/// This View must belong to a Window when calling this function. Returns true
|
||||
/// (1) if the conversion is successful or false (0) otherwise.
|
||||
/// </summary>
|
||||
function ConvertPointFromWindow(var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| from this View's coordinate system to that of |view|.
|
||||
/// |view| needs to be in the same Window but not necessarily the same view
|
||||
/// hierarchy. Returns true (1) if the conversion is successful or false (0)
|
||||
/// otherwise.
|
||||
/// </summary>
|
||||
function ConvertPointToView(const view : ICefView; var point: TCefPoint): boolean;
|
||||
/// <summary>
|
||||
/// Convert |point| to this View's coordinate system from that |view|. |view|
|
||||
/// needs to be in the same Window but not necessarily the same view
|
||||
/// hierarchy. Returns true (1) if the conversion is successful or false (0)
|
||||
/// otherwise.
|
||||
/// </summary>
|
||||
function ConvertPointFromView(const view : ICefView; var point: TCefPoint): boolean;
|
||||
|
||||
/// <summary>
|
||||
/// Returns true when the control is fully initialized.
|
||||
/// </summary>
|
||||
property Initialized : boolean read GetInitialized;
|
||||
/// <summary>
|
||||
/// Returns this control as a View.
|
||||
/// </summary>
|
||||
property AsView : ICefView read GetAsView;
|
||||
/// <summary>
|
||||
/// Returns this View as a BrowserView or NULL if this is not a BrowserView.
|
||||
/// </summary>
|
||||
property AsBrowserView : ICefBrowserView read GetAsBrowserView;
|
||||
/// <summary>
|
||||
/// Returns this View as a Button or NULL if this is not a Button.
|
||||
/// </summary>
|
||||
property AsButton : ICefButton read GetAsButton;
|
||||
/// <summary>
|
||||
/// Returns this View as a Panel or NULL if this is not a Panel.
|
||||
/// </summary>
|
||||
property AsPanel : ICefPanel read GetAsPanel;
|
||||
/// <summary>
|
||||
/// Returns this View as a ScrollView or NULL if this is not a ScrollView.
|
||||
/// </summary>
|
||||
property AsScrollView : ICefScrollView read GetAsScrollView;
|
||||
/// <summary>
|
||||
/// Returns this View as a Textfield or NULL if this is not a Textfield.
|
||||
/// </summary>
|
||||
property AsTextfield : ICefTextfield read GetAsTextfield;
|
||||
/// <summary>
|
||||
/// Recursively descends the view tree starting at this View, and returns the
|
||||
/// first child that it encounters with the given ID. Returns NULL if no
|
||||
/// matching child view is found.
|
||||
/// </summary>
|
||||
property ViewForID[id_: Integer] : ICefView read GetViewForID;
|
||||
/// <summary>
|
||||
/// Returns true (1) if this View is valid.
|
||||
/// </summary>
|
||||
property Valid : boolean read GetIsValid;
|
||||
/// <summary>
|
||||
/// Returns true (1) if this View is currently attached to another View. A
|
||||
/// View can only be attached to one View at a time.
|
||||
/// </summary>
|
||||
property Attached : boolean read GetIsAttached;
|
||||
/// <summary>
|
||||
/// Returns the delegate associated with this View, if any.
|
||||
/// </summary>
|
||||
property Delegate : ICefViewDelegate read GetDelegate;
|
||||
/// <summary>
|
||||
/// Returns the top-level Window hosting this View, if any.
|
||||
/// </summary>
|
||||
property Window : ICefWindow read GetWindow;
|
||||
/// <summary>
|
||||
/// Returns the View that contains this View, if any.
|
||||
/// </summary>
|
||||
property ParentView : ICefView read GetParentView;
|
||||
/// <summary>
|
||||
/// Returns the bounds (size and position) of this View in DIP screen
|
||||
/// coordinates.
|
||||
/// </summary>
|
||||
property BoundsInScreen : TCefRect read GetBoundsInScreen;
|
||||
/// <summary>
|
||||
/// Returns the size this View would like to be if enough space is available.
|
||||
/// Size is in parent coordinates, or DIP screen coordinates if there is no
|
||||
/// parent.
|
||||
/// </summary>
|
||||
property PreferredSize : TCefSize read GetPreferredSize;
|
||||
/// <summary>
|
||||
/// Returns the minimum size for this View. Size is in parent coordinates, or
|
||||
/// DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
property MinimumSize : TCefSize read GetMinimumSize;
|
||||
/// <summary>
|
||||
/// Returns the maximum size for this View. Size is in parent coordinates, or
|
||||
/// DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
property MaximumSize : TCefSize read GetMaximumSize;
|
||||
/// <summary>
|
||||
/// Returns whether this View is visible. A view may be visible but still not
|
||||
/// drawn in a Window if any parent views are hidden. If this View is a Window
|
||||
/// then a return value of true (1) indicates that this Window is currently
|
||||
/// visible to the user on-screen. If this View is not a Window then call
|
||||
/// is_drawn() to determine whether this View and all parent views are visible
|
||||
/// and will be drawn.
|
||||
/// </summary>
|
||||
property Visible : boolean read GetIsVisible write SetVisible;
|
||||
/// <summary>
|
||||
/// Returns whether this View is visible and drawn in a Window. A view is
|
||||
/// drawn if it and all parent views are visible. If this View is a Window
|
||||
/// then calling this function is equivalent to calling is_visible().
|
||||
/// Otherwise, to determine if the containing Window is visible to the user
|
||||
/// on-screen call is_visible() on the Window.
|
||||
/// </summary>
|
||||
property Drawn : boolean read GetIsDrawn;
|
||||
/// <summary>
|
||||
/// Get or set whether this View is enabled. A disabled View does not receive
|
||||
/// keyboard or mouse inputs. If |enabled| differs from the current value the
|
||||
/// View will be repainted. Also, clears focus if the focused View is
|
||||
/// disabled.
|
||||
/// </summary>
|
||||
property Enabled : boolean read GetIsEnabled write SetEnabled;
|
||||
/// <summary>
|
||||
/// Gets and sets whether this View is capable of taking focus. It will clear focus if
|
||||
/// the focused View is set to be non-focusable. This is false (0) by default
|
||||
/// so that a View used as a container does not get the focus.
|
||||
/// </summary>
|
||||
property Focusable : boolean read GetIsFocusable write SetFocusable;
|
||||
/// <summary>
|
||||
/// Return whether this View is focusable when the user requires full keyboard
|
||||
/// access, even though it may not be normally focusable.
|
||||
/// </summary>
|
||||
property AccessibilityFocusable : boolean read GetIsAccessibilityFocusable;
|
||||
/// <summary>
|
||||
/// Returns the background color for this View.
|
||||
/// </summary>
|
||||
property BackgroundColor : TCefColor read GetBackgroundColor write SetBackgroundColor;
|
||||
/// <summary>
|
||||
/// Gets or sets the ID for this View. ID should be unique within the subtree that you
|
||||
/// intend to search for it. 0 is the default ID for views.
|
||||
/// </summary>
|
||||
property ID : integer read GetID write SetID;
|
||||
/// <summary>
|
||||
/// Returns the group id of this View, or -1 if not set.
|
||||
/// </summary>
|
||||
property GroupID : integer read GetGroupID write SetGroupID;
|
||||
/// <summary>
|
||||
/// Returns the bounds (size and position) of this View in parent coordinates,
|
||||
/// or DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
property Bounds : TCefRect read GetBounds write SetBounds;
|
||||
/// <summary>
|
||||
/// Returns the size of this View in parent coordinates, or DIP screen
|
||||
/// coordinates if there is no parent.
|
||||
/// </summary>
|
||||
property Size : TCefSize read GetSize write SetSize;
|
||||
/// <summary>
|
||||
/// Returns the position of this View. Position is in parent coordinates, or
|
||||
/// DIP screen coordinates if there is no parent.
|
||||
/// </summary>
|
||||
property Position : TCefPoint read GetPosition write SetPosition;
|
||||
/// <summary>
|
||||
/// Returns the insets for this View in parent coordinates, or DIP screen
|
||||
/// coordinates if there is no parent.
|
||||
/// </summary>
|
||||
property Insets : TCefInsets read GetInsets write SetInsets;
|
||||
/// <summary>
|
||||
/// Returns the type of this View as a string. Used primarily for testing
|
||||
/// purposes.
|
||||
/// </summary>
|
||||
property TypeString : ustring read GetTypeString;
|
||||
/// <summary>
|
||||
/// Returns the height necessary to display this View with the provided width.
|
||||
/// </summary>
|
||||
property HeightForWidth[width: Integer] : Integer read GetHeightForWidth;
|
||||
|
||||
published
|
||||
/// <summary>
|
||||
/// Return the preferred size for |view|. The Layout will use this information
|
||||
/// to determine the display size.
|
||||
/// </summary>
|
||||
property OnGetPreferredSize : TOnGetPreferredSizeEvent read FOnGetPreferredSize write FOnGetPreferredSize;
|
||||
/// <summary>
|
||||
/// Return the minimum size for |view|.
|
||||
/// </summary>
|
||||
property OnGetMinimumSize : TOnGetMinimumSizeEvent read FOnGetMinimumSize write FOnGetMinimumSize;
|
||||
/// <summary>
|
||||
/// Return the maximum size for |view|.
|
||||
/// </summary>
|
||||
property OnGetMaximumSize : TOnGetMaximumSizeEvent read FOnGetMaximumSize write FOnGetMaximumSize;
|
||||
/// <summary>
|
||||
/// Return the height necessary to display |view| with the provided |width|.
|
||||
/// If not specified the result of get_preferred_size().height will be used by
|
||||
/// default. Override if |view|'s preferred height depends upon the width (for
|
||||
/// example, with Labels).
|
||||
/// </summary>
|
||||
property OnGetHeightForWidth : TOnGetHeightForWidthEvent read FOnGetHeightForWidth write FOnGetHeightForWidth;
|
||||
/// <summary>
|
||||
/// Called when the parent of |view| has changed. If |view| is being added to
|
||||
/// |parent| then |added| will be true (1). If |view| is being removed from
|
||||
/// |parent| then |added| will be false (0). If |view| is being reparented the
|
||||
/// remove notification will be sent before the add notification. Do not
|
||||
/// modify the view hierarchy in this callback.
|
||||
/// </summary>
|
||||
property OnParentViewChanged : TOnParentViewChangedEvent read FOnParentViewChanged write FOnParentViewChanged;
|
||||
/// <summary>
|
||||
/// Called when a child of |view| has changed. If |child| is being added to
|
||||
/// |view| then |added| will be true (1). If |child| is being removed from
|
||||
/// |view| then |added| will be false (0). If |child| is being reparented the
|
||||
/// remove notification will be sent to the old parent before the add
|
||||
/// notification is sent to the new parent. Do not modify the view hierarchy
|
||||
/// in this callback.
|
||||
/// </summary>
|
||||
property OnChildViewChanged : TOnChildViewChangedEvent read FOnChildViewChanged write FOnChildViewChanged;
|
||||
/// <summary>
|
||||
/// Called when |view| is added or removed from the ICefWindow.
|
||||
/// </summary>
|
||||
property OnWindowChanged : TOnWindowChangedEvent read FOnWindowChanged write FOnWindowChanged;
|
||||
/// <summary>
|
||||
/// Called when the layout of |view| has changed.
|
||||
/// </summary>
|
||||
property OnLayoutChanged : TOnLayoutChangedEvent read FOnLayoutChanged write FOnLayoutChanged;
|
||||
/// <summary>
|
||||
/// Called when |view| gains focus.
|
||||
/// </summary>
|
||||
property OnFocus : TOnFocusEvent read FOnFocus write FOnFocus;
|
||||
/// <summary>
|
||||
/// Called when |view| loses focus.
|
||||
/// </summary>
|
||||
property OnBlur : TOnBlurEvent read FOnBlur write FOnBlur;
|
||||
end;
|
||||
|
||||
@ -521,6 +745,19 @@ begin
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
function TCEFViewComponent.GetInsets: TCefInsets;
|
||||
begin
|
||||
if Initialized then
|
||||
Result := AsView.GetInsets
|
||||
else
|
||||
begin
|
||||
Result.top := 0;
|
||||
Result.left := 0;
|
||||
Result.bottom := 0;
|
||||
Result.right := 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCEFViewComponent.InvalidateLayout;
|
||||
begin
|
||||
if Initialized then
|
||||
@ -582,6 +819,12 @@ begin
|
||||
AsView.SetBackgroundColor(color);
|
||||
end;
|
||||
|
||||
procedure TCEFViewComponent.SetInsets(const insets: TCefInsets);
|
||||
begin
|
||||
if Initialized then
|
||||
AsView.SetInsets(insets);
|
||||
end;
|
||||
|
||||
function TCEFViewComponent.GetBackgroundColor : TCefColor;
|
||||
begin
|
||||
if Initialized then
|
||||
|
@ -34,27 +34,88 @@ type
|
||||
procedure OnBlur(const view: ICefView);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefViewDelegate instance using a PCefViewDelegate data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefViewDelegate;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// Implement this interface to handle view events. All size and position values
|
||||
/// are in density independent pixels (DIP) unless otherwise indicated. The
|
||||
/// functions of this interface will be called on the browser process UI thread
|
||||
/// unless otherwise indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_view_delegate_capi.h">CEF source file: /include/capi/views/cef_view_delegate_capi.h (cef_view_delegate_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefViewDelegateOwn = class(TCefBaseRefCountedOwn, ICefViewDelegate)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Return the preferred size for |view|. The Layout will use this information
|
||||
/// to determine the display size.
|
||||
/// </summary>
|
||||
procedure OnGetPreferredSize(const view: ICefView; var aResult : TCefSize); virtual;
|
||||
/// <summary>
|
||||
/// Return the minimum size for |view|.
|
||||
/// </summary>
|
||||
procedure OnGetMinimumSize(const view: ICefView; var aResult : TCefSize); virtual;
|
||||
/// <summary>
|
||||
/// Return the maximum size for |view|.
|
||||
/// </summary>
|
||||
procedure OnGetMaximumSize(const view: ICefView; var aResult : TCefSize); virtual;
|
||||
/// <summary>
|
||||
/// Return the height necessary to display |view| with the provided |width|.
|
||||
/// If not specified the result of get_preferred_size().height will be used by
|
||||
/// default. Override if |view|'s preferred height depends upon the width (for
|
||||
/// example, with Labels).
|
||||
/// </summary>
|
||||
procedure OnGetHeightForWidth(const view: ICefView; width: Integer; var aResult: Integer); virtual;
|
||||
/// <summary>
|
||||
/// Called when the parent of |view| has changed. If |view| is being added to
|
||||
/// |parent| then |added| will be true (1). If |view| is being removed from
|
||||
/// |parent| then |added| will be false (0). If |view| is being reparented the
|
||||
/// remove notification will be sent before the add notification. Do not
|
||||
/// modify the view hierarchy in this callback.
|
||||
/// </summary>
|
||||
procedure OnParentViewChanged(const view: ICefView; added: boolean; const parent: ICefView); virtual;
|
||||
/// <summary>
|
||||
/// Called when a child of |view| has changed. If |child| is being added to
|
||||
/// |view| then |added| will be true (1). If |child| is being removed from
|
||||
/// |view| then |added| will be false (0). If |child| is being reparented the
|
||||
/// remove notification will be sent to the old parent before the add
|
||||
/// notification is sent to the new parent. Do not modify the view hierarchy
|
||||
/// in this callback.
|
||||
/// </summary>
|
||||
procedure OnChildViewChanged(const view: ICefView; added: boolean; const child: ICefView); virtual;
|
||||
/// <summary>
|
||||
/// Called when |view| is added or removed from the ICefWindow.
|
||||
/// </summary>
|
||||
procedure OnWindowChanged(const view: ICefView; added: boolean); virtual;
|
||||
/// <summary>
|
||||
/// Called when the layout of |view| has changed.
|
||||
/// </summary>
|
||||
procedure OnLayoutChanged(const view: ICefView; new_bounds: TCefRect); virtual;
|
||||
/// <summary>
|
||||
/// Called when |view| gains focus.
|
||||
/// </summary>
|
||||
procedure OnFocus(const view: ICefView); virtual;
|
||||
/// <summary>
|
||||
/// Called when |view| loses focus.
|
||||
/// </summary>
|
||||
procedure OnBlur(const view: ICefView); virtual;
|
||||
|
||||
/// <summary>
|
||||
/// Links the methods in the internal CEF record data pointer with the methods in this class.
|
||||
/// </summary>
|
||||
procedure InitializeCEFMethods; virtual;
|
||||
public
|
||||
constructor Create; virtual;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// This class handles all the ICefViewDelegate methods which call the ICefViewDelegateEvents methods.
|
||||
/// ICefViewDelegateEvents will be implemented by the control receiving the ICefViewDelegate events.
|
||||
/// </summary>
|
||||
TCustomViewDelegate = class(TCefViewDelegateOwn)
|
||||
protected
|
||||
FEvents : Pointer;
|
||||
@ -71,6 +132,9 @@ type
|
||||
procedure OnBlur(const view: ICefView); override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Creates an instance of this class liked to an interface that's implemented by a control receiving the events.
|
||||
/// </summary>
|
||||
constructor Create(const events: ICefViewDelegateEvents); reintroduce;
|
||||
destructor Destroy; override;
|
||||
end;
|
||||
|
@ -282,7 +282,13 @@ type
|
||||
procedure RemoveAllAccelerators;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefWindow instance using a PCefWindow data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefWindow;
|
||||
/// <summary>
|
||||
/// Create a new Window.
|
||||
/// </summary>
|
||||
class function CreateTopLevel(const delegate: ICefWindowDelegate): ICefWindow;
|
||||
end;
|
||||
|
||||
|
@ -101,60 +101,313 @@ type
|
||||
procedure doCreateCustomView; override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Create a new Window.
|
||||
/// </summary>
|
||||
procedure CreateTopLevelWindow;
|
||||
/// <summary>
|
||||
/// Show the Window.
|
||||
/// </summary>
|
||||
procedure Show;
|
||||
/// <summary>
|
||||
/// Show the Window as a browser modal dialog relative to |browser_view|. A
|
||||
/// parent Window must be returned via
|
||||
/// cef_window_delegate_t::get_parent_window() and |browser_view| must belong
|
||||
/// to that parent Window. While this Window is visible, |browser_view| will
|
||||
/// be disabled while other controls in the parent Window remain enabled.
|
||||
/// Navigating or destroying the |browser_view| will close this Window
|
||||
/// automatically. Alternately, use show() and return true (1) from
|
||||
/// cef_window_delegate_t::is_window_modal_dialog() for a window modal dialog
|
||||
/// where all controls in the parent Window are disabled.
|
||||
/// </summary>
|
||||
procedure ShowAsBrowserModalDialog(const browser_view: ICefBrowserView);
|
||||
/// <summary>
|
||||
/// Hide the Window.
|
||||
/// </summary>
|
||||
procedure Hide;
|
||||
/// <summary>
|
||||
/// Sizes the Window to |size| and centers it in the current display.
|
||||
/// </summary>
|
||||
procedure CenterWindow(const size_: TCefSize);
|
||||
/// <summary>
|
||||
/// Close the Window.
|
||||
/// </summary>
|
||||
procedure Close;
|
||||
/// <summary>
|
||||
/// Activate the Window, assuming it already exists and is visible.
|
||||
/// </summary>
|
||||
procedure Activate;
|
||||
/// <summary>
|
||||
/// Deactivate the Window, making the next Window in the Z order the active
|
||||
/// Window.
|
||||
/// </summary>
|
||||
procedure Deactivate;
|
||||
/// <summary>
|
||||
/// Bring this Window to the top of other Windows in the Windowing system.
|
||||
/// </summary>
|
||||
procedure BringToTop;
|
||||
/// <summary>
|
||||
/// Maximize the Window.
|
||||
/// </summary>
|
||||
procedure Maximize;
|
||||
/// <summary>
|
||||
/// Minimize the Window.
|
||||
/// </summary>
|
||||
procedure Minimize;
|
||||
/// <summary>
|
||||
/// Restore the Window.
|
||||
/// </summary>
|
||||
procedure Restore;
|
||||
/// <summary>
|
||||
/// <para>Add a View that will be overlayed on the Window contents with absolute
|
||||
/// positioning and high z-order. Positioning is controlled by |docking_mode|
|
||||
/// as described below. The returned cef_overlay_controller_t object is used
|
||||
/// to control the overlay. Overlays are hidden by default.</para>
|
||||
/// <para>With CEF_DOCKING_MODE_CUSTOM:</para>
|
||||
/// <code>
|
||||
/// 1. The overlay is initially hidden, sized to |view|'s preferred size,
|
||||
/// and positioned in the top-left corner.
|
||||
/// 2. Optionally change the overlay position and/or size by calling
|
||||
/// CefOverlayController methods.
|
||||
/// 3. Call CefOverlayController::SetVisible(true) to show the overlay.
|
||||
/// 4. The overlay will be automatically re-sized if |view|'s layout
|
||||
/// changes. Optionally change the overlay position and/or size when
|
||||
/// OnLayoutChanged is called on the Window's delegate to indicate a
|
||||
/// change in Window bounds.</code>
|
||||
/// <para>With other docking modes:</para>
|
||||
/// <code>
|
||||
/// 1. The overlay is initially hidden, sized to |view|'s preferred size,
|
||||
/// and positioned based on |docking_mode|.
|
||||
/// 2. Call CefOverlayController::SetVisible(true) to show the overlay.
|
||||
/// 3. The overlay will be automatically re-sized if |view|'s layout changes
|
||||
/// and re-positioned as appropriate when the Window resizes.</code>
|
||||
/// <para>Overlays created by this function will receive a higher z-order then any
|
||||
/// child Views added previously. It is therefore recommended to call this
|
||||
/// function last after all other child Views have been added so that the
|
||||
/// overlay displays as the top-most child of the Window.</para>
|
||||
/// </summary>
|
||||
function AddOverlayView(const view: ICefView; docking_mode: TCefDockingMode): ICefOverlayController;
|
||||
/// <summary>
|
||||
/// Show a menu with contents |menu_model|. |screen_point| specifies the menu
|
||||
/// position in screen coordinates. |anchor_position| specifies how the menu
|
||||
/// will be anchored relative to |screen_point|.
|
||||
/// </summary>
|
||||
procedure ShowMenu(const menu_model: ICefMenuModel; const screen_point: TCefPoint; anchor_position : TCefMenuAnchorPosition);
|
||||
/// <summary>
|
||||
/// Cancel the menu that is currently showing, if any.
|
||||
/// </summary>
|
||||
procedure CancelMenu;
|
||||
/// <summary>
|
||||
/// Set the regions where mouse events will be intercepted by this Window to
|
||||
/// support drag operations. Call this function with an NULL vector to clear
|
||||
/// the draggable regions. The draggable region bounds should be in window
|
||||
/// coordinates.
|
||||
/// </summary>
|
||||
procedure SetDraggableRegions(regionsCount: NativeUInt; const regions: PCefDraggableRegionArray);
|
||||
/// <summary>
|
||||
/// Simulate a key press. |key_code| is the VKEY_* value from Chromium's
|
||||
/// ui/events/keycodes/keyboard_codes.h header (VK_* values on Windows).
|
||||
/// |event_flags| is some combination of EVENTFLAG_SHIFT_DOWN,
|
||||
/// EVENTFLAG_CONTROL_DOWN and/or EVENTFLAG_ALT_DOWN. This function is exposed
|
||||
/// primarily for testing purposes.
|
||||
/// </summary>
|
||||
procedure SendKeyPress(key_code: Integer; event_flags: cardinal);
|
||||
/// <summary>
|
||||
/// Simulate a mouse move. The mouse cursor will be moved to the specified
|
||||
/// (screen_x, screen_y) position. This function is exposed primarily for
|
||||
/// testing purposes.
|
||||
/// </summary>
|
||||
procedure SendMouseMove(screen_x, screen_y: Integer);
|
||||
/// <summary>
|
||||
/// Simulate mouse down and/or mouse up events. |button| is the mouse button
|
||||
/// type. If |mouse_down| is true (1) a mouse down event will be sent. If
|
||||
/// |mouse_up| is true (1) a mouse up event will be sent. If both are true (1)
|
||||
/// a mouse down event will be sent followed by a mouse up event (equivalent
|
||||
/// to clicking the mouse button). The events will be sent using the current
|
||||
/// cursor position so make sure to call send_mouse_move() first to position
|
||||
/// the mouse. This function is exposed primarily for testing purposes.
|
||||
/// </summary>
|
||||
procedure SendMouseEvents(button: TCefMouseButtonType; mouse_down, mouse_up: boolean);
|
||||
/// <summary>
|
||||
/// Set the keyboard accelerator for the specified |command_id|. |key_code|
|
||||
/// can be any virtual key or character value.
|
||||
/// cef_window_delegate_t::OnAccelerator will be called if the keyboard
|
||||
/// combination is triggered while this window has focus.
|
||||
/// </summary>
|
||||
procedure SetAccelerator(command_id, key_code : Integer; shift_pressed, ctrl_pressed, alt_pressed: boolean);
|
||||
/// <summary>
|
||||
/// Remove the keyboard accelerator for the specified |command_id|.
|
||||
/// </summary>
|
||||
procedure RemoveAccelerator(command_id: Integer);
|
||||
/// <summary>
|
||||
/// Remove all keyboard accelerators.
|
||||
/// </summary>
|
||||
procedure RemoveAllAccelerators;
|
||||
|
||||
/// <summary>
|
||||
/// Get the Window title.
|
||||
/// </summary>
|
||||
property Title : ustring read GetTitle write SetTitle;
|
||||
/// <summary>
|
||||
/// Get the Window icon.
|
||||
/// </summary>
|
||||
property WindowIcon : ICefImage read GetWindowIcon write SetWindowIcon;
|
||||
/// <summary>
|
||||
/// Get or set the Window App icon. This should be a larger icon for use in the host
|
||||
/// environment app switching UI. On Windows, this is the ICON_BIG used in
|
||||
/// Alt-Tab list and Windows taskbar. The Window icon will be used by default
|
||||
/// if no Window App icon is specified.
|
||||
/// </summary>
|
||||
property WindowAppIcon : ICefImage read GetWindowAppIcon write SetWindowAppIcon;
|
||||
/// <summary>
|
||||
/// Returns the Display that most closely intersects the bounds of this
|
||||
/// Window. May return NULL if this Window is not currently displayed.
|
||||
/// </summary>
|
||||
property Display : ICefDisplay read GetDisplay;
|
||||
/// <summary>
|
||||
/// Returns the bounds (size and position) of this Window's client area.
|
||||
/// Position is in screen coordinates.
|
||||
/// </summary>
|
||||
property ClientAreaBoundsInScreen : TCefRect read GetClientAreaBoundsInScreen;
|
||||
/// <summary>
|
||||
/// Retrieve the platform window handle for this Window.
|
||||
/// </summary>
|
||||
property WindowHandle : TCefWindowHandle read GetWindowHandle;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the Window has been closed.
|
||||
/// </summary>
|
||||
property IsClosed : boolean read GetIsClosed;
|
||||
/// <summary>
|
||||
/// Returns whether the Window is the currently active Window.
|
||||
/// </summary>
|
||||
property IsActive : boolean read GetIsActive;
|
||||
/// <summary>
|
||||
/// Returns whether the Window has been set to be on top of other Windows in
|
||||
/// the Windowing system.
|
||||
/// </summary>
|
||||
property IsAlwaysOnTop : boolean read GetIsAlwaysOnTop write SetAlwaysOnTop;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the Window is fullscreen.
|
||||
/// </summary>
|
||||
property IsFullscreen : boolean read GetIsFullscreen write SetFullscreen;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the Window is maximized.
|
||||
/// </summary>
|
||||
property IsMaximized : boolean read GetIsMaximized;
|
||||
/// <summary>
|
||||
/// Returns true (1) if the Window is minimized.
|
||||
/// </summary>
|
||||
property IsMinimized : boolean read GetIsMinimized;
|
||||
|
||||
published
|
||||
/// <summary>
|
||||
/// Called when |window| is created.
|
||||
/// </summary>
|
||||
property OnWindowCreated : TOnWindowCreatedEvent read FOnWindowCreated write FOnWindowCreated;
|
||||
/// <summary>
|
||||
/// Called when |window| is closing.
|
||||
/// </summary>
|
||||
property OnWindowClosing : TOnWindowClosingEvent read FOnWindowClosing write FOnWindowClosing;
|
||||
/// <summary>
|
||||
/// Called when |window| is destroyed. Release all references to |window| and
|
||||
/// do not attempt to execute any functions on |window| after this callback
|
||||
/// returns.
|
||||
/// </summary>
|
||||
property OnWindowDestroyed : TOnWindowDestroyedEvent read FOnWindowDestroyed write FOnWindowDestroyed;
|
||||
/// <summary>
|
||||
/// Called when |window| is activated or deactivated.
|
||||
/// </summary>
|
||||
property OnWindowActivationChanged : TOnWindowActivationChangedEvent read FOnWindowActivationChanged write FOnWindowActivationChanged;
|
||||
/// <summary>
|
||||
/// Called when |window| bounds have changed. |new_bounds| will be in DIP
|
||||
/// screen coordinates.
|
||||
/// </summary>
|
||||
property OnWindowBoundsChanged : TOnWindowBoundsChangedEvent read FOnWindowBoundsChanged write FOnWindowBoundsChanged;
|
||||
/// <summary>
|
||||
/// Return the parent for |window| or NULL if the |window| does not have a
|
||||
/// parent. Windows with parents will not get a taskbar button. Set |is_menu|
|
||||
/// to true (1) if |window| will be displayed as a menu, in which case it will
|
||||
/// not be clipped to the parent window bounds. Set |can_activate_menu| to
|
||||
/// false (0) if |is_menu| is true (1) and |window| should not be activated
|
||||
/// (given keyboard focus) when displayed.
|
||||
/// </summary>
|
||||
property OnGetParentWindow : TOnGetParentWindowEvent read FOnGetParentWindow write FOnGetParentWindow;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| should be created as a window modal dialog.
|
||||
/// Only called when a Window is returned via get_parent_window() with
|
||||
/// |is_menu| set to false (0). All controls in the parent Window will be
|
||||
/// disabled while |window| is visible. This functionality is not supported by
|
||||
/// all Linux window managers. Alternately, use
|
||||
/// ICefWindow.ShowAsBrowserModalDialog() for a browser modal dialog
|
||||
/// that works on all platforms.
|
||||
/// </summary>
|
||||
property OnIsWindowModalDialog : TOnIsWindowModalDialogEvent read FOnIsWindowModalDialog write FOnIsWindowModalDialog;
|
||||
/// <summary>
|
||||
/// Return the initial bounds for |window| in density independent pixel (DIP)
|
||||
/// coordinates. If this function returns an NULL CefRect then
|
||||
/// GetPreferredSize() will be called to retrieve the size, and the window
|
||||
/// will be placed on the screen with origin (0,0). This function can be used
|
||||
/// in combination with ICefView.GetBoundsInScreen() to restore the
|
||||
/// previous window bounds.
|
||||
/// </summary>
|
||||
property OnGetInitialBounds : TOnGetInitialBoundsEvent read FOnGetInitialBounds write FOnGetInitialBounds;
|
||||
/// <summary>
|
||||
/// Return the initial show state for |window|.
|
||||
/// </summary>
|
||||
property OnGetInitialShowState : TOnGetInitialShowStateEvent read FOnGetInitialShowState write FOnGetInitialShowState;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| should be created without a frame or title
|
||||
/// bar. The window will be resizable if can_resize() returns true (1). Use
|
||||
/// ICefWindow.SetDraggableRegions() to specify draggable regions.
|
||||
/// </summary>
|
||||
property OnIsFrameless : TOnIsFramelessEvent read FOnIsFrameless write FOnIsFrameless;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| should be created with standard window buttons
|
||||
/// like close, minimize and zoom. This function is only supported on macOS.
|
||||
/// </summary>
|
||||
property OnWithStandardWindowButtons : TOnWithStandardWindowButtonsEvent read FOnWithStandardWindowButtons write FOnWithStandardWindowButtons;
|
||||
/// <summary>
|
||||
/// Return whether the titlebar height should be overridden, and sets the
|
||||
/// height of the titlebar in |titlebar_height|. On macOS, it can also be used
|
||||
/// to adjust the vertical position of the traffic light buttons in frameless
|
||||
/// windows. The buttons will be positioned halfway down the titlebar at a
|
||||
/// height of |titlebar_height| / 2.
|
||||
/// </summary>
|
||||
property OnGetTitlebarHeight : TOnGetTitlebarHeightEvent read FOnGetTitlebarHeight write FOnGetTitlebarHeight;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| can be resized.
|
||||
/// </summary>
|
||||
property OnCanResize : TOnCanResizeEvent read FOnCanResize write FOnCanResize;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| can be maximized.
|
||||
/// </summary>
|
||||
property OnCanMaximize : TOnCanMaximizeEvent read FOnCanMaximize write FOnCanMaximize;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| can be minimized.
|
||||
/// </summary>
|
||||
property OnCanMinimize : TOnCanMinimizeEvent read FOnCanMinimize write FOnCanMinimize;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| can be closed. This will be called for user-
|
||||
/// initiated window close actions and when ICefWindow.close() is called.
|
||||
/// </summary>
|
||||
property OnCanClose : TOnCanCloseEvent read FOnCanClose write FOnCanClose;
|
||||
/// <summary>
|
||||
/// Called when a keyboard accelerator registered with
|
||||
/// ICefWindow.SetAccelerator is triggered. Return true (1) if the
|
||||
/// accelerator was handled or false (0) otherwise.
|
||||
/// </summary>
|
||||
property OnAccelerator : TOnAcceleratorEvent read FOnAccelerator write FOnAccelerator;
|
||||
/// <summary>
|
||||
/// Called after all other controls in the window have had a chance to handle
|
||||
/// the event. |event| contains information about the keyboard event. Return
|
||||
/// true (1) if the keyboard event was handled or false (0) otherwise.
|
||||
/// </summary>
|
||||
property OnKeyEvent : TOnWindowKeyEventEvent read FOnKeyEvent write FOnKeyEvent;
|
||||
/// <summary>
|
||||
/// Called when the |window| is transitioning to or from fullscreen mode. The
|
||||
/// transition occurs in two stages, with |is_competed| set to false (0) when
|
||||
/// the transition starts and true (1) when the transition completes. This
|
||||
/// function is only supported on macOS.
|
||||
/// </summary>
|
||||
property OnWindowFullscreenTransition : TOnWindowFullscreenTransitionEvent read FOnWindowFullscreenTransition write FOnWindowFullscreenTransition;
|
||||
end;
|
||||
|
||||
@ -398,6 +651,11 @@ begin
|
||||
if Initialized then FWindow.Show;
|
||||
end;
|
||||
|
||||
procedure TCEFWindowComponent.ShowAsBrowserModalDialog(const browser_view: ICefBrowserView);
|
||||
begin
|
||||
if Initialized then FWindow.ShowAsBrowserModalDialog(browser_view);
|
||||
end;
|
||||
|
||||
procedure TCEFWindowComponent.Hide;
|
||||
begin
|
||||
if Initialized then FWindow.Hide;
|
||||
|
@ -43,37 +43,145 @@ type
|
||||
procedure OnWindowFullscreenTransition(const window_: ICefWindow; is_completed: boolean);
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Returns a ICefWindowDelegate instance using a PCefWindowDelegate data pointer.
|
||||
/// </summary>
|
||||
class function UnWrap(data: Pointer): ICefWindowDelegate;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// Implement this interface to handle window events. The functions of this
|
||||
/// interface will be called on the browser process UI thread unless otherwise
|
||||
/// indicated.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/views/cef_window_delegate_capi.h">CEF source file: /include/capi/views/cef_window_delegate_capi.h (cef_window_delegate_t)</see></para>
|
||||
/// </remarks>
|
||||
TCefWindowDelegateOwn = class(TCefPanelDelegateOwn, ICefWindowDelegate)
|
||||
protected
|
||||
/// <summary>
|
||||
/// Called when |window| is created.
|
||||
/// </summary>
|
||||
procedure OnWindowCreated(const window_: ICefWindow); virtual;
|
||||
/// <summary>
|
||||
/// Called when |window| is closing.
|
||||
/// </summary>
|
||||
procedure OnWindowClosing(const window_: ICefWindow); virtual;
|
||||
/// <summary>
|
||||
/// Called when |window| is destroyed. Release all references to |window| and
|
||||
/// do not attempt to execute any functions on |window| after this callback
|
||||
/// returns.
|
||||
/// </summary>
|
||||
procedure OnWindowDestroyed(const window_: ICefWindow); virtual;
|
||||
/// <summary>
|
||||
/// Called when |window| is activated or deactivated.
|
||||
/// </summary>
|
||||
procedure OnWindowActivationChanged(const window_: ICefWindow; active: boolean); virtual;
|
||||
/// <summary>
|
||||
/// Called when |window| bounds have changed. |new_bounds| will be in DIP
|
||||
/// screen coordinates.
|
||||
/// </summary>
|
||||
procedure OnWindowBoundsChanged(const window_: ICefWindow; const new_bounds: TCefRect); virtual;
|
||||
/// <summary>
|
||||
/// Return the parent for |window| or NULL if the |window| does not have a
|
||||
/// parent. Windows with parents will not get a taskbar button. Set |is_menu|
|
||||
/// to true (1) if |window| will be displayed as a menu, in which case it will
|
||||
/// not be clipped to the parent window bounds. Set |can_activate_menu| to
|
||||
/// false (0) if |is_menu| is true (1) and |window| should not be activated
|
||||
/// (given keyboard focus) when displayed.
|
||||
/// </summary>
|
||||
procedure OnGetParentWindow(const window_: ICefWindow; var is_menu, can_activate_menu: boolean; var aResult : ICefWindow); virtual;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| should be created as a window modal dialog.
|
||||
/// Only called when a Window is returned via get_parent_window() with
|
||||
/// |is_menu| set to false (0). All controls in the parent Window will be
|
||||
/// disabled while |window| is visible. This functionality is not supported by
|
||||
/// all Linux window managers. Alternately, use
|
||||
/// ICefWindow.ShowAsBrowserModalDialog() for a browser modal dialog
|
||||
/// that works on all platforms.
|
||||
/// </summary>
|
||||
procedure OnIsWindowModalDialog(const window_: ICefWindow; var aResult: boolean); virtual;
|
||||
/// <summary>
|
||||
/// Return the initial bounds for |window| in density independent pixel (DIP)
|
||||
/// coordinates. If this function returns an NULL CefRect then
|
||||
/// GetPreferredSize() will be called to retrieve the size, and the window
|
||||
/// will be placed on the screen with origin (0,0). This function can be used
|
||||
/// in combination with ICefView.GetBoundsInScreen() to restore the
|
||||
/// previous window bounds.
|
||||
/// </summary>
|
||||
procedure OnGetInitialBounds(const window_: ICefWindow; var aResult : TCefRect); virtual;
|
||||
/// <summary>
|
||||
/// Return the initial show state for |window|.
|
||||
/// </summary>
|
||||
procedure OnGetInitialShowState(const window_: ICefWindow; var aResult : TCefShowState); virtual;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| should be created without a frame or title
|
||||
/// bar. The window will be resizable if can_resize() returns true (1). Use
|
||||
/// ICefWindow.SetDraggableRegions() to specify draggable regions.
|
||||
/// </summary>
|
||||
procedure OnIsFrameless(const window_: ICefWindow; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| should be created with standard window buttons
|
||||
/// like close, minimize and zoom. This function is only supported on macOS.
|
||||
/// </summary>
|
||||
procedure OnWithStandardWindowButtons(const window_: ICefWindow; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Return whether the titlebar height should be overridden, and sets the
|
||||
/// height of the titlebar in |titlebar_height|. On macOS, it can also be used
|
||||
/// to adjust the vertical position of the traffic light buttons in frameless
|
||||
/// windows. The buttons will be positioned halfway down the titlebar at a
|
||||
/// height of |titlebar_height| / 2.
|
||||
/// </summary>
|
||||
procedure OnGetTitlebarHeight(const window_: ICefWindow; var titlebar_height: Single; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| can be resized.
|
||||
/// </summary>
|
||||
procedure OnCanResize(const window_: ICefWindow; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| can be maximized.
|
||||
/// </summary>
|
||||
procedure OnCanMaximize(const window_: ICefWindow; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| can be minimized.
|
||||
/// </summary>
|
||||
procedure OnCanMinimize(const window_: ICefWindow; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Return true (1) if |window| can be closed. This will be called for user-
|
||||
/// initiated window close actions and when ICefWindow.close() is called.
|
||||
/// </summary>
|
||||
procedure OnCanClose(const window_: ICefWindow; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Called when a keyboard accelerator registered with
|
||||
/// ICefWindow.SetAccelerator is triggered. Return true (1) if the
|
||||
/// accelerator was handled or false (0) otherwise.
|
||||
/// </summary>
|
||||
procedure OnAccelerator(const window_: ICefWindow; command_id: Integer; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Called after all other controls in the window have had a chance to handle
|
||||
/// the event. |event| contains information about the keyboard event. Return
|
||||
/// true (1) if the keyboard event was handled or false (0) otherwise.
|
||||
/// </summary>
|
||||
procedure OnKeyEvent(const window_: ICefWindow; const event: TCefKeyEvent; var aResult : boolean); virtual;
|
||||
/// <summary>
|
||||
/// Called when the |window| is transitioning to or from fullscreen mode. The
|
||||
/// transition occurs in two stages, with |is_competed| set to false (0) when
|
||||
/// the transition starts and true (1) when the transition completes. This
|
||||
/// function is only supported on macOS.
|
||||
/// </summary>
|
||||
procedure OnWindowFullscreenTransition(const window_: ICefWindow; is_completed: boolean); virtual;
|
||||
|
||||
/// <summary>
|
||||
/// Links the methods in the internal CEF record data pointer with the methods in this class.
|
||||
/// </summary>
|
||||
procedure InitializeCEFMethods; override;
|
||||
|
||||
public
|
||||
constructor Create; override;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// This class handles all the TCustomWindowDelegate methods which call the ICefWindowDelegateEvents methods.
|
||||
/// ICefWindowDelegateEvents will be implemented by the control receiving the TCustomWindowDelegate events.
|
||||
/// </summary>
|
||||
TCustomWindowDelegate = class(TCefWindowDelegateOwn)
|
||||
protected
|
||||
FEvents : Pointer;
|
||||
@ -112,6 +220,9 @@ type
|
||||
procedure OnWindowFullscreenTransition(const window_: ICefWindow; is_completed: boolean); override;
|
||||
|
||||
public
|
||||
/// <summary>
|
||||
/// Creates an instance of this class liked to an interface that's implemented by a control receiving the events.
|
||||
/// </summary>
|
||||
constructor Create(const events: ICefWindowDelegateEvents); reintroduce;
|
||||
end;
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
"UpdateLazPackages" : [
|
||||
{
|
||||
"ForceNotify" : true,
|
||||
"InternalVersion" : 523,
|
||||
"InternalVersion" : 524,
|
||||
"Name" : "cef4delphi_lazarus.lpk",
|
||||
"Version" : "117.1.4"
|
||||
"Version" : "117.1.5"
|
||||
}
|
||||
],
|
||||
"UpdatePackageData" : {
|
||||
|
Loading…
Reference in New Issue
Block a user