diff --git a/demos/CustomResourceBrowser/CRBrowser.dpr b/demos/CustomResourceBrowser/CRBrowser.dpr
index 50185f60..66286221 100644
--- a/demos/CustomResourceBrowser/CRBrowser.dpr
+++ b/demos/CustomResourceBrowser/CRBrowser.dpr
@@ -58,14 +58,14 @@ begin
GlobalCEFApp := TCefApplication.Create;
// In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data.
-
+{
GlobalCEFApp.FrameworkDirPath := 'cef';
GlobalCEFApp.ResourcesDirPath := 'cef';
GlobalCEFApp.LocalesDirPath := 'cef\locales';
GlobalCEFApp.cache := 'cef\cache';
GlobalCEFApp.cookies := 'cef\cookies';
GlobalCEFApp.UserDataPath := 'cef\User Data';
-
+}
if GlobalCEFApp.StartMainProcess then
begin
diff --git a/demos/CustomResourceBrowser/CRBrowser.dproj b/demos/CustomResourceBrowser/CRBrowser.dproj
index 3dd406b0..fe7fcff7 100644
--- a/demos/CustomResourceBrowser/CRBrowser.dproj
+++ b/demos/CustomResourceBrowser/CRBrowser.dproj
@@ -134,12 +134,27 @@
true
-
+
+
+ 0
+ .dll;.bpl
+
1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
1
+ .dylib
+
+
+ 1
+ .dylib
@@ -493,27 +508,12 @@
1
-
-
- 0
- .dll;.bpl
-
+
1
- .dylib
-
-
- Contents\MacOS
- 1
- .dylib
1
- .dylib
-
-
- 1
- .dylib
diff --git a/demos/CustomResourceBrowser/CRBrowser.dproj.local b/demos/CustomResourceBrowser/CRBrowser.dproj.local
index af187ba0..4b5e7f47 100644
--- a/demos/CustomResourceBrowser/CRBrowser.dproj.local
+++ b/demos/CustomResourceBrowser/CRBrowser.dproj.local
@@ -2,9 +2,9 @@
2017/07/01 10:31:40.000.157,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/07/01 10:33:03.000.262,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas
- 2017/07/01 10:33:03.000.262,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.dfm
- 2017/07/01 10:33:13.000.749,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj
+ 2017/07/01 10:33:03.000.262,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
+ 2017/07/01 10:33:03.000.262,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm
+ 2017/07/01 10:33:13.000.749,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj
2017/07/01 10:54:08.000.543,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
diff --git a/demos/CustomResourceBrowser/CRBrowser.dsk b/demos/CustomResourceBrowser/CRBrowser.dsk
index 1104bf88..b281a491 100644
--- a/demos/CustomResourceBrowser/CRBrowser.dsk
+++ b/demos/CustomResourceBrowser/CRBrowser.dsk
@@ -1,46 +1,32 @@
[Closed Files]
-File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,710,103,739,0,0,,
-File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,29,31,76,0,0,,
-File_2=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,46,18,75,0,0,,
-File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFResourceHandler.pas',0,1,34,1,38,0,0,,
-File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,3,68,3,97,0,0,,
-File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas',0,1,1,1,1,0,0,,
-File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,97,28,54,0,0,,
-File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,67,21,84,0,0,,
-File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas',0,1,28,1,1,0,0,,
-File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,738,28,775,0,0,,
+File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas',0,1,10,72,115,0,0,,
+File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas',0,1,87,56,139,0,0,,
+File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,710,103,739,0,0,,
+File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,29,31,76,0,0,,
+File_4=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,46,18,75,0,0,,
+File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFResourceHandler.pas',0,1,34,1,38,0,0,,
+File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,3,68,3,97,0,0,,
+File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas',0,1,1,1,1,0,0,,
+File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,97,28,54,0,0,,
+File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,67,21,84,0,0,,
[Modules]
-Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
-Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj
-Module2=default.htm
-Module3=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas
-Count=4
+Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj
+Module1=default.htm
+Count=2
EditWindowCount=1
-[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas]
-ModuleType=TSourceModule
-FormState=0
-FormOnTop=0
-
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj]
ModuleType=TBaseProject
[default.htm]
ModuleType=TURLModule
-[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas]
-ModuleType=TSourceModule
-FormState=1
-FormOnTop=0
-
[EditWindow0]
-ViewCount=4
-CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
+ViewCount=2
+CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dpr
View0=0
View1=1
-View2=2
-View3=3
PercentageSizes=1
Create=1
Visible=1
@@ -59,15 +45,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
-RightPanelClients=DockSite2,DockSite4
-RightPanelData=00000800010100000000AA1900000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000A123000009000000446F636B5369746534FFFFFFFF
+RightPanelClients=DockSite2
+RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
-BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002C305000000000000FFFFFFFF
+BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
-TabDockLeftClients=PropertyInspector=0,DockSite3=1
+TabDockLeftClients=DockSite3=0,PropertyInspector=1
+TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@@ -77,35 +64,13 @@ WelcomePageURL=bds:/default.htm
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dpr
CursorX=1
-CursorY=68
+CursorY=61
TopLine=31
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dpr
-[View2]
-CustomEditViewType=TEditView
-Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas
-CursorX=72
-CursorY=115
-TopLine=10
-LeftCol=1
-Elisions=
-Bookmarks=
-EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas
-
-[View3]
-CustomEditViewType=TEditView
-Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
-CursorX=56
-CursorY=139
-TopLine=87
-LeftCol=1
-Elisions=
-Bookmarks=
-EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
-
[Watches]
Count=0
@@ -120,11 +85,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@@ -168,11 +133,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=4226
+Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4226
+ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@@ -187,12 +152,12 @@ State=0
Left=0
Top=23
Width=2773
-Height=1267
+Height=3845
MaxLeft=-1
MaxTop=-1
ClientWidth=2773
-ClientHeight=1267
-TBDockHeight=1267
+ClientHeight=3845
+TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@@ -205,12 +170,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=2000
-Height=4339
+Width=1875
+Height=6693
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=4339
+ClientWidth=1875
+ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@@ -323,13 +288,13 @@ Width=1898
Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=7164
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
-SplitPos=111
+SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@@ -375,8 +340,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-1152
-Top=243
+Left=-8
+Top=287
Width=273
Height=359
MaxLeft=-1
@@ -400,11 +365,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@@ -419,11 +384,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@@ -442,11 +407,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@@ -461,11 +426,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@@ -583,11 +548,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@@ -695,12 +660,12 @@ State=0
Left=0
Top=23
Width=3820
-Height=1424
+Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1424
-TBDockHeight=1424
+ClientHeight=874
+TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@@ -719,11 +684,11 @@ State=0
Left=0
Top=23
Width=2000
-Height=4529
+Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4529
+ClientHeight=9170
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
@@ -757,21 +722,21 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
-HostDockSite=DockRightPanel
+HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
-Top=454
+Top=0
Width=2000
-Height=4339
+Height=7119
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=4339
+ClientWidth=1875
+ClientHeight=6693
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
diff --git a/demos/CustomResourceBrowser/CRBrowser.stat b/demos/CustomResourceBrowser/CRBrowser.stat
index 7169b3e9..fe3c235c 100644
--- a/demos/CustomResourceBrowser/CRBrowser.stat
+++ b/demos/CustomResourceBrowser/CRBrowser.stat
@@ -1,5 +1,5 @@
[Stats]
-EditorSecs=425
+EditorSecs=443
DesignerSecs=9
InspectorSecs=14
CompileSecs=40629
diff --git a/demos/FullScreenBrowser/FullScreenBrowser.dproj.local b/demos/FullScreenBrowser/FullScreenBrowser.dproj.local
index 8c68bb2c..3acf1ce5 100644
--- a/demos/FullScreenBrowser/FullScreenBrowser.dproj.local
+++ b/demos/FullScreenBrowser/FullScreenBrowser.dproj.local
@@ -2,11 +2,11 @@
2017/05/21 18:54:00.000.243,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/05/21 18:54:33.000.390,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm
- 2017/05/21 18:54:33.000.390,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/05/21 18:54:43.000.194,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj
- 2017/05/21 18:54:50.000.736,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.pas
- 2017/05/21 18:54:50.000.736,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.dfm
- 2017/05/21 19:04:55.000.900,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\FullScreenBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\Project1.dproj
+ 2017/05/21 18:54:33.000.390,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.pas
+ 2017/05/21 18:54:33.000.390,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.dfm
+ 2017/05/21 18:54:43.000.194,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\Project1.dproj
+ 2017/05/21 18:54:50.000.736,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\uMainForm.dfm
+ 2017/05/21 18:54:50.000.736,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\uMainForm.pas
+ 2017/05/21 19:04:55.000.900,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\FullScreenBrowser.dproj
diff --git a/demos/FullScreenBrowser/FullScreenBrowser.dsk b/demos/FullScreenBrowser/FullScreenBrowser.dsk
index c6315946..59d06006 100644
--- a/demos/FullScreenBrowser/FullScreenBrowser.dsk
+++ b/demos/FullScreenBrowser/FullScreenBrowser.dsk
@@ -52,15 +52,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
-RightPanelClients=DockSite2,DockSite4
-RightPanelData=00000800010100000000551500000000000001D00700000000000001000000004312000009000000446F636B536974653201000000009D1D000009000000446F636B5369746534FFFFFFFF
-BottomPanelSize=1475
+RightPanelClients=DockSite2
+RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
+BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
-BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
+BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
-TabDockLeftClients=PropertyInspector=0,DockSite3=1
+TabDockLeftClients=DockSite3=0,PropertyInspector=1
+TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@@ -102,11 +103,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@@ -150,11 +151,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=4226
+Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4226
+ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@@ -163,18 +164,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
Top=23
-Width=10000
-Height=1267
+Width=2773
+Height=3845
MaxLeft=-1
MaxTop=-1
-ClientWidth=10000
-ClientHeight=1267
-TBDockHeight=1267
+ClientWidth=2773
+ClientHeight=3845
+TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@@ -187,12 +188,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=2000
-Height=2747
+Width=1875
+Height=6693
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=2747
+ClientWidth=1875
+ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@@ -242,8 +243,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-148
-Top=-137
+Left=-8
+Top=-30
Width=1844
Height=3139
MaxLeft=-1
@@ -299,19 +300,19 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=362
+Left=78
+Top=386
Width=1898
-Height=5370
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=5370
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
-SplitPos=111
+SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@@ -322,11 +323,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@@ -338,8 +339,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-898
-Top=-137
+Left=-946
+Top=1
Width=2844
Height=6200
MaxLeft=-1
@@ -357,8 +358,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-1026
-Top=-137
+Left=-8
+Top=287
Width=273
Height=359
MaxLeft=-1
@@ -382,11 +383,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@@ -401,11 +402,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@@ -424,11 +425,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@@ -443,11 +444,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@@ -462,11 +463,11 @@ State=0
Left=0
Top=0
Width=2336
-Height=1177
+Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
-ClientHeight=1177
+ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@@ -527,11 +528,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@@ -543,8 +544,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=0
+Left=249
+Top=709
Width=2859
Height=3206
MaxLeft=-1
@@ -565,11 +566,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@@ -590,12 +591,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=1898
-Height=9170
+Width=1773
+Height=6738
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@@ -610,11 +611,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@@ -675,14 +676,14 @@ Visible=0
Docked=1
State=0
Left=0
-Top=0
+Top=23
Width=3820
-Height=1424
+Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1424
-TBDockHeight=1424
+ClientHeight=874
+TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@@ -701,12 +702,12 @@ State=0
Left=0
Top=23
Width=2000
-Height=4529
+Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4529
-TBDockHeight=7164
+ClientHeight=9170
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@@ -723,13 +724,13 @@ Visible=0
Docked=1
State=0
Left=0
-Top=23
+Top=0
Width=1898
-Height=9170
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@@ -739,22 +740,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
-HostDockSite=DockRightPanel
+HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
-Top=454
+Top=0
Width=2000
-Height=2747
+Height=7119
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=2747
-TBDockHeight=7164
+ClientWidth=1875
+ClientHeight=6693
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
diff --git a/demos/FullScreenBrowser/FullScreenBrowser.stat b/demos/FullScreenBrowser/FullScreenBrowser.stat
index c2047e1a..3f191960 100644
--- a/demos/FullScreenBrowser/FullScreenBrowser.stat
+++ b/demos/FullScreenBrowser/FullScreenBrowser.stat
@@ -3,7 +3,7 @@ EditorSecs=34
DesignerSecs=1
InspectorSecs=1
CompileSecs=1
-OtherSecs=2
+OtherSecs=3
StartTime=01/06/2017 10:25:13
RealKeys=0
EffectiveKeys=0
diff --git a/demos/MiniBrowser/MiniBrowser.dpr b/demos/MiniBrowser/MiniBrowser.dpr
index 52e1d7f5..7454e581 100644
--- a/demos/MiniBrowser/MiniBrowser.dpr
+++ b/demos/MiniBrowser/MiniBrowser.dpr
@@ -42,10 +42,14 @@ program MiniBrowser;
uses
{$IFDEF DELPHI16_UP}
- Vcl.Forms, WinApi.Windows, System.SysUtils,
+ Vcl.Forms,
+ WinApi.Windows,
+ System.SysUtils,
{$ELSE}
- Forms, Windows, SysUtils,
- {$ENDIF}
+ Forms,
+ Windows,
+ SysUtils,
+ {$ENDIF }
uCEFApplication,
uCEFMiscFunctions,
uCEFSchemeRegistrar,
@@ -57,10 +61,12 @@ uses
uCEFConstants,
uCEFTypes,
uCEFTask,
+ uCEFProcessMessage,
uMiniBrowser in 'uMiniBrowser.pas' {MiniBrowserFrm},
uTestExtension in 'uTestExtension.pas',
uHelloScheme in 'uHelloScheme.pas',
- uPreferences in 'uPreferences.pas' {PreferencesFrm};
+ uPreferences in 'uPreferences.pas' {PreferencesFrm},
+ uSimpleTextViewer in 'uSimpleTextViewer.pas' {SimpleTextViewerFrm};
{$R *.res}
@@ -121,7 +127,9 @@ begin
end;
end;
-procedure DOMVisitor_OnDocAvailable(const document: ICefDomDocument);
+procedure DOMVisitor_OnDocAvailable(const browser: ICefBrowser; const document: ICefDomDocument);
+var
+ msg: ICefProcessMessage;
begin
// This function is called from a different process.
// document is only valid inside this function.
@@ -133,12 +141,19 @@ begin
// Simple DOM searches
SimpleNodeSearch(document);
+
+ // Sending back some custom results to the browser process
+ // Notice that the 'domvisitor' message name needs to be recognized in
+ // Chromium1ProcessMessageReceived
+ msg := TCefProcessMessageRef.New('domvisitor');
+ msg.ArgumentList.SetString(0, 'document.Title : ' + document.Title);
+ browser.SendProcessMessage(PID_BROWSER, msg);
end;
procedure ProcessHandler_OnCustomMessage(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage);
var
TempFrame : ICefFrame;
- TempVisitor : TCefFastDomVisitor;
+ TempVisitor : TCefFastDomVisitor2;
begin
if (browser <> nil) then
begin
@@ -146,7 +161,7 @@ begin
if (TempFrame <> nil) then
begin
- TempVisitor := TCefFastDomVisitor.Create(DOMVisitor_OnDocAvailable);
+ TempVisitor := TCefFastDomVisitor2.Create(browser, DOMVisitor_OnDocAvailable);
TempFrame.VisitDom(TempVisitor);
end;
end;
@@ -214,8 +229,9 @@ begin
Application.MainFormOnTaskbar := True;
{$ENDIF}
Application.CreateForm(TMiniBrowserFrm, MiniBrowserFrm);
- Application.CreateForm(TPreferencesFrm, PreferencesFrm);
- Application.Run;
+ Application.CreateForm(TPreferencesFrm, PreferencesFrm);
+ Application.CreateForm(TSimpleTextViewerFrm, SimpleTextViewerFrm);
+ Application.Run;
end;
GlobalCEFApp.Free;
diff --git a/demos/MiniBrowser/MiniBrowser.dproj b/demos/MiniBrowser/MiniBrowser.dproj
index 01f060c9..94aa3273 100644
--- a/demos/MiniBrowser/MiniBrowser.dproj
+++ b/demos/MiniBrowser/MiniBrowser.dproj
@@ -106,6 +106,10 @@
+
+
+ dfm
+
Cfg_2
Base
diff --git a/demos/MiniBrowser/MiniBrowser.dproj.local b/demos/MiniBrowser/MiniBrowser.dproj.local
index 486717c4..9ecc44ec 100644
--- a/demos/MiniBrowser/MiniBrowser.dproj.local
+++ b/demos/MiniBrowser/MiniBrowser.dproj.local
@@ -2,16 +2,19 @@
2017/02/11 10:15:32.000.980,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
- 2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.dfm
- 2017/02/11 10:16:37.000.392,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj
+ 2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm
+ 2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
+ 2017/02/11 10:16:37.000.392,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj
2017/02/11 17:10:26.000.471,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas
- 2017/02/11 17:11:01.000.244,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas
+ 2017/02/11 17:11:01.000.244,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas
2017/03/12 17:11:11.000.786,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uFileScheme.pas
2017/03/13 19:22:41.000.994,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uFileScheme.pas=
2017/03/13 19:23:05.000.371,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas
2017/03/15 12:39:07.000.741,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas
- 2017/03/15 12:40:51.000.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas
- 2017/03/15 12:40:51.000.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.dfm
+ 2017/03/15 12:40:51.000.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.dfm
+ 2017/03/15 12:40:51.000.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas
+ 2017/07/14 11:54:07.000.560,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas
+ 2017/07/14 11:57:42.000.778,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uSimpleTextViewer.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas
+ 2017/07/14 11:57:42.000.778,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uSimpleTextViewer.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.dfm
diff --git a/demos/MiniBrowser/MiniBrowser.dsk b/demos/MiniBrowser/MiniBrowser.dsk
index 0ee4831d..38c5ffc4 100644
--- a/demos/MiniBrowser/MiniBrowser.dsk
+++ b/demos/MiniBrowser/MiniBrowser.dsk
@@ -1,32 +1,39 @@
[Closed Files]
-File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,97,28,54,0,0,,
-File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,67,21,84,0,0,,
-File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,533,111,562,0,0,,
-File_3=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,866,3,766,0,0,,
-File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas',0,1,28,1,1,0,0,,
-File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,738,28,775,0,0,,
-File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas',0,1,38,18,54,0,0,,
-File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,268,48,304,0,0,,
-File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomNode.pas',0,1,34,1,1,0,0,,
-File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomDocument.pas',0,1,25,1,1,0,0,,
+File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas',0,1,38,17,84,0,0,,
+File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas',0,1,49,33,81,0,0,,
+File_2=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Menus.pas',0,1,318,3,287,0,0,,
+File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uSimpleTextViewer.pas',0,1,1,23,1,0,0,,
+File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,1142,14,1168,0,0,,
+File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,488,5,496,0,0,,
+File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,34,59,37,0,0,,
+File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomVisitor.pas',0,1,109,3,135,0,0,,
+File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFFrame.pas',0,1,204,31,234,0,0,,
+File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,97,28,54,0,0,,
[Modules]
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj
-Module1=default.htm
-Count=2
+Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
+Module2=default.htm
+Count=3
EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj]
ModuleType=TBaseProject
+[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas]
+ModuleType=TSourceModule
+FormState=1
+FormOnTop=0
+
[default.htm]
ModuleType=TURLModule
[EditWindow0]
-ViewCount=2
+ViewCount=3
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
View0=0
View1=1
+View2=2
PercentageSizes=1
Create=1
Visible=1
@@ -45,15 +52,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
-RightPanelClients=DockSite2,DockSite4
-RightPanelData=00000800010100000000551500000000000001D00700000000000001000000004312000009000000446F636B536974653201000000009D1D000009000000446F636B5369746534FFFFFFFF
-BottomPanelSize=1475
+RightPanelClients=DockSite2
+RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
+BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
-BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
+BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
-TabDockLeftClients=PropertyInspector=0,DockSite3=1
+TabDockLeftClients=DockSite3=0,PropertyInspector=1
+TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@@ -62,14 +70,25 @@ WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
-CursorX=19
-CursorY=47
-TopLine=24
+CursorX=2
+CursorY=205
+TopLine=156
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
+[View2]
+CustomEditViewType=TEditView
+Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
+CursorX=23
+CursorY=94
+TopLine=76
+LeftCol=1
+Elisions=
+Bookmarks={1,476,42}{2,565,17}{3,303,29}
+EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
+
[Watches]
Count=0
@@ -84,11 +103,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@@ -132,11 +151,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=4226
+Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4226
+ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@@ -145,18 +164,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
Top=23
-Width=10000
-Height=1267
+Width=2773
+Height=3845
MaxLeft=-1
MaxTop=-1
-ClientWidth=10000
-ClientHeight=1267
-TBDockHeight=1267
+ClientWidth=2773
+ClientHeight=3845
+TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@@ -169,12 +188,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=2000
-Height=2747
+Width=1875
+Height=6693
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=2747
+ClientWidth=1875
+ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@@ -224,8 +243,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-148
-Top=-137
+Left=-8
+Top=-30
Width=1844
Height=3139
MaxLeft=-1
@@ -281,19 +300,19 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=362
+Left=78
+Top=386
Width=1898
-Height=5370
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=5370
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
-SplitPos=111
+SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@@ -304,11 +323,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@@ -320,8 +339,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-898
-Top=-137
+Left=-946
+Top=1
Width=2844
Height=6200
MaxLeft=-1
@@ -339,8 +358,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-1026
-Top=-137
+Left=-8
+Top=287
Width=273
Height=359
MaxLeft=-1
@@ -364,11 +383,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@@ -383,11 +402,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@@ -406,11 +425,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@@ -425,11 +444,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@@ -444,11 +463,11 @@ State=0
Left=0
Top=0
Width=2336
-Height=1177
+Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
-ClientHeight=1177
+ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@@ -509,11 +528,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@@ -525,8 +544,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=0
+Left=249
+Top=709
Width=2859
Height=3206
MaxLeft=-1
@@ -547,11 +566,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@@ -572,12 +591,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=1898
-Height=9170
+Width=1773
+Height=6738
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@@ -592,11 +611,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@@ -657,14 +676,14 @@ Visible=0
Docked=1
State=0
Left=0
-Top=0
+Top=23
Width=3820
-Height=1424
+Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1424
-TBDockHeight=1424
+ClientHeight=874
+TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@@ -683,12 +702,12 @@ State=0
Left=0
Top=23
Width=2000
-Height=4529
+Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4529
-TBDockHeight=7164
+ClientHeight=9170
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@@ -705,13 +724,13 @@ Visible=0
Docked=1
State=0
Left=0
-Top=23
+Top=0
Width=1898
-Height=9170
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@@ -721,22 +740,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
-HostDockSite=DockRightPanel
+HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
-Top=454
+Top=0
Width=2000
-Height=2747
+Height=7119
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=2747
-TBDockHeight=7164
+ClientWidth=1875
+ClientHeight=6693
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
diff --git a/demos/MiniBrowser/MiniBrowser.identcache b/demos/MiniBrowser/MiniBrowser.identcache
index 2641a479..c013deea 100644
Binary files a/demos/MiniBrowser/MiniBrowser.identcache and b/demos/MiniBrowser/MiniBrowser.identcache differ
diff --git a/demos/MiniBrowser/MiniBrowser.stat b/demos/MiniBrowser/MiniBrowser.stat
index 3de4e5db..9a3dd0db 100644
--- a/demos/MiniBrowser/MiniBrowser.stat
+++ b/demos/MiniBrowser/MiniBrowser.stat
@@ -1,10 +1,10 @@
[Stats]
-EditorSecs=37012
-DesignerSecs=2134
-InspectorSecs=1589
-CompileSecs=2027164
-OtherSecs=6328
+EditorSecs=41029
+DesignerSecs=2210
+InspectorSecs=1739
+CompileSecs=2144912
+OtherSecs=6512
StartTime=11/02/2017 10:51:15
RealKeys=0
EffectiveKeys=0
-DebugSecs=29279
+DebugSecs=31352
diff --git a/demos/MiniBrowser/uMiniBrowser.pas b/demos/MiniBrowser/uMiniBrowser.pas
index bd225cd4..3bcfc0c7 100644
--- a/demos/MiniBrowser/uMiniBrowser.pas
+++ b/demos/MiniBrowser/uMiniBrowser.pas
@@ -53,11 +53,12 @@ uses
uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants;
const
- MINIBROWSER_CREATED = WM_APP + $100;
- MINIBROWSER_SHOWDEVTOOLS = WM_APP + $101;
- MINIBROWSER_HIDEDEVTOOLS = WM_APP + $102;
- MINIBROWSER_COPYHTML = WM_APP + $103;
- MINIBROWSER_VISITDOM = WM_APP + $104;
+ MINIBROWSER_CREATED = WM_APP + $100;
+ MINIBROWSER_SHOWDEVTOOLS = WM_APP + $101;
+ MINIBROWSER_HIDEDEVTOOLS = WM_APP + $102;
+ MINIBROWSER_COPYHTML = WM_APP + $103;
+ MINIBROWSER_VISITDOM = WM_APP + $104;
+ MINIBROWSER_SHOWTEXTVIEWER = WM_APP + $105;
MINIBROWSER_HOMEPAGE = 'https://www.google.com';
@@ -71,6 +72,7 @@ const
MINIBROWSER_CONTEXTMENU_JSPRINTDOC = MENU_ID_USER_FIRST + 8;
MINIBROWSER_CONTEXTMENU_REGSCHEME = MENU_ID_USER_FIRST + 9;
MINIBROWSER_CONTEXTMENU_CLEARFACT = MENU_ID_USER_FIRST + 10;
+ MINIBROWSER_CONTEXTMENU_JSVISITDOM = MENU_ID_USER_FIRST + 11;
type
TMiniBrowserFrm = class(TForm)
@@ -124,10 +126,6 @@ type
procedure Chromium1BeforeContextMenu(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; const model: ICefMenuModel);
- procedure Chromium1ContextMenuCommand(Sender: TObject;
- const browser: ICefBrowser; const frame: ICefFrame;
- const params: ICefContextMenuParams; commandId: Integer;
- eventFlags: TCefEventFlags; out Result: Boolean);
procedure Chromium1ProcessMessageReceived(Sender: TObject;
const browser: ICefBrowser; sourceProcess: TCefProcessId;
const message: ICefProcessMessage; out Result: Boolean);
@@ -156,8 +154,14 @@ type
procedure ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
procedure Openfile1Click(Sender: TObject);
+ procedure Chromium1ContextMenuCommand(Sender: TObject;
+ const browser: ICefBrowser; const frame: ICefFrame;
+ const params: ICefContextMenuParams; commandId: Integer;
+ eventFlags: Cardinal; out Result: Boolean);
protected
+ FText : string;
+
procedure AddURL(const aURL : string);
procedure ShowDevTools(aPoint : TPoint); overload;
@@ -172,9 +176,12 @@ type
procedure HideDevToolsMsg(var aMessage : TMessage); message MINIBROWSER_HIDEDEVTOOLS;
procedure CopyHTMLMsg(var aMessage : TMessage); message MINIBROWSER_COPYHTML;
procedure VisitDOMMsg(var aMessage : TMessage); message MINIBROWSER_VISITDOM;
+ procedure ShowTextViewerMsg(var aMessage : TMessage); message MINIBROWSER_SHOWTEXTVIEWER;
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
+
public
+ procedure ShowStatusText(const aText : string);
end;
@@ -186,7 +193,7 @@ implementation
{$R *.dfm}
uses
- uPreferences, uCEFProcessMessage, uCEFSchemeHandlerFactory, uHelloScheme;
+ uPreferences, uCEFProcessMessage, uCEFSchemeHandlerFactory, uHelloScheme, uSimpleTextViewer;
procedure TMiniBrowserFrm.BackBtnClick(Sender: TObject);
begin
@@ -233,7 +240,8 @@ begin
model.AddItem(MINIBROWSER_CONTEXTMENU_SHOWJSALERT, 'Show JS Alert');
model.AddItem(MINIBROWSER_CONTEXTMENU_SETJSEVENT, 'Set mouseover event');
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYHTML, 'Copy HTML to clipboard');
- model.AddItem(MINIBROWSER_CONTEXTMENU_VISITDOM, 'Visit DOM');
+ model.AddItem(MINIBROWSER_CONTEXTMENU_VISITDOM, 'Visit DOM in CEF');
+ model.AddItem(MINIBROWSER_CONTEXTMENU_JSVISITDOM, 'Visit DOM in JavaScript');
model.AddItem(MINIBROWSER_CONTEXTMENU_JSWRITEDOC, 'Modify HTML document');
model.AddItem(MINIBROWSER_CONTEXTMENU_JSPRINTDOC, 'Print using Javascript');
model.AddItem(MINIBROWSER_CONTEXTMENU_REGSCHEME, 'Register scheme');
@@ -248,7 +256,7 @@ end;
procedure TMiniBrowserFrm.Chromium1ContextMenuCommand(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; commandId: Integer;
- eventFlags: TCefEventFlags; out Result: Boolean);
+ eventFlags: Cardinal; out Result: Boolean);
var
TempParam : WParam;
TempFactory: ICefSchemeHandlerFactory;
@@ -287,6 +295,13 @@ begin
MINIBROWSER_CONTEXTMENU_VISITDOM :
PostMessage(Handle, MINIBROWSER_VISITDOM, 0, 0);
+ MINIBROWSER_CONTEXTMENU_JSVISITDOM :
+ if (browser <> nil) and (browser.MainFrame <> nil) then
+ browser.MainFrame.ExecuteJavaScript(
+ 'var testhtml = document.body.innerHTML;' +
+ 'myextension.sendresulttobrowser(testhtml, ''customname'');',
+ 'about:blank', 0);
+
MINIBROWSER_CONTEXTMENU_JSWRITEDOC :
if (browser <> nil) and (browser.MainFrame <> nil) then
browser.MainFrame.ExecuteJavaScript(
@@ -442,20 +457,42 @@ procedure TMiniBrowserFrm.Chromium1ProcessMessageReceived(Sender: TObject;
const browser: ICefBrowser; sourceProcess: TCefProcessId;
const message: ICefProcessMessage; out Result: Boolean);
begin
- if (message <> nil) and (message.Name = 'mouseover') and (message.ArgumentList <> nil) then
+ if (message = nil) or (message.ArgumentList = nil) then exit;
+
+ if (message.Name = 'mouseover') then
begin
// Message received from the extension
- StatusBar1.Panels[0].Text := message.ArgumentList.GetString(0);
- Result := True;
+ ShowStatusText(message.ArgumentList.GetString(0));
+ Result := True;
end
else
- Result := False;
+ if (message.Name = 'domvisitor') then
+ begin
+ // Message received from the DOMVISITOR in CEF
+ ShowStatusText(message.ArgumentList.GetString(0));
+ Result := True;
+ end
+ else
+ if (message.Name = 'customname') then
+ begin
+ // Message received from the Javascript DOM visitor
+ FText := message.ArgumentList.GetString(0);
+ PostMessage(Handle, MINIBROWSER_SHOWTEXTVIEWER, 0, 0);
+ Result := True;
+ end
+ else
+ Result := False;
+end;
+
+procedure TMiniBrowserFrm.ShowStatusText(const aText : string);
+begin
+ StatusBar1.Panels[0].Text := aText;
end;
procedure TMiniBrowserFrm.Chromium1StatusMessage(Sender: TObject;
const browser: ICefBrowser; const value: ustring);
begin
- StatusBar1.Panels[0].Text := value;
+ ShowStatusText(value);
end;
procedure TMiniBrowserFrm.Chromium1TextResultAvailable(Sender: TObject; const aText: string);
@@ -591,6 +628,12 @@ begin
Chromium1.SendProcessMessage(PID_RENDERER, TempMsg);
end;
+procedure TMiniBrowserFrm.ShowTextViewerMsg(var aMessage : TMessage);
+begin
+ SimpleTextViewerFrm.Memo1.Lines.Text := FText;
+ SimpleTextViewerFrm.ShowModal;
+end;
+
procedure TMiniBrowserFrm.WMMove(var aMessage : TWMMove);
begin
inherited;
diff --git a/demos/MiniBrowser/uSimpleTextViewer.dfm b/demos/MiniBrowser/uSimpleTextViewer.dfm
new file mode 100644
index 00000000..3472aa53
--- /dev/null
+++ b/demos/MiniBrowser/uSimpleTextViewer.dfm
@@ -0,0 +1,31 @@
+object SimpleTextViewerFrm: TSimpleTextViewerFrm
+ Left = 0
+ Top = 0
+ BorderIcons = [biSystemMenu]
+ BorderStyle = bsSingle
+ Caption = 'Simple text viewer'
+ ClientHeight = 572
+ ClientWidth = 694
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'Tahoma'
+ Font.Style = []
+ OldCreateOrder = False
+ Position = poScreenCenter
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Memo1: TMemo
+ Left = 0
+ Top = 0
+ Width = 694
+ Height = 572
+ Align = alClient
+ ReadOnly = True
+ ScrollBars = ssBoth
+ TabOrder = 0
+ ExplicitWidth = 611
+ ExplicitHeight = 495
+ end
+end
diff --git a/demos/MiniBrowser/uSimpleTextViewer.pas b/demos/MiniBrowser/uSimpleTextViewer.pas
new file mode 100644
index 00000000..3ed33ee2
--- /dev/null
+++ b/demos/MiniBrowser/uSimpleTextViewer.pas
@@ -0,0 +1,25 @@
+unit uSimpleTextViewer;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
+
+type
+ TSimpleTextViewerFrm = class(TForm)
+ Memo1: TMemo;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ SimpleTextViewerFrm: TSimpleTextViewerFrm;
+
+implementation
+
+{$R *.dfm}
+
+end.
diff --git a/demos/MiniBrowser/uTestExtension.pas b/demos/MiniBrowser/uTestExtension.pas
index 00100aca..4f182b6d 100644
--- a/demos/MiniBrowser/uTestExtension.pas
+++ b/demos/MiniBrowser/uTestExtension.pas
@@ -53,10 +53,14 @@ uses
type
TTestExtension = class
class procedure mouseover(const data: string);
+ class procedure sendresulttobrowser(const msgtext, msgname : string);
end;
implementation
+uses
+ uCEFMiscFunctions, uCEFConstants;
+
class procedure TTestExtension.mouseover(const data: string);
var
msg: ICefProcessMessage;
@@ -69,4 +73,14 @@ begin
TCefv8ContextRef.Current.Browser.SendProcessMessage(PID_BROWSER, msg);
end;
+class procedure TTestExtension.sendresulttobrowser(const msgtext, msgname : string);
+var
+ msg: ICefProcessMessage;
+begin
+ msg := TCefProcessMessageRef.New(msgname);
+ msg.ArgumentList.SetString(0, msgtext);
+
+ TCefv8ContextRef.Current.Browser.SendProcessMessage(PID_BROWSER, msg);
+end;
+
end.
diff --git a/demos/SimpleBrowser/SimpleBrowser.dproj.local b/demos/SimpleBrowser/SimpleBrowser.dproj.local
index 3aa584d9..0d6eeadf 100644
--- a/demos/SimpleBrowser/SimpleBrowser.dproj.local
+++ b/demos/SimpleBrowser/SimpleBrowser.dproj.local
@@ -2,8 +2,8 @@
2017/01/22 14:37:05.000.577,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/01/22 14:41:11.000.096,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm
- 2017/01/22 14:41:11.000.096,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/01/22 14:41:18.000.226,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\SimpleBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj
+ 2017/01/22 14:41:11.000.096,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.pas
+ 2017/01/22 14:41:11.000.096,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.dfm
+ 2017/01/22 14:41:18.000.226,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\SimpleBrowser.dproj
diff --git a/demos/SimpleBrowser/SimpleBrowser.dsk b/demos/SimpleBrowser/SimpleBrowser.dsk
index 2ba6627a..b72d8e3f 100644
--- a/demos/SimpleBrowser/SimpleBrowser.dsk
+++ b/demos/SimpleBrowser/SimpleBrowser.dsk
@@ -52,15 +52,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
-RightPanelClients=DockSite2,DockSite4
-RightPanelData=00000800010100000000551500000000000001D00700000000000001000000004312000009000000446F636B536974653201000000009D1D000009000000446F636B5369746534FFFFFFFF
-BottomPanelSize=1475
+RightPanelClients=DockSite2
+RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
+BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
-BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
+BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
-TabDockLeftClients=PropertyInspector=0,DockSite3=1
+TabDockLeftClients=DockSite3=0,PropertyInspector=1
+TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@@ -102,11 +103,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@@ -150,11 +151,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=4226
+Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4226
+ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@@ -163,18 +164,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
Top=23
-Width=10000
-Height=1267
+Width=2773
+Height=3845
MaxLeft=-1
MaxTop=-1
-ClientWidth=10000
-ClientHeight=1267
-TBDockHeight=1267
+ClientWidth=2773
+ClientHeight=3845
+TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@@ -187,12 +188,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=2000
-Height=2747
+Width=1875
+Height=6693
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=2747
+ClientWidth=1875
+ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@@ -242,8 +243,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-148
-Top=-137
+Left=-8
+Top=-30
Width=1844
Height=3139
MaxLeft=-1
@@ -299,19 +300,19 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=362
+Left=78
+Top=386
Width=1898
-Height=5370
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=5370
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
-SplitPos=111
+SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@@ -322,11 +323,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@@ -338,8 +339,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-898
-Top=-137
+Left=-946
+Top=1
Width=2844
Height=6200
MaxLeft=-1
@@ -357,8 +358,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-1026
-Top=-137
+Left=-8
+Top=287
Width=273
Height=359
MaxLeft=-1
@@ -382,11 +383,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@@ -401,11 +402,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@@ -424,11 +425,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@@ -443,11 +444,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@@ -462,11 +463,11 @@ State=0
Left=0
Top=0
Width=2336
-Height=1177
+Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
-ClientHeight=1177
+ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@@ -527,11 +528,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@@ -543,8 +544,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=0
+Left=249
+Top=709
Width=2859
Height=3206
MaxLeft=-1
@@ -565,11 +566,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@@ -590,12 +591,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=1898
-Height=9170
+Width=1773
+Height=6738
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@@ -610,11 +611,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@@ -675,14 +676,14 @@ Visible=0
Docked=1
State=0
Left=0
-Top=0
+Top=23
Width=3820
-Height=1424
+Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1424
-TBDockHeight=1424
+ClientHeight=874
+TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@@ -701,12 +702,12 @@ State=0
Left=0
Top=23
Width=2000
-Height=4529
+Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4529
-TBDockHeight=7164
+ClientHeight=9170
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@@ -723,13 +724,13 @@ Visible=0
Docked=1
State=0
Left=0
-Top=23
+Top=0
Width=1898
-Height=9170
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@@ -739,22 +740,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
-HostDockSite=DockRightPanel
+HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
-Top=454
+Top=0
Width=2000
-Height=2747
+Height=7119
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=2747
-TBDockHeight=7164
+ClientWidth=1875
+ClientHeight=6693
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
diff --git a/demos/SimpleBrowser/SimpleBrowser.identcache b/demos/SimpleBrowser/SimpleBrowser.identcache
index a0fa6580..06271b87 100644
Binary files a/demos/SimpleBrowser/SimpleBrowser.identcache and b/demos/SimpleBrowser/SimpleBrowser.identcache differ
diff --git a/demos/SimpleBrowser/SimpleBrowser.stat b/demos/SimpleBrowser/SimpleBrowser.stat
index f15c3c57..225c6e1c 100644
--- a/demos/SimpleBrowser/SimpleBrowser.stat
+++ b/demos/SimpleBrowser/SimpleBrowser.stat
@@ -3,7 +3,7 @@ EditorSecs=4647
DesignerSecs=301
InspectorSecs=137
CompileSecs=326894
-OtherSecs=1036
+OtherSecs=1037
StartTime=22/01/2017 14:51:01
RealKeys=0
EffectiveKeys=0
diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dpr b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dpr
index ee1c0194..53156764 100644
--- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dpr
+++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dpr
@@ -46,6 +46,7 @@ uses
Forms, Windows,
{$ENDIF}
uCEFApplication,
+ uCEFTypes,
uSimpleOSRBrowser in 'uSimpleOSRBrowser.pas' {Form1};
{$R *.res}
@@ -56,6 +57,8 @@ uses
begin
GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.WindowlessRenderingEnabled := True;
+ GlobalCEFApp.AddCustomCommandLine('--disable-gpu');
+ GlobalCEFApp.AddCustomCommandLine('--disable-gpu-compositing');
// In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data.
{
@@ -66,7 +69,6 @@ begin
GlobalCEFApp.cookies := 'cef\cookies';
GlobalCEFApp.UserDataPath := 'cef\User Data';
}
-
if GlobalCEFApp.StartMainProcess then
begin
Application.Initialize;
diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dproj.local b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dproj.local
index 6f99c976..f14fdcf0 100644
--- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dproj.local
+++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dproj.local
@@ -2,8 +2,8 @@
2017/01/22 17:26:58.000.836,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm
- 2017/01/22 17:28:25.000.780,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj
+ 2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas
+ 2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.dfm
+ 2017/01/22 17:28:25.000.780,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj
diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk
index 96c5ee95..68dd4e48 100644
--- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk
+++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk
@@ -1,14 +1,14 @@
[Closed Files]
-File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas',0,1,260,54,289,0,0,,
-File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,338,30,360,0,0,,
-File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,10,21,38,0,0,,
-File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,34,23,38,0,0,,
-File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,35,24,60,0,0,,
-File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,219,63,249,0,0,,
-File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,416,36,438,0,0,,
-File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBrowser.pas',0,1,208,111,219,0,0,,
-File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas',0,1,71,13,84,0,0,,
-File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\BriskBard\uBriskBardMainForm.pas',0,1,50,11,57,0,0,,
+File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas',0,1,102,90,177,0,0,,{1,338,1}{2,392,43}
+File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,1111,61,1007,0,0,,
+File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas',0,1,94,1,702,0,0,,
+File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,2780,29,2804,0,0,,
+File_4=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.Windows.pas',0,1,21523,35,21547,0,0,,
+File_5=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Controls.pas',0,1,2509,46,2537,0,0,,
+File_6=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.ExtCtrls.pas',0,1,237,30,245,0,0,,
+File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas',0,1,16,21,38,0,0,,
+File_8=TSourceModule,'V:\3071\tests\cefclient\browser\osr_dragdrop_win.cc',0,1,355,64,383,0,0,,
+File_9=TSourceModule,'V:\3071\tests\cefclient\browser\osr_window_win.cc',0,1,962,45,989,0,0,,
[Modules]
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj
@@ -46,10 +46,10 @@ TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2
-RightPanelData=00000800010100000000551500000000000001D00700000000000001000000009D1D000009000000446F636B5369746532FFFFFFFF
-BottomPanelSize=1475
+RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
+BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
-BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
+BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
@@ -64,8 +64,8 @@ WelcomePageURL=bds:/default.htm
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dpr
CursorX=2
-CursorY=68
-TopLine=28
+CursorY=64
+TopLine=31
LeftCol=1
Elisions=
Bookmarks=
@@ -85,11 +85,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=964
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=964
+ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@@ -133,11 +133,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=7276
+Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=7276
+ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@@ -146,18 +146,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
Top=23
-Width=10000
-Height=1267
+Width=2773
+Height=3845
MaxLeft=-1
MaxTop=-1
-ClientWidth=10000
-ClientHeight=1267
-TBDockHeight=1267
+ClientWidth=2773
+ClientHeight=3845
+TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@@ -294,7 +294,7 @@ TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
-SplitPos=111
+SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@@ -365,11 +365,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=964
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=964
+ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@@ -384,11 +384,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=964
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=964
+ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@@ -407,11 +407,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=964
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=964
+ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@@ -426,11 +426,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=964
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=964
+ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@@ -548,11 +548,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=964
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=964
+ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@@ -660,12 +660,12 @@ State=0
Left=0
Top=23
Width=3820
-Height=1267
+Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1267
-TBDockHeight=1267
+ClientHeight=874
+TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@@ -684,11 +684,11 @@ State=0
Left=0
Top=23
Width=2000
-Height=7578
+Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=7578
+ClientHeight=9170
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.stat b/demos/SimpleOSRBrowser/SimpleOSRBrowser.stat
index 23bcc64d..533d0a11 100644
--- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.stat
+++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.stat
@@ -1,10 +1,10 @@
[Stats]
-EditorSecs=3911
-DesignerSecs=253
-InspectorSecs=1
-CompileSecs=331279
-OtherSecs=710
+EditorSecs=25695
+DesignerSecs=383
+InspectorSecs=181
+CompileSecs=1179317
+OtherSecs=2960
StartTime=22/01/2017 17:35:20
RealKeys=0
EffectiveKeys=0
-DebugSecs=1815
+DebugSecs=15914
diff --git a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm
index d8031018..e0f30828 100644
--- a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm
+++ b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm
@@ -2,8 +2,8 @@ object Form1: TForm1
Left = 0
Top = 0
Caption = 'Simple OSR Browser'
- ClientHeight = 712
- ClientWidth = 984
+ ClientHeight = 716
+ ClientWidth = 992
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
@@ -13,37 +13,28 @@ object Form1: TForm1
OldCreateOrder = False
Position = poScreenCenter
OnAfterMonitorDpiChanged = FormAfterMonitorDpiChanged
+ OnCreate = FormCreate
+ OnDestroy = FormDestroy
+ OnHide = FormHide
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
- object Panel1: TPanel
+ object NavControlPnl: TPanel
Left = 0
Top = 0
- Width = 984
+ Width = 992
Height = 30
Align = alTop
BevelOuter = bvNone
+ Enabled = False
Padding.Left = 5
Padding.Top = 5
Padding.Right = 5
Padding.Bottom = 5
ShowCaption = False
- TabOrder = 0
- ExplicitWidth = 677
- object Edit1: TEdit
- Left = 5
- Top = 5
- Width = 943
- Height = 20
- Margins.Right = 5
- Align = alClient
- TabOrder = 0
- Text = 'http://www.google.com'
- ExplicitWidth = 636
- ExplicitHeight = 21
- end
- object Button1: TButton
- Left = 948
+ TabOrder = 1
+ object GoBtn: TButton
+ Left = 956
Top = 5
Width = 31
Height = 20
@@ -51,26 +42,51 @@ object Form1: TForm1
Align = alRight
Caption = 'Go'
TabOrder = 1
- OnClick = Button1Click
- ExplicitLeft = 641
+ OnClick = GoBtnClick
+ end
+ object ComboBox1: TComboBox
+ Left = 5
+ Top = 5
+ Width = 951
+ Height = 21
+ Align = alClient
+ ItemIndex = 0
+ TabOrder = 0
+ Text = 'https://www.google.com'
+ Items.Strings = (
+ 'https://www.google.com'
+ 'https://html5demos.com/drag')
end
end
- object PaintBox: TPaintBox32
+ object Panel1: TPanel
Left = 0
Top = 30
- Width = 984
- Height = 682
+ Width = 992
+ Height = 686
Align = alClient
- TabOrder = 1
- OnMouseDown = PaintBoxMouseDown
- OnMouseMove = PaintBoxMouseMove
- OnMouseUp = PaintBoxMouseUp
- OnMouseWheel = PaintBoxMouseWheel
- OnResize = PaintBoxResize
- ExplicitWidth = 677
- ExplicitHeight = 548
+ BevelOuter = bvNone
+ ShowCaption = False
+ TabOrder = 0
+ TabStop = True
+ OnEnter = Panel1Enter
+ OnExit = Panel1Exit
+ object PaintBox: TPaintBox32
+ Left = 0
+ Top = 0
+ Width = 992
+ Height = 686
+ Align = alClient
+ TabOrder = 0
+ OnClick = PaintBoxClick
+ OnMouseDown = PaintBoxMouseDown
+ OnMouseMove = PaintBoxMouseMove
+ OnMouseUp = PaintBoxMouseUp
+ OnMouseWheel = PaintBoxMouseWheel
+ OnResize = PaintBoxResize
+ end
end
object chrmosr: TChromium
+ OnAfterCreated = chrmosrAfterCreated
OnGetRootScreenRect = chrmosrGetRootScreenRect
OnGetViewRect = chrmosrGetViewRect
OnGetScreenPoint = chrmosrGetScreenPoint
diff --git a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas
index 89b4ee48..71acee9e 100644
--- a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas
+++ b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas
@@ -52,52 +52,49 @@ uses
GR32_Image, // You need the Graphics32 components for this demo available at http://graphics32.org
uCEFChromium, uCEFTypes, uCEFInterfaces;
+const
+ MINIBROWSER_CREATED = WM_APP + $100;
+
type
TForm1 = class(TForm)
- Panel1: TPanel;
- Edit1: TEdit;
- Button1: TButton;
- PaintBox: TPaintBox32;
+ NavControlPnl: TPanel;
+ GoBtn: TButton;
chrmosr: TChromium;
AppEvents: TApplicationEvents;
+ Panel1: TPanel; // This is just a quick and dirty hack to receive some events that the PaintBox can't receive.
+ PaintBox: TPaintBox32;
+ ComboBox1: TComboBox;
procedure FormShow(Sender: TObject);
procedure PaintBoxResize(Sender: TObject);
- procedure PaintBoxMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
+ procedure PaintBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure AppEventsMessage(var Msg: tagMSG; var Handled: Boolean);
- procedure PaintBoxMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser;
- kind: TCefPaintElementType; dirtyRectsCount: NativeUInt;
- const dirtyRects: PCefRectArray; const buffer: Pointer; width,
- height: Integer);
- procedure chrmosrGetRootScreenRect(Sender: TObject;
- const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
- procedure chrmosrCursorChange(Sender: TObject;
- const browser: ICefBrowser; cursor: HICON;
- cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
- procedure PaintBoxMouseWheel(Sender: TObject; Shift: TShiftState;
- WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
- procedure Button1Click(Sender: TObject);
- procedure chrmosrGetViewRect(Sender: TObject;
- const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
- procedure chrmosrGetScreenPoint(Sender: TObject;
- const browser: ICefBrowser; viewX, viewY: Integer; screenX,
- screenY: PInteger; out Result: Boolean);
- procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
- NewDPI: Integer);
- procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser;
- show: Boolean);
- procedure chrmosrPopupSize(Sender: TObject; const browser: ICefBrowser;
- const rect: PCefRect);
+ procedure PaintBoxMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+ procedure PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+ procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
+ procedure chrmosrGetRootScreenRect(Sender: TObject; const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
+ procedure chrmosrCursorChange(Sender: TObject; const browser: ICefBrowser; cursor: HICON; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
+ procedure PaintBoxMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
+ procedure GoBtnClick(Sender: TObject);
+ procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
+ procedure chrmosrGetScreenPoint(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; screenX, screenY: PInteger; out Result: Boolean);
+ procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI, NewDPI: Integer);
+ procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; show: Boolean);
+ procedure chrmosrPopupSize(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect);
+ procedure chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser);
+ procedure Panel1Enter(Sender: TObject);
+ procedure Panel1Exit(Sender: TObject);
+ procedure FormHide(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure PaintBoxClick(Sender: TObject);
+ procedure FormDestroy(Sender: TObject);
+
private
- function getModifiers(Shift: TShiftState): TCefEventFlags;
- function GetButton(Button: TMouseButton): TCefMouseButtonType;
+ function getModifiers(Shift: TShiftState): TCefEventFlags;
+ function GetButton(Button: TMouseButton): TCefMouseButtonType;
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
+ procedure BrowserCreatedMsg(var aMessage : TMessage); message MINIBROWSER_CREATED;
public
{ Public declarations }
@@ -111,77 +108,154 @@ implementation
{$R *.dfm}
uses
- uCEFMiscFunctions;
+ uCEFMiscFunctions, uCEFConstants;
procedure TForm1.AppEventsMessage(var Msg: tagMSG; var Handled: Boolean);
var
- event: TCefKeyEvent;
+ TempEvent : TCefKeyEvent;
begin
case Msg.message of
- WM_CHAR:
- begin
- FillChar(event, SizeOf(TCefKeyEvent), 0);
- event.kind := KEYEVENT_CHAR;
- event.windows_key_code := Msg.wParam;
- event.native_key_code := Msg.lParam;
- chrmosr.SendKeyEvent(@event);
- end;
+ WM_SYSCHAR :
+ if (Panel1.Focused or chrmosr.FrameIsFocused) and
+ (Msg.wParam in [VK_BACK..VK_HELP]) then
+ begin
+ TempEvent.kind := KEYEVENT_CHAR;
+ TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
+ TempEvent.windows_key_code := Msg.wParam;
+ TempEvent.native_key_code := Msg.lParam;
+ TempEvent.is_system_key := ord(True);
+ TempEvent.character := #0;
+ TempEvent.unmodified_character := #0;
+ TempEvent.focus_on_editable_field := ord(False);
+
+ chrmosr.SendKeyEvent(@TempEvent);
+ Handled := True;
+ end;
+
+ WM_SYSKEYDOWN :
+ if (Panel1.Focused or chrmosr.FrameIsFocused) and
+ (Msg.wParam in [VK_BACK..VK_HELP]) then
+ begin
+ TempEvent.kind := KEYEVENT_RAWKEYDOWN;
+ TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
+ TempEvent.windows_key_code := Msg.wParam;
+ TempEvent.native_key_code := Msg.lParam;
+ TempEvent.is_system_key := ord(True);
+ TempEvent.character := #0;
+ TempEvent.unmodified_character := #0;
+ TempEvent.focus_on_editable_field := ord(False);
+
+ chrmosr.SendKeyEvent(@TempEvent);
+ Handled := True;
+ end;
+
+ WM_SYSKEYUP :
+ if (Panel1.Focused or chrmosr.FrameIsFocused) and
+ (Msg.wParam in [VK_BACK..VK_HELP]) then
+ begin
+ TempEvent.kind := KEYEVENT_KEYUP;
+ TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
+ TempEvent.windows_key_code := Msg.wParam;
+ TempEvent.native_key_code := Msg.lParam;
+ TempEvent.is_system_key := ord(True);
+ TempEvent.character := #0;
+ TempEvent.unmodified_character := #0;
+ TempEvent.focus_on_editable_field := ord(False);
+
+ chrmosr.SendKeyEvent(@TempEvent);
+ Handled := True;
+ end;
+
+ WM_KEYDOWN :
+ if (Panel1.Focused or chrmosr.FrameIsFocused) and
+ (Msg.wParam in [VK_BACK..VK_HELP]) then
+ begin
+ TempEvent.kind := KEYEVENT_RAWKEYDOWN;
+ TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
+ TempEvent.windows_key_code := Msg.wParam;
+ TempEvent.native_key_code := Msg.lParam;
+ TempEvent.is_system_key := ord(False);
+ TempEvent.character := #0;
+ TempEvent.unmodified_character := #0;
+ TempEvent.focus_on_editable_field := ord(False);
+
+ chrmosr.SendKeyEvent(@TempEvent);
+ Handled := True;
+ end;
+
+ WM_KEYUP :
+ if (Panel1.Focused or chrmosr.FrameIsFocused) and
+ (Msg.wParam in [VK_BACK..VK_HELP]) then
+ begin
+ TempEvent.kind := KEYEVENT_KEYUP;
+ TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
+ TempEvent.windows_key_code := Msg.wParam;
+ TempEvent.native_key_code := Msg.lParam;
+ TempEvent.is_system_key := ord(False);
+ TempEvent.character := #0;
+ TempEvent.unmodified_character := #0;
+ TempEvent.focus_on_editable_field := ord(False);
+
+ chrmosr.SendKeyEvent(@TempEvent);
+ Handled := True;
+ end;
+
+ WM_CHAR :
+ if Panel1.Focused or chrmosr.FrameIsFocused then
+ begin
+ TempEvent.kind := KEYEVENT_CHAR;
+ TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
+ TempEvent.windows_key_code := Msg.wParam;
+ TempEvent.native_key_code := Msg.lParam;
+ TempEvent.is_system_key := ord(False);
+ TempEvent.character := #0;
+ TempEvent.unmodified_character := #0;
+ TempEvent.focus_on_editable_field := ord(False);
+
+ chrmosr.SendKeyEvent(@TempEvent);
+ Handled := True;
+ end;
end;
end;
-procedure TForm1.Button1Click(Sender: TObject);
+procedure TForm1.GoBtnClick(Sender: TObject);
begin
- chrmosr.LoadURL(Edit1.Text);
+ chrmosr.LoadURL(ComboBox1.Text);
end;
-procedure TForm1.chrmosrCursorChange(Sender: TObject;
- const browser: ICefBrowser; cursor: HICON; cursorType: TCefCursorType;
- const customCursorInfo: PCefCursorInfo);
+procedure TForm1.chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser);
begin
- case cursorType of
- CT_POINTER: PaintBox.Cursor := crArrow;
- CT_CROSS: PaintBox.Cursor:= crCross;
- CT_HAND: PaintBox.Cursor := crHandPoint;
- CT_IBEAM: PaintBox.Cursor := crIBeam;
- CT_WAIT: PaintBox.Cursor := crHourGlass;
- CT_HELP: PaintBox.Cursor := crHelp;
- CT_EASTRESIZE: PaintBox.Cursor := crSizeWE;
- CT_NORTHRESIZE: PaintBox.Cursor := crSizeNS;
- CT_NORTHEASTRESIZE: PaintBox.Cursor:= crSizeNESW;
- CT_NORTHWESTRESIZE: PaintBox.Cursor:= crSizeNWSE;
- CT_SOUTHRESIZE: PaintBox.Cursor:= crSizeNS;
- CT_SOUTHEASTRESIZE: PaintBox.Cursor:= crSizeNWSE;
- CT_SOUTHWESTRESIZE: PaintBox.Cursor:= crSizeNESW;
- CT_WESTRESIZE: PaintBox.Cursor := crSizeWE;
- CT_NORTHSOUTHRESIZE: PaintBox.Cursor:= crSizeNS;
- CT_EASTWESTRESIZE: PaintBox.Cursor := crSizeWE;
- CT_NORTHEASTSOUTHWESTRESIZE: PaintBox.Cursor:= crSizeNESW;
- CT_NORTHWESTSOUTHEASTRESIZE: PaintBox.Cursor:= crSizeNWSE;
- CT_COLUMNRESIZE: PaintBox.Cursor:= crHSplit;
- CT_ROWRESIZE: PaintBox.Cursor:= crVSplit;
- CT_MOVE: PaintBox.Cursor := crSizeAll;
- CT_PROGRESS: PaintBox.Cursor := crAppStart;
- CT_NODROP: PaintBox.Cursor:= crNo;
- CT_NONE: PaintBox.Cursor:= crNone;
- CT_NOTALLOWED: PaintBox.Cursor:= crNo;
- else
- PaintBox.Cursor := crArrow;
- end;
+ PostMessage(Handle, MINIBROWSER_CREATED, 0, 0);
end;
-procedure TForm1.chrmosrGetRootScreenRect(Sender: TObject;
- const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
+procedure TForm1.chrmosrCursorChange(Sender : TObject;
+ const browser : ICefBrowser;
+ cursor : HICON;
+ cursorType : TCefCursorType;
+ const customCursorInfo : PCefCursorInfo);
begin
- rect.x := 0;
- rect.y := 0;
- rect.width := PaintBox.Width;
+ PaintBox.Cursor := GefCursorToWindowsCursor(cursorType);
+end;
+
+procedure TForm1.chrmosrGetRootScreenRect(Sender : TObject;
+ const browser : ICefBrowser;
+ rect : PCefRect;
+ out Result : Boolean);
+begin
+ rect.x := 0;
+ rect.y := 0;
+ rect.width := PaintBox.Width;
rect.height := PaintBox.Height;
- Result := True;
+ Result := True;
end;
-procedure TForm1.chrmosrGetScreenPoint(Sender: TObject;
- const browser: ICefBrowser; viewX, viewY: Integer; screenX,
- screenY: PInteger; out Result: Boolean);
+procedure TForm1.chrmosrGetScreenPoint(Sender : TObject;
+ const browser : ICefBrowser;
+ viewX : Integer;
+ viewY : Integer;
+ screenX : PInteger;
+ screenY : PInteger;
+ out Result : Boolean);
var
TempScreenPt, TempViewPt : TPoint;
begin
@@ -193,8 +267,10 @@ begin
Result := True;
end;
-procedure TForm1.chrmosrGetViewRect(Sender: TObject;
- const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
+procedure TForm1.chrmosrGetViewRect(Sender : TObject;
+ const browser : ICefBrowser;
+ rect : PCefRect;
+ out Result : Boolean);
begin
rect.x := 0;
rect.y := 0;
@@ -203,10 +279,14 @@ begin
Result := True;
end;
-procedure TForm1.chrmosrPaint(Sender: TObject; const browser: ICefBrowser;
- kind: TCefPaintElementType; dirtyRectsCount: NativeUInt;
- const dirtyRects: PCefRectArray; const buffer: Pointer; width,
- height: Integer);
+procedure TForm1.chrmosrPaint(Sender : TObject;
+ const browser : ICefBrowser;
+ kind : TCefPaintElementType;
+ dirtyRectsCount : NativeUInt;
+ const dirtyRects : PCefRectArray;
+ const buffer : Pointer;
+ width : Integer;
+ height : Integer);
var
src, dst: PByte;
offset, i, j, w: Integer;
@@ -241,35 +321,38 @@ begin
end;
end;
-procedure TForm1.chrmosrPopupShow(Sender: TObject;
- const browser: ICefBrowser; show: Boolean);
+procedure TForm1.chrmosrPopupShow(Sender : TObject;
+ const browser : ICefBrowser;
+ show : Boolean);
begin
// TO DO : Needed to draw the "select" items
end;
-procedure TForm1.chrmosrPopupSize(Sender: TObject;
- const browser: ICefBrowser; const rect: PCefRect);
+procedure TForm1.chrmosrPopupSize(Sender : TObject;
+ const browser : ICefBrowser;
+ const rect : PCefRect);
begin
// TO DO : Needed to draw the "select" items
end;
function TForm1.getModifiers(Shift: TShiftState): TCefEventFlags;
begin
- Result := [];
- if ssShift in Shift then Include(Result, EVENTFLAG_SHIFT_DOWN);
- if ssAlt in Shift then Include(Result, EVENTFLAG_ALT_DOWN);
- if ssCtrl in Shift then Include(Result, EVENTFLAG_CONTROL_DOWN);
- if ssLeft in Shift then Include(Result, EVENTFLAG_LEFT_MOUSE_BUTTON);
- if ssRight in Shift then Include(Result, EVENTFLAG_RIGHT_MOUSE_BUTTON);
- if ssMiddle in Shift then Include(Result, EVENTFLAG_MIDDLE_MOUSE_BUTTON);
+ Result := EVENTFLAG_NONE;
+
+ if (ssShift in Shift) then Result := Result or EVENTFLAG_SHIFT_DOWN;
+ if (ssAlt in Shift) then Result := Result or EVENTFLAG_ALT_DOWN;
+ if (ssCtrl in Shift) then Result := Result or EVENTFLAG_CONTROL_DOWN;
+ if (ssLeft in Shift) then Result := Result or EVENTFLAG_LEFT_MOUSE_BUTTON;
+ if (ssRight in Shift) then Result := Result or EVENTFLAG_RIGHT_MOUSE_BUTTON;
+ if (ssMiddle in Shift) then Result := Result or EVENTFLAG_MIDDLE_MOUSE_BUTTON;
end;
function TForm1.GetButton(Button: TMouseButton): TCefMouseButtonType;
begin
case Button of
- TMouseButton.mbRight: Result := MBT_RIGHT;
- TMouseButton.mbMiddle: Result := MBT_MIDDLE;
- else Result := MBT_LEFT;
+ TMouseButton.mbRight : Result := MBT_RIGHT;
+ TMouseButton.mbMiddle : Result := MBT_MIDDLE;
+ else Result := MBT_LEFT;
end;
end;
@@ -287,8 +370,13 @@ begin
if (chrmosr <> nil) then chrmosr.NotifyMoveOrResizeStarted;
end;
-procedure TForm1.FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
- NewDPI: Integer);
+procedure TForm1.BrowserCreatedMsg(var aMessage : TMessage);
+begin
+ NavControlPnl.Enabled := True;
+ GoBtn.Click;
+end;
+
+procedure TForm1.FormAfterMonitorDpiChanged(Sender: TObject; OldDPI, NewDPI: Integer);
begin
if (chrmosr <> nil) then
begin
@@ -297,61 +385,93 @@ begin
end;
end;
-procedure TForm1.FormShow(Sender: TObject);
+procedure TForm1.FormCreate(Sender: TObject);
begin
chrmosr.Options.BackgroundColor := CefColorSetARGB($FF, $FF, $FF, $FF); // opaque white background color
chrmosr.CreateBrowser(nil, '');
+ chrmosr.InitializeDragAndDrop(PaintBox);
end;
-procedure TForm1.PaintBoxMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
-var
- event: TCefMouseEvent;
+procedure TForm1.FormDestroy(Sender: TObject);
begin
- event.x := X;
- event.y := Y;
- event.modifiers := getModifiers(Shift);
- chrmosr.SendMouseClickEvent(@event, GetButton(Button), False, 1);
+ chrmosr.ShutdownDragAndDrop;
end;
-procedure TForm1.PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
-var
- event: TCefMouseEvent;
+procedure TForm1.FormHide(Sender: TObject);
begin
- event.x := X;
- event.y := Y;
- event.modifiers := getModifiers(Shift);
- chrmosr.SendMouseMoveEvent(@event, not PaintBox.MouseInControl);
+ chrmosr.SendFocusEvent(False);
+ chrmosr.WasHidden(True);
end;
-procedure TForm1.PaintBoxMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
-var
- event: TCefMouseEvent;
+procedure TForm1.FormShow(Sender: TObject);
begin
- event.x := X;
- event.y := Y;
- event.modifiers := getModifiers(Shift);
- chrmosr.SendMouseClickEvent(@event, GetButton(Button), True, 1);
+ chrmosr.WasHidden(False);
+ chrmosr.SendFocusEvent(True);
end;
-procedure TForm1.PaintBoxMouseWheel(Sender: TObject; Shift: TShiftState;
- WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
-var
- event: TCefMouseEvent;
+procedure TForm1.PaintBoxClick(Sender: TObject);
begin
- event.x := MousePos.X;
- event.y := MousePos.Y;
- event.modifiers := getModifiers(Shift);
- chrmosr.SendMouseWheelEvent(@event, 0, WheelDelta);
+ Panel1.SetFocus;
+end;
+
+procedure TForm1.PaintBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+ TempEvent : TCefMouseEvent;
+begin
+ TempEvent.x := X;
+ TempEvent.y := Y;
+ TempEvent.modifiers := getModifiers(Shift);
+ chrmosr.SendMouseClickEvent(@TempEvent, GetButton(Button), False, 1);
+end;
+
+procedure TForm1.PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+var
+ TempEvent : TCefMouseEvent;
+begin
+ TempEvent.x := X;
+ TempEvent.y := Y;
+ TempEvent.modifiers := getModifiers(Shift);
+ chrmosr.SendMouseMoveEvent(@TempEvent, not PaintBox.MouseInControl);
+end;
+
+procedure TForm1.PaintBoxMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+ TempEvent : TCefMouseEvent;
+begin
+ TempEvent.x := X;
+ TempEvent.y := Y;
+ TempEvent.modifiers := getModifiers(Shift);
+ chrmosr.SendMouseClickEvent(@TempEvent, GetButton(Button), True, 1);
+end;
+
+procedure TForm1.PaintBoxMouseWheel(Sender : TObject;
+ Shift : TShiftState;
+ WheelDelta : Integer;
+ MousePos : TPoint;
+ var Handled : Boolean);
+var
+ TempEvent : TCefMouseEvent;
+begin
+ TempEvent.x := MousePos.X;
+ TempEvent.y := MousePos.Y;
+ TempEvent.modifiers := getModifiers(Shift);
+ chrmosr.SendMouseWheelEvent(@TempEvent, 0, WheelDelta);
end;
procedure TForm1.PaintBoxResize(Sender: TObject);
begin
PaintBox.Buffer.SetSize(PaintBox.Width, PaintBox.Height);
chrmosr.WasResized;
+end;
+
+procedure TForm1.Panel1Enter(Sender: TObject);
+begin
chrmosr.SendFocusEvent(True);
end;
+procedure TForm1.Panel1Exit(Sender: TObject);
+begin
+ chrmosr.SendFocusEvent(False);
+end;
+
end.
diff --git a/demos/ToolBoxBrowser/ToolBoxBrowser.dproj.local b/demos/ToolBoxBrowser/ToolBoxBrowser.dproj.local
index 7dde1148..8d868d00 100644
--- a/demos/ToolBoxBrowser/ToolBoxBrowser.dproj.local
+++ b/demos/ToolBoxBrowser/ToolBoxBrowser.dproj.local
@@ -2,11 +2,11 @@
2017/05/21 15:39:53.000.029,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
- 2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas
- 2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.dfm
- 2017/05/21 15:40:43.000.627,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dproj
+ 2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas
+ 2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm
+ 2017/05/21 15:40:43.000.627,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj
2017/05/21 15:44:20.000.154,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas
- 2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.dfm
- 2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas
+ 2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas
+ 2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.dfm
diff --git a/demos/ToolBoxBrowser/ToolBoxBrowser.dsk b/demos/ToolBoxBrowser/ToolBoxBrowser.dsk
index ae9f65b8..168524f8 100644
--- a/demos/ToolBoxBrowser/ToolBoxBrowser.dsk
+++ b/demos/ToolBoxBrowser/ToolBoxBrowser.dsk
@@ -45,15 +45,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
-RightPanelClients=DockSite2,DockSite4
-RightPanelData=00000800010100000000551500000000000001D00700000000000001000000004312000009000000446F636B536974653201000000009D1D000009000000446F636B5369746534FFFFFFFF
-BottomPanelSize=1475
+RightPanelClients=DockSite2
+RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
+BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
-BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
+BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
-TabDockLeftClients=PropertyInspector=0,DockSite3=1
+TabDockLeftClients=DockSite3=0,PropertyInspector=1
+TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@@ -84,11 +85,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@@ -132,11 +133,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=4226
+Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4226
+ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@@ -145,18 +146,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
Top=23
-Width=10000
-Height=1267
+Width=2773
+Height=3845
MaxLeft=-1
MaxTop=-1
-ClientWidth=10000
-ClientHeight=1267
-TBDockHeight=1267
+ClientWidth=2773
+ClientHeight=3845
+TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@@ -169,12 +170,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=2000
-Height=2747
+Width=1875
+Height=6693
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=2747
+ClientWidth=1875
+ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@@ -224,8 +225,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-148
-Top=-137
+Left=-8
+Top=-30
Width=1844
Height=3139
MaxLeft=-1
@@ -281,19 +282,19 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=362
+Left=78
+Top=386
Width=1898
-Height=5370
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=5370
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
-SplitPos=111
+SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@@ -304,11 +305,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@@ -320,8 +321,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-898
-Top=-137
+Left=-946
+Top=1
Width=2844
Height=6200
MaxLeft=-1
@@ -339,8 +340,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-1026
-Top=-137
+Left=-8
+Top=287
Width=273
Height=359
MaxLeft=-1
@@ -364,11 +365,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@@ -383,11 +384,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@@ -406,11 +407,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@@ -425,11 +426,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@@ -444,11 +445,11 @@ State=0
Left=0
Top=0
Width=2336
-Height=1177
+Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
-ClientHeight=1177
+ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@@ -509,11 +510,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@@ -525,8 +526,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=0
+Left=249
+Top=709
Width=2859
Height=3206
MaxLeft=-1
@@ -547,11 +548,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@@ -572,12 +573,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=1898
-Height=9170
+Width=1773
+Height=6738
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@@ -592,11 +593,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@@ -657,14 +658,14 @@ Visible=0
Docked=1
State=0
Left=0
-Top=0
+Top=23
Width=3820
-Height=1424
+Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1424
-TBDockHeight=1424
+ClientHeight=874
+TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@@ -683,12 +684,12 @@ State=0
Left=0
Top=23
Width=2000
-Height=4529
+Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4529
-TBDockHeight=7164
+ClientHeight=9170
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@@ -705,13 +706,13 @@ Visible=0
Docked=1
State=0
Left=0
-Top=23
+Top=0
Width=1898
-Height=9170
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@@ -721,22 +722,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
-HostDockSite=DockRightPanel
+HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
Left=0
-Top=454
+Top=0
Width=2000
-Height=2747
+Height=7119
MaxLeft=-1
MaxTop=-1
-ClientWidth=2000
-ClientHeight=2747
-TBDockHeight=7164
+ClientWidth=1875
+ClientHeight=6693
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
diff --git a/demos/ToolBoxBrowser/ToolBoxBrowser.stat b/demos/ToolBoxBrowser/ToolBoxBrowser.stat
index 2dfd6589..11b8aee4 100644
--- a/demos/ToolBoxBrowser/ToolBoxBrowser.stat
+++ b/demos/ToolBoxBrowser/ToolBoxBrowser.stat
@@ -3,7 +3,7 @@ EditorSecs=684
DesignerSecs=16
InspectorSecs=1
CompileSecs=22006
-OtherSecs=57
+OtherSecs=58
StartTime=21/05/2017 17:35:40
RealKeys=0
EffectiveKeys=0
diff --git a/source/CEF4Delphi.dpk b/source/CEF4Delphi.dpk
index e8134ef0..f6e0b8f5 100644
--- a/source/CEF4Delphi.dpk
+++ b/source/CEF4Delphi.dpk
@@ -151,6 +151,8 @@ contains
uCEFChromiumWindow in 'uCEFChromiumWindow.pas',
uCEFBaseRefCounted in 'uCEFBaseRefCounted.pas',
uCEFBaseScopedWrapper in 'uCEFBaseScopedWrapper.pas',
- uCEFAccessibilityHandler in 'uCEFAccessibilityHandler.pas';
+ uCEFAccessibilityHandler in 'uCEFAccessibilityHandler.pas',
+ uOLEDragAndDrop in 'uOLEDragAndDrop.pas',
+ uCEFDragAndDropMgr in 'uCEFDragAndDropMgr.pas';
end.
diff --git a/source/CEF4Delphi.dproj b/source/CEF4Delphi.dproj
index ba31adda..93c1f00a 100644
--- a/source/CEF4Delphi.dproj
+++ b/source/CEF4Delphi.dproj
@@ -210,6 +210,8 @@
+
+
Cfg_2
Base
diff --git a/source/CEF4Delphi.dproj.local b/source/CEF4Delphi.dproj.local
index a99f126e..3e2c5ec0 100644
--- a/source/CEF4Delphi.dproj.local
+++ b/source/CEF4Delphi.dproj.local
@@ -2,288 +2,289 @@
2016/11/03 13:34:24.000.622,=rtl.dcp
- 2016/11/03 13:36:50.000.899,C:\Program Files\Embarcadero\Studio\17.0\cef3\cef3.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Package1.dproj
+ 2016/11/03 13:36:50.000.899,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Package1.dproj=C:\Program Files\Embarcadero\Studio\17.0\cef3\cef3.dproj
2016/11/03 13:37:44.000.301,=C:\Program Files\Embarcadero\Studio\17.0\cef3\ceferr.pas
- 2016/11/03 13:37:45.000.236,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas
2016/11/03 13:37:45.000.074,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefgui.pas
2016/11/03 13:37:45.000.219,=C:\Program Files\Embarcadero\Studio\17.0\cef3\ceflib.pas
+ 2016/11/03 13:37:45.000.236,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas
2016/11/03 13:37:47.000.876,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefvcl.pas
2016/11/03 13:42:03.000.211,=vcl.dcp
2016/11/03 14:22:14.000.293,C:\Program Files\Embarcadero\Studio\17.0\cef3\ceferr.pas=
2016/11/03 14:22:31.000.065,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/03 14:23:07.000.607,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFConstants.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/03 14:23:07.000.607,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFConstants.pas
2016/11/03 16:02:18.000.380,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/03 16:02:54.000.678,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibrary.pas
- 2016/11/03 19:41:00.000.323,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibrary.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTypes.pas
+ 2016/11/03 16:02:54.000.678,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibrary.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/03 19:41:00.000.323,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTypes.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibrary.pas
2016/11/03 19:41:47.000.437,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/03 19:42:09.000.623,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFInterfaces.pas
+ 2016/11/03 19:42:09.000.623,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFInterfaces.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/11/03 19:47:24.000.150,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/03 19:47:36.000.023,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMiscFunctions.pas
+ 2016/11/03 19:47:36.000.023,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMiscFunctions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/11/04 09:38:54.000.499,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 09:39:27.000.208,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibFunctions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 10:17:03.000.353,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFHandlers.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefgui.pas
+ 2016/11/04 09:39:27.000.208,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibFunctions.pas
+ 2016/11/04 10:17:03.000.353,C:\Program Files\Embarcadero\Studio\17.0\cef3\cefgui.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFHandlers.pas
2016/11/04 10:19:09.000.192,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 10:19:19.000.721,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFApplication.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 10:19:19.000.721,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFApplication.pas
2016/11/04 10:28:32.000.523,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 10:28:45.000.314,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBase.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 10:28:45.000.314,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBase.pas
2016/11/04 10:53:47.000.492,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 10:54:04.000.082,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSchemeRegistrar.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 10:54:04.000.082,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSchemeRegistrar.pas
2016/11/04 10:57:19.000.058,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 10:57:35.000.208,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCommandLine.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 10:57:35.000.208,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCommandLine.pas
2016/11/04 11:12:13.000.709,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 11:12:22.000.981,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFClient.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 11:12:22.000.981,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFClient.pas
2016/11/04 11:18:45.000.858,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 11:19:23.000.685,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFProcessMessage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 11:19:23.000.685,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFProcessMessage.pas
2016/11/04 11:22:59.000.325,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 11:23:09.000.748,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBrowser.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 11:23:09.000.748,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBrowser.pas
2016/11/04 11:30:13.000.870,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 11:30:22.000.479,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFListValue.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 11:30:22.000.479,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFListValue.pas
2016/11/04 11:33:29.000.686,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 11:33:40.000.124,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBinaryValue.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 11:33:40.000.124,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBinaryValue.pas
2016/11/04 11:36:10.000.379,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 11:36:37.000.046,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFValue.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 11:36:37.000.046,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFValue.pas
2016/11/04 11:40:42.000.080,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 11:41:02.000.855,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDictionaryValue.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 11:41:02.000.855,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDictionaryValue.pas
2016/11/04 12:04:55.000.807,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:05:21.000.299,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImageCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:05:37.000.607,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImageCallback.pas
- 2016/11/04 12:10:01.000.351,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImage.pas
- 2016/11/04 12:10:25.000.976,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImageCallBack.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImage.pas
+ 2016/11/04 12:05:21.000.299,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImageCallback.pas
+ 2016/11/04 12:05:37.000.607,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImageCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImage.pas
+ 2016/11/04 12:10:01.000.351,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImage.pas
+ 2016/11/04 12:10:25.000.976,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImageCallBack.pas
2016/11/04 12:12:39.000.648,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:12:49.000.133,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFrame.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:12:49.000.133,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFrame.pas
2016/11/04 12:16:41.000.794,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:16:57.000.667,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPDFPrintCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:16:57.000.667,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPDFPrintCallback.pas
2016/11/04 12:21:00.000.581,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:21:15.000.075,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRunFileDialogCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:21:15.000.075,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRunFileDialogCallback.pas
2016/11/04 12:25:08.000.825,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:25:24.000.237,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestContext.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:25:24.000.237,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestContext.pas
2016/11/04 12:31:41.000.426,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:31:57.000.575,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFNavigationEntryVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:31:57.000.575,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFNavigationEntryVisitor.pas
2016/11/04 12:37:26.000.233,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:37:41.000.439,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:37:41.000.439,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringVisitor.pas
2016/11/04 12:41:15.000.143,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:41:29.000.653,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Context.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:41:29.000.653,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Context.pas
2016/11/04 12:44:15.000.121,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:44:21.000.835,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:44:21.000.835,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomVisitor.pas
2016/11/04 12:47:43.000.602,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:47:55.000.980,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFNavigationEntry.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:47:55.000.980,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFNavigationEntry.pas
2016/11/04 12:54:00.000.201,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:54:11.000.315,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieManager.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:54:11.000.315,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieManager.pas
2016/11/04 12:57:30.000.891,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 12:57:42.000.499,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCompletionCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 12:57:42.000.499,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCompletionCallback.pas
2016/11/04 13:01:09.000.833,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 13:01:23.000.562,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestContextHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 13:01:23.000.562,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestContextHandler.pas
2016/11/04 13:57:45.000.846,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 13:57:59.000.369,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginInfo.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 13:57:59.000.369,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginInfo.pas
2016/11/04 14:31:30.000.550,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 14:31:41.000.938,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomDocument.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 14:31:41.000.938,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomDocument.pas
2016/11/04 14:34:17.000.090,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 14:34:28.000.129,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomNode.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 14:34:28.000.129,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomNode.pas
2016/11/04 14:37:55.000.209,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 14:38:03.000.057,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Value.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 14:38:03.000.057,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Value.pas
2016/11/04 14:41:40.000.277,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 14:41:59.000.136,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 14:42:16.000.591,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastv8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Accessor.pas
- 2016/11/04 14:42:25.000.676,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastv8Accessor.pas
- 2016/11/04 15:22:35.000.321,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefvcl.pas
+ 2016/11/04 14:41:59.000.136,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Accessor.pas
+ 2016/11/04 14:42:16.000.591,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastv8Accessor.pas
+ 2016/11/04 14:42:25.000.676,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastv8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Accessor.pas
+ 2016/11/04 15:22:35.000.321,C:\Program Files\Embarcadero\Studio\17.0\cef3\cefvcl.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas
2016/11/04 15:35:00.000.300,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 15:35:10.000.181,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLoadHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 15:35:10.000.181,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLoadHandler.pas
2016/11/04 15:41:55.000.278,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 15:42:06.000.032,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFocusHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 15:42:06.000.032,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFocusHandler.pas
2016/11/04 15:45:35.000.950,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 15:45:45.000.999,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFContextMenuHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 15:45:45.000.999,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFContextMenuHandler.pas
2016/11/04 15:50:29.000.265,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 15:50:38.000.989,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDialogHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 15:50:38.000.989,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDialogHandler.pas
2016/11/04 15:56:26.000.967,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 15:56:35.000.859,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFKeyboardHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 15:56:35.000.859,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFKeyboardHandler.pas
2016/11/04 15:59:45.000.629,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 15:59:55.000.903,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDisplayHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 15:59:55.000.903,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDisplayHandler.pas
2016/11/04 16:02:33.000.750,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:02:43.000.771,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:02:43.000.771,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadHandler.pas
2016/11/04 16:05:14.000.727,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:05:25.000.707,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGeolocationHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:05:25.000.707,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGeolocationHandler.pas
2016/11/04 16:07:34.000.747,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:07:48.000.604,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFJsDialogHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:07:48.000.604,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFJsDialogHandler.pas
2016/11/04 16:10:46.000.310,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:10:57.000.068,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLifeSpanHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:10:57.000.068,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLifeSpanHandler.pas
2016/11/04 16:14:08.000.188,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:14:20.000.442,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:14:20.000.442,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestHandler.pas
2016/11/04 16:18:01.000.623,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:18:07.000.730,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRenderHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:18:07.000.730,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRenderHandler.pas
2016/11/04 16:21:06.000.326,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:21:15.000.423,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDragHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:27:29.000.133,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFindHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFHandlers.pas
+ 2016/11/04 16:21:15.000.423,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDragHandler.pas
+ 2016/11/04 16:27:29.000.133,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFHandlers.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFindHandler.pas
2016/11/04 16:29:59.000.889,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:30:12.000.364,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPostData.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:30:12.000.364,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPostData.pas
2016/11/04 16:32:14.000.814,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:32:25.000.911,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPostDataElement.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:32:25.000.911,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPostDataElement.pas
2016/11/04 16:33:41.000.767,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:33:51.000.107,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequest.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:33:51.000.107,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequest.pas
2016/11/04 16:35:36.000.010,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:35:50.000.837,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStreamReader.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:35:50.000.837,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStreamReader.pas
2016/11/04 16:37:53.000.753,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:38:01.000.643,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWriteHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:38:01.000.643,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWriteHandler.pas
2016/11/04 16:39:57.000.905,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:40:04.000.132,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStreamWriter.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:40:04.000.132,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStreamWriter.pas
2016/11/04 16:41:56.000.888,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:42:13.000.418,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8StackFrame.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:42:13.000.418,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8StackFrame.pas
2016/11/04 16:43:23.000.259,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:43:31.000.890,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8StackTrace.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:43:31.000.890,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8StackTrace.pas
2016/11/04 16:45:02.000.388,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:45:15.000.769,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Handler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:45:15.000.769,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Handler.pas
2016/11/04 16:47:31.000.384,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:47:43.000.976,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:47:43.000.976,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestCallback.pas
2016/11/04 16:48:49.000.916,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:49:13.000.169,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCustomStreamReader.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:49:13.000.169,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCustomStreamReader.pas
2016/11/04 16:52:24.000.501,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:54:53.000.505,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:54:53.000.505,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCallback.pas
2016/11/04 16:57:17.000.239,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 16:57:26.000.077,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 16:57:26.000.077,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceHandler.pas
2016/11/04 17:00:50.000.674,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:00:59.000.259,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSchemeHandlerFactory.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:00:59.000.259,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSchemeHandlerFactory.pas
2016/11/04 17:03:15.000.546,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:05:49.000.016,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTask.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:05:49.000.016,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTask.pas
2016/11/04 17:10:43.000.387,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:10:57.000.795,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTaskRunner.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:10:57.000.795,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTaskRunner.pas
2016/11/04 17:11:52.000.079,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:11:59.000.503,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringMap.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:11:59.000.503,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringMap.pas
2016/11/04 17:13:03.000.928,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:13:12.000.687,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringMultimap.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:13:12.000.687,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringMultimap.pas
2016/11/04 17:15:01.000.582,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:15:12.000.909,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFXmlReader.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:15:12.000.909,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFXmlReader.pas
2016/11/04 17:16:26.000.528,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:16:34.000.014,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFZipReader.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:16:34.000.014,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFZipReader.pas
2016/11/04 17:17:43.000.074,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:17:51.000.944,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResponse.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:17:51.000.944,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResponse.pas
2016/11/04 17:29:30.000.463,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:29:40.000.733,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:29:40.000.733,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieVisitor.pas
2016/11/04 17:32:01.000.224,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:32:07.000.583,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Exception.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:32:07.000.583,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Exception.pas
2016/11/04 17:34:32.000.893,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:34:39.000.833,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceBundleHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:34:39.000.833,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceBundleHandler.pas
2016/11/04 17:38:58.000.648,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:39:04.000.466,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSetCookieCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:39:04.000.466,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSetCookieCallback.pas
2016/11/04 17:40:44.000.949,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:40:57.000.165,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDeleteCookiesCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:40:57.000.165,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDeleteCookiesCallback.pas
2016/11/04 17:43:27.000.412,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:43:42.000.253,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownLoadItem.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:43:42.000.253,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownLoadItem.pas
2016/11/04 17:45:13.000.508,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:45:19.000.703,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBeforeDownloadCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:45:19.000.703,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBeforeDownloadCallback.pas
2016/11/04 17:46:27.000.140,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:46:38.000.480,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadItemCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:46:38.000.480,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadItemCallback.pas
2016/11/04 17:49:03.000.980,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:49:13.000.577,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFAuthCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:49:13.000.577,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFAuthCallback.pas
2016/11/04 17:50:22.000.655,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:50:32.000.879,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFJsDialogCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:50:32.000.879,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFJsDialogCallback.pas
2016/11/04 17:51:12.000.076,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:51:18.000.891,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGeolocationCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:51:18.000.891,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGeolocationCallback.pas
2016/11/04 17:52:26.000.379,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:52:38.000.008,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFContextMenuParams.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:52:38.000.008,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFContextMenuParams.pas
2016/11/04 17:53:51.000.704,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:53:59.000.469,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMenuModel.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:53:59.000.469,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMenuModel.pas
2016/11/04 17:55:42.000.326,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:55:54.000.047,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBrowserProcessHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:55:54.000.047,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBrowserProcessHandler.pas
2016/11/04 17:57:33.000.807,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 17:57:44.000.320,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRenderProcessHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 17:57:44.000.320,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRenderProcessHandler.pas
2016/11/04 18:01:03.000.908,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:01:16.000.502,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFUrlrequestClient.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:01:16.000.502,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFUrlrequestClient.pas
2016/11/04 18:03:22.000.002,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:03:36.000.694,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFUrlRequest.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:03:36.000.694,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFUrlRequest.pas
2016/11/04 18:04:54.000.070,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:05:01.000.724,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginInfoVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:05:01.000.724,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginInfoVisitor.pas
2016/11/04 18:08:01.000.312,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:08:10.000.190,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginUnstableCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:08:10.000.190,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginUnstableCallback.pas
2016/11/04 18:09:22.000.047,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:09:32.000.833,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFEndTracingCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:09:32.000.833,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFEndTracingCallback.pas
2016/11/04 18:10:56.000.167,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:11:03.000.863,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGetGeolocationCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:11:03.000.863,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGetGeolocationCallback.pas
2016/11/04 18:11:49.000.619,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:11:58.000.315,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFileDialogCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:11:58.000.315,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFileDialogCallback.pas
2016/11/04 18:13:17.000.596,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:13:28.000.975,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDragData.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:13:28.000.975,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDragData.pas
2016/11/04 18:14:46.000.315,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:14:55.000.027,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResolveCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:14:55.000.027,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResolveCallback.pas
2016/11/04 18:17:10.000.544,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:17:23.000.918,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPrintSettings.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:17:23.000.918,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPrintSettings.pas
2016/11/04 18:18:17.000.655,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:18:25.000.031,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslCertPrincipal.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:18:25.000.031,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslCertPrincipal.pas
2016/11/04 18:19:36.000.246,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:19:49.000.081,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslInfo.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:19:49.000.081,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslInfo.pas
2016/11/04 18:21:23.000.319,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:21:29.000.499,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRunContextMenuCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:21:29.000.499,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRunContextMenuCallback.pas
2016/11/04 18:22:54.000.779,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:23:07.000.660,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceBundle.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:23:07.000.660,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceBundle.pas
2016/11/04 18:24:23.000.928,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:24:31.000.808,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResponseFilter.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:24:31.000.808,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResponseFilter.pas
2016/11/04 18:25:31.000.691,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:25:41.000.021,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:25:41.000.021,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFImage.pas
2016/11/04 18:26:54.000.263,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/04 18:27:04.000.226,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMenuModelDelegate.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/04 18:27:04.000.226,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMenuModelDelegate.pas
2016/11/04 18:28:19.000.494,C:\Program Files\Embarcadero\Studio\17.0\cef3\ceflib.pas=
- 2016/11/04 18:31:57.000.277,C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uRegister.pas
+ 2016/11/04 18:31:57.000.277,C:\Program Files\Embarcadero\Studio\17.0\cef3\uRegister.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas
2016/11/05 09:18:32.000.021,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/05 09:18:43.000.557,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Types.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/05 09:41:11.000.609,C:\Program Files\Embarcadero\Studio\17.0\cef3\uRegister.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRegisterComponents.pas
+ 2016/11/05 09:18:43.000.557,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Types.pas
+ 2016/11/05 09:41:11.000.609,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRegisterComponents.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uRegister.pas
2016/11/06 17:42:31.000.412,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/06 17:42:57.000.570,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieDeleterTask.pas
+ 2016/11/06 17:42:57.000.570,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieDeleterTask.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/11/06 17:57:18.000.164,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieDeleterTask.pas=
2016/11/13 17:16:54.000.597,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/13 17:17:19.000.616,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas
+ 2016/11/13 17:17:19.000.616,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/11/13 18:46:07.000.526,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/13 18:52:50.000.372,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumDevTools.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/13 18:52:50.000.372,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumDevTools.pas
2016/11/14 14:57:55.000.572,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas=
2016/11/25 09:35:30.000.156,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas
2016/11/25 09:39:41.000.590,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas=
2016/11/29 09:52:14.000.850,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas
2016/11/29 10:05:42.000.033,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/29 10:06:49.000.745,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumEvents.pas
+ 2016/11/29 10:06:49.000.745,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumEvents.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/11/29 10:08:16.000.524,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/29 10:10:28.000.078,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOptions.pas
+ 2016/11/29 10:10:28.000.078,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOptions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/11/29 10:11:26.000.030,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/29 10:12:11.000.187,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumFontOptions.pas
+ 2016/11/29 10:12:11.000.187,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumFontOptions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/11/29 10:14:39.000.549,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/29 10:15:46.000.466,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPDFPrintOptions.pas
- 2016/11/29 11:35:06.000.964,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumBase.pas
+ 2016/11/29 10:15:46.000.466,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPDFPrintOptions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/11/29 11:35:06.000.964,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumBase.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas
2016/11/29 11:35:58.000.919,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas=
- 2016/11/29 11:36:22.000.935,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumBase.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas
- 2016/11/29 11:41:17.000.365,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumDevTools.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWindowParent.pas
+ 2016/11/29 11:36:22.000.935,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumBase.pas
+ 2016/11/29 11:41:17.000.365,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWindowParent.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumDevTools.pas
2016/11/29 14:26:03.000.580,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/29 14:38:08.000.147,C:\Program Files\Embarcadero\Studio\17.0\cef3\TCEFChromiumWindow.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/11/29 14:41:18.000.620,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\TCEFChromiumWindow.pas
+ 2016/11/29 14:38:08.000.147,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\TCEFChromiumWindow.pas
+ 2016/11/29 14:41:18.000.620,C:\Program Files\Embarcadero\Studio\17.0\cef3\TCEFChromiumWindow.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas
2016/11/29 15:48:26.000.475,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium2.pas
2016/11/29 16:29:04.000.712,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium2.pas=
2016/12/14 09:31:37.000.825,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/12/14 09:43:37.000.496,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCefRegisterCDMCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/12/14 09:43:37.000.496,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCefRegisterCDMCallback.pas
2016/12/15 11:52:46.000.153,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/12/15 15:23:08.000.388,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/12/15 15:27:53.000.729,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFThread.pas
+ 2016/12/15 15:27:53.000.729,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFThread.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/12/15 16:33:21.000.646,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/12/15 16:33:59.000.530,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Interceptor.pas
+ 2016/12/15 16:33:59.000.530,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Interceptor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/12/15 18:08:50.000.736,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/12/15 18:10:25.000.832,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWaitableEvent.pas
+ 2016/12/15 18:10:25.000.832,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWaitableEvent.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/12/16 09:51:23.000.585,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/12/16 09:53:31.000.858,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFX509CertPrincipal.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/12/16 09:53:31.000.858,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFX509CertPrincipal.pas
2016/12/16 10:34:36.000.246,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/12/16 10:39:48.000.349,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFX509Certificate.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
+ 2016/12/16 10:39:48.000.349,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFX509Certificate.pas
2016/12/16 11:11:31.000.335,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslCertPrincipal.pas=
2016/12/16 12:46:25.000.699,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/12/16 12:51:53.000.173,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSSLStatus.pas
+ 2016/12/16 12:51:53.000.173,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSSLStatus.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2016/12/16 13:03:29.000.911,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
- 2016/12/16 13:15:23.000.921,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSelectClientCertificateCallback.pas
+ 2016/12/16 13:15:23.000.921,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSelectClientCertificateCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas
2017/01/05 09:46:44.000.222,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas=
2017/01/05 10:34:46.000.529,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas
- 2017/01/22 10:37:38.000.090,C:\Program Files\Embarcadero\Studio\17.0\cef3\cef3.dproj=C:\Program Files\Embarcadero\Studio\17.0\cef3\CEF4Delphi.dproj
+ 2017/01/22 10:37:38.000.090,C:\Program Files\Embarcadero\Studio\17.0\cef3\CEF4Delphi.dproj=C:\Program Files\Embarcadero\Studio\17.0\cef3\cef3.dproj
2017/03/16 09:32:10.000.622,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBaseRefCounted.pas
2017/03/16 09:32:22.000.431,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBaseScopedWrapper.pas
2017/03/16 09:32:54.000.567,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBase.pas=
2017/03/26 17:18:35.000.135,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas
- 2017/03/26 17:19:20.000.644,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDLLFunctions.pas
+ 2017/03/26 17:19:20.000.644,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDLLFunctions.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas
2017/03/26 17:28:33.000.757,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDLLFunctions.pas=
2017/05/21 15:27:39.000.810,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas
- 2017/05/21 15:34:16.000.487,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.dfm
- 2017/05/21 15:34:16.000.487,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas
+ 2017/05/21 15:34:16.000.487,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.dfm
+ 2017/05/21 15:34:16.000.487,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas
2017/05/21 15:36:08.000.019,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas=
2017/06/05 17:09:35.000.867,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas
- 2017/06/05 17:10:51.000.565,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFAccessibilityHandler.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas
+ 2017/06/05 17:10:51.000.565,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFAccessibilityHandler.pas
+ 2017/07/18 09:50:01.000.551,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDrop.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas
diff --git a/source/CEF4Delphi.dsk b/source/CEF4Delphi.dsk
index acf36d57..f15143e2 100644
--- a/source/CEF4Delphi.dsk
+++ b/source/CEF4Delphi.dsk
@@ -1,27 +1,62 @@
[Closed Files]
-File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFLibFunctions.pas',0,1,46,123,95,0,0,,
-File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,52,44,917,0,0,,
-File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,952,39,987,0,0,,
-File_3=TSourceModule,'V:\3071_2\include\capi\cef_file_util_capi.h',0,1,1,49,38,0,0,,
-File_4=TSourceModule,'V:\3071\include\capi\cef_file_util_capi.h',0,1,1,1,1,0,0,,
-File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFClient.pas',0,1,599,83,622,0,0,,
-File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFConstants.pas',0,1,253,25,279,0,0,,
-File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomDocument.pas',0,1,46,1,1,0,0,,
-File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,751,18,767,0,0,,
-File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,2276,92,2313,0,0,,
+File_0=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Controls.pas',0,1,13129,37,13152,0,0,,
+File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFConstants.pas',0,1,335,44,361,0,0,,
+File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,1,34,3,61,0,0,,
+File_3=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.ShlObj.pas',0,1,14252,1,14278,0,0,,
+File_4=TSourceModule,'V:\3071\tests\cefclient\browser\osr_dragdrop_win.cc',0,1,553,35,552,0,0,,{1
+File_5=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\data\Data.DB.pas',0,1,2846,29,2870,0,0,,
+File_6=TSourceModule,'O:\GWDrgDrp\GWDragDemo\GWDragDemoAppInterface.pas',0,1,112,50,152,0,0,,
+File_7=TSourceModule,'O:\GWDrgDrp\GWDragDemo\GWDragSource.pas',0,1,540,29,568,0,0,,
+File_8=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.ActiveX.pas',0,1,131,3,155,0,0,,
+File_9=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.Windows.pas',0,1,23379,1,23403,0,0,,
[Modules]
-Module0=default.htm
-Count=1
+Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas
+Module1=default.htm
+Module2=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas
+Module3=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
+Module4=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas
+Module5=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas
+Count=6
EditWindowCount=1
+[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
[default.htm]
ModuleType=TURLModule
+[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
+[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
+[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
+[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
[EditWindow0]
-ViewCount=1
-CurrentView=0
+ViewCount=6
+CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas
View0=0
+View1=1
+View2=2
+View3=3
+View4=4
+View5=5
PercentageSizes=1
Create=1
Visible=1
@@ -39,20 +74,76 @@ DockedToMainForm=1
BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
-RightPanelSize=0
-BottomPanelSize=0
+RightPanelSize=2000
+RightPanelClients=DockSite2,DockSite4
+RightPanelData=00000800010100000000661600000000000001D0070000000000000100000000610A000009000000446F636B53697465320100000000191F000009000000446F636B5369746534FFFFFFFF
+BottomPanelSize=1095
BottomPanelClients=DockSite1,MessageView
-BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D1234000000000000022506000000000000FFFFFFFF
+BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002470400000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
-TabDockLeftClients=PropertyInspector=0,DockSite3=1
-TabDockRightClients=DockSite4=0,DockSite2=1
+TabDockLeftClients=DockSite3=0,PropertyInspector=1
[View0]
CustomEditViewType=TWelcomePageView
WelcomePageURL=bds:/default.htm
+[View1]
+CustomEditViewType=TEditView
+Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas
+CursorX=1
+CursorY=618
+TopLine=581
+LeftCol=1
+Elisions=
+Bookmarks={1,502,1}{2,425,1}{3,425,1}{4,317,1}
+EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas
+
+[View2]
+CustomEditViewType=TEditView
+Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
+CursorX=31
+CursorY=2804
+TopLine=2795
+LeftCol=1
+Elisions=
+Bookmarks={1,932,1}{2,2248,29}{4,692,1}
+EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
+
+[View3]
+CustomEditViewType=TEditView
+Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas
+CursorX=74
+CursorY=694
+TopLine=667
+LeftCol=1
+Elisions=
+Bookmarks={1,727,1}{2,55,13}
+EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas
+
+[View4]
+CustomEditViewType=TEditView
+Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas
+CursorX=53
+CursorY=1401
+TopLine=1371
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas
+
+[View5]
+CustomEditViewType=TEditView
+Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas
+CursorX=1
+CursorY=1135
+TopLine=1121
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas
+
[Watches]
Count=0
@@ -67,11 +158,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@@ -115,11 +206,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=8845
+Height=2141
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=8845
+ClientHeight=2141
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@@ -128,18 +219,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
-Visible=0
+Visible=1
Docked=1
State=0
Left=0
-Top=0
-Width=2773
-Height=1424
+Top=23
+Width=10000
+Height=874
MaxLeft=-1
MaxTop=-1
-ClientWidth=2773
-ClientHeight=1424
-TBDockHeight=1424
+ClientWidth=10000
+ClientHeight=874
+TBDockHeight=874
LRDockWidth=2773
Dockable=1
StayOnTop=0
@@ -153,11 +244,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=4339
+Height=5224
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4339
+ClientHeight=5224
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@@ -207,8 +298,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-148
-Top=-137
+Left=-8
+Top=-30
Width=1844
Height=3139
MaxLeft=-1
@@ -264,19 +355,19 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=362
+Left=78
+Top=386
Width=1898
-Height=5370
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=5370
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
-SplitPos=111
+SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@@ -287,11 +378,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@@ -303,8 +394,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-898
-Top=-137
+Left=-946
+Top=1
Width=2844
Height=6200
MaxLeft=-1
@@ -322,8 +413,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-1026
-Top=-137
+Left=-1152
+Top=243
Width=273
Height=359
MaxLeft=-1
@@ -347,11 +438,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@@ -366,11 +457,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@@ -389,11 +480,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@@ -408,11 +499,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@@ -427,11 +518,11 @@ State=0
Left=0
Top=0
Width=2336
-Height=1177
+Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
-ClientHeight=1177
+ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@@ -492,11 +583,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@@ -508,8 +599,8 @@ Create=1
Visible=0
Docked=1
State=0
-Left=0
-Top=0
+Left=249
+Top=709
Width=2859
Height=3206
MaxLeft=-1
@@ -530,11 +621,11 @@ State=0
Left=0
Top=0
Width=3820
-Height=1121
+Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1121
+ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@@ -555,12 +646,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=1898
-Height=9170
+Width=1773
+Height=6738
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@@ -575,11 +666,11 @@ State=0
Left=0
Top=0
Width=2000
-Height=6861
+Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=6861
+ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@@ -640,14 +731,14 @@ Visible=0
Docked=1
State=0
Left=0
-Top=0
+Top=23
Width=3820
-Height=1424
+Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
-ClientHeight=1424
-TBDockHeight=1424
+ClientHeight=874
+TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@@ -656,22 +747,22 @@ ActiveTabID=DebugLogView
TabDockClients=DebugLogView,BreakpointWindow,ThreadStatusWindow,CallStackWindow,WatchWindow,LocalVarsWindow
[DockSite2]
-HostDockSite=RightTabDock
+HostDockSite=DockRightPanel
DockSiteType=1
PercentageSizes=1
Create=1
-Visible=0
+Visible=1
Docked=1
State=0
-Left=4
-Top=24
+Left=0
+Top=23
Width=2000
-Height=9148
+Height=2444
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=9148
-TBDockHeight=7164
+ClientHeight=2444
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@@ -688,13 +779,13 @@ Visible=0
Docked=1
State=0
Left=0
-Top=23
+Top=0
Width=1898
-Height=9170
+Height=7164
MaxLeft=-1
MaxTop=-1
-ClientWidth=1898
-ClientHeight=9170
+ClientWidth=1773
+ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@@ -704,22 +795,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
-HostDockSite=RightTabDock
+HostDockSite=DockRightPanel
DockSiteType=1
PercentageSizes=1
Create=1
-Visible=0
+Visible=1
Docked=1
State=0
Left=0
-Top=454
+Top=268
Width=2000
-Height=4339
+Height=5224
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=4339
-TBDockHeight=7164
+ClientHeight=5224
+TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
diff --git a/source/CEF4Delphi.identcache b/source/CEF4Delphi.identcache
index 00bd3928..48a21c26 100644
Binary files a/source/CEF4Delphi.identcache and b/source/CEF4Delphi.identcache differ
diff --git a/source/CEF4Delphi.stat b/source/CEF4Delphi.stat
index ce14e57b..713743de 100644
--- a/source/CEF4Delphi.stat
+++ b/source/CEF4Delphi.stat
@@ -1,9 +1,9 @@
[Stats]
-EditorSecs=112337
+EditorSecs=138579
DesignerSecs=97
InspectorSecs=324
-CompileSecs=3145294
-OtherSecs=12000
+CompileSecs=4032654
+OtherSecs=14027
StartTime=22/01/2017 10:49:52
RealKeys=0
EffectiveKeys=0
diff --git a/source/uCEFChromium.pas b/source/uCEFChromium.pas
index 1cd9a150..9a82bfe3 100644
--- a/source/uCEFChromium.pas
+++ b/source/uCEFChromium.pas
@@ -48,57 +48,62 @@ interface
uses
{$IFDEF DELPHI16_UP}
- WinApi.Windows, WinApi.Messages, System.Classes, Vcl.Controls, Vcl.Graphics, Vcl.Forms,
+ WinApi.Windows, WinApi.Messages, System.Classes, Vcl.Controls, Vcl.Graphics, Vcl.Forms, WinApi.ActiveX,
{$ELSE}
- Windows, Messages, Classes, Controls, Graphics, Forms,
+ Windows, Messages, Classes, Controls, Graphics, Forms, ActiveX,
{$ENDIF}
uCEFTypes, uCEFInterfaces, uCEFLibFunctions, uCEFMiscFunctions, uCEFClient,
uCEFPDFPrintCallback, uCEFStringVisitor, uCEFConstants, uCEFTask,
uCEFDeleteCookiesCallback, uCEFDomVisitor, uCEFChromiumEvents,
- uCEFChromiumOptions, uCEFChromiumFontOptions, uCEFPDFPrintOptions;
+ uCEFChromiumOptions, uCEFChromiumFontOptions, uCEFPDFPrintOptions,
+ uCEFDragAndDropMgr;
type
TChromium = class(TComponent, IChromiumEvents)
protected
- FCompHandle : HWND;
- FVisitor : ICefStringVisitor;
- FPDFPrintcb : ICefPdfPrintCallback;
- FCookiDeletercb : ICefDeleteCookiesCallback;
- FHandler : ICefClient;
- FBrowser : ICefBrowser;
- FBrowserId : Integer;
- FDefaultUrl : ustring;
- FOptions : TChromiumOptions;
- FFontOptions : TChromiumFontOptions;
- FPDFPrintOptions : TPDFPrintOptions;
- FDefaultEncoding : ustring;
- FProxyType : integer;
- FProxyServer : string;
- FProxyPort : integer;
- FProxyUsername : string;
- FProxyPassword : string;
- FProxyScriptURL : string;
- FProxyByPassList : string;
- FUpdatePreferences : boolean;
- FCustomHeaderName : string;
- FCustomHeaderValue : string;
- FAddCustomHeader : boolean;
- FDoNotTrack : boolean;
- FSendReferrer : boolean;
- FHyperlinkAuditing : boolean;
- FCookiePrefs : integer;
- FImagesPrefs : integer;
- FCMStoragePath : ustring;
- FZoomStep : byte;
- FWindowName : string;
- FPrefsFileName : string;
- FIsOSR : boolean;
- FInitialized : boolean;
- FClosing : boolean;
- FWindowInfo : TCefWindowInfo;
- FBrowserSettings : TCefBrowserSettings;
- FDevWindowInfo : TCefWindowInfo;
- FDevBrowserSettings : TCefBrowserSettings;
+ FCompHandle : HWND;
+ FVisitor : ICefStringVisitor;
+ FPDFPrintcb : ICefPdfPrintCallback;
+ FCookiDeletercb : ICefDeleteCookiesCallback;
+ FHandler : ICefClient;
+ FBrowser : ICefBrowser;
+ FBrowserId : Integer;
+ FDefaultUrl : ustring;
+ FOptions : TChromiumOptions;
+ FFontOptions : TChromiumFontOptions;
+ FPDFPrintOptions : TPDFPrintOptions;
+ FDefaultEncoding : ustring;
+ FProxyType : integer;
+ FProxyServer : string;
+ FProxyPort : integer;
+ FProxyUsername : string;
+ FProxyPassword : string;
+ FProxyScriptURL : string;
+ FProxyByPassList : string;
+ FUpdatePreferences : boolean;
+ FCustomHeaderName : string;
+ FCustomHeaderValue : string;
+ FAddCustomHeader : boolean;
+ FDoNotTrack : boolean;
+ FSendReferrer : boolean;
+ FHyperlinkAuditing : boolean;
+ FCookiePrefs : integer;
+ FImagesPrefs : integer;
+ FCMStoragePath : ustring;
+ FZoomStep : byte;
+ FWindowName : string;
+ FPrefsFileName : string;
+ FIsOSR : boolean;
+ FInitialized : boolean;
+ FClosing : boolean;
+ FWindowInfo : TCefWindowInfo;
+ FBrowserSettings : TCefBrowserSettings;
+ FDevWindowInfo : TCefWindowInfo;
+ FDevBrowserSettings : TCefBrowserSettings;
+ FDragOperations : TCefDragOperations;
+ FDragDropManager : TCEFDragAndDropMgr;
+ FDropTargetCtrl : TWinControl;
+ FDragAndDropInitialized : boolean;
// ICefClient
FOnProcessMessageReceived : TOnProcessMessageReceived;
@@ -270,9 +275,15 @@ type
procedure PrefsAvailableMsg(var aMessage : TMessage);
function GetParentForm : TCustomForm;
procedure ApplyZoomStep;
+ procedure DelayedDragging;
function SendCompMessage(aMsg : cardinal; wParam : cardinal = 0; lParam : integer = 0) : boolean;
+ procedure ToMouseEvent(grfKeyState : Longint; pt : TPoint; var aMouseEvent : TCefMouseEvent);
procedure WndProc(var aMessage: TMessage);
+ procedure DragDropManager_OnDragEnter(Sender: TObject; const aDragData : ICefDragData; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
+ procedure DragDropManager_OnDragOver(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
+ procedure DragDropManager_OnDragLeave(Sender: TObject);
+ procedure DragDropManager_OnDrop(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
// ICefClient
function doOnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const aMessage: ICefProcessMessage): Boolean; virtual;
@@ -378,6 +389,8 @@ type
procedure CloseBrowser(aForceClose : boolean);
function CreateBrowser(const aBrowserParent : TWinControl = nil; const aWindowName : string = '') : boolean; overload;
function CreateBrowser(aParentHandle : HWND; aParentRect : TRect; const aWindowName : string = '') : boolean; overload;
+ procedure InitializeDragAndDrop(const aDropTargetCtrl : TWinControl);
+ procedure ShutdownDragAndDrop;
// Internal procedures.
// Only tasks, visitors or callbacks should use them in the right thread/process.
@@ -450,6 +463,13 @@ type
procedure SetFocus(focus: Boolean);
procedure SetAccessibilityState(accessibilityState: TCefState);
+ procedure DragTargetDragEnter(const dragData: ICefDragData; const event: PCefMouseEvent; allowedOps: TCefDragOperations);
+ procedure DragTargetDragOver(const event: PCefMouseEvent; allowedOps: TCefDragOperations);
+ procedure DragTargetDragLeave;
+ procedure DragTargetDrop(event: PCefMouseEvent);
+ procedure DragSourceEndedAt(x, y: Integer; op: TCefDragOperation);
+ procedure DragSourceSystemDragEnded;
+
property DefaultUrl : ustring read FDefaultUrl write FDefaultUrl;
property Options : TChromiumOptions read FOptions write FOptions;
@@ -488,6 +508,7 @@ type
property SendReferrer : boolean read FSendReferrer write SetSendReferrer;
property HyperlinkAuditing : boolean read FHyperlinkAuditing write SetHyperlinkAuditing;
property HasValidMainFrame : boolean read GetHasValidMainFrame;
+ property DragOperations : TCefDragOperations read FDragOperations write FDragOperations;
property ProxyType : integer read FProxyType write SetProxyType;
property ProxyServer : string read FProxyServer write SetProxyServer;
@@ -609,45 +630,49 @@ uses
SysUtils, Math,
{$ENDIF}
uCEFBrowser, uCEFValue, uCEFDictionaryValue, uCEFStringMultimap, uCEFCookieManager, uCEFFrame,
- uCEFApplication, uCEFProcessMessage;
+ uCEFApplication, uCEFProcessMessage, uOLEDragAndDrop;
constructor TChromium.Create(AOwner: TComponent);
begin
- FBrowser := nil;
- FBrowserId := 0;
- FCompHandle := 0;
- FClosing := False;
- FInitialized := False;
- FIsOSR := False;
- FDefaultUrl := 'about:blank';
- FHandler := nil;
- FOptions := nil;
- FFontOptions := nil;
- FDefaultEncoding := '';
- FVisitor := nil;
- FPDFPrintcb := nil;
- FCookiDeletercb := nil;
- FPDFPrintOptions := nil;
- FUpdatePreferences := False;
- FCustomHeaderName := '';
- FCustomHeaderValue := '';
- FPrefsFileName := '';
- FAddCustomHeader := False;
- FDoNotTrack := True;
- FSendReferrer := True;
- FHyperlinkAuditing := False;
- FCookiePrefs := CEF_CONTENT_SETTING_ALLOW;
- FImagesPrefs := CEF_CONTENT_SETTING_ALLOW;
- FZoomStep := ZOOM_STEP_DEF;
- FWindowName := '';
+ FBrowser := nil;
+ FBrowserId := 0;
+ FCompHandle := 0;
+ FClosing := False;
+ FInitialized := False;
+ FIsOSR := False;
+ FDefaultUrl := 'about:blank';
+ FHandler := nil;
+ FOptions := nil;
+ FFontOptions := nil;
+ FDefaultEncoding := '';
+ FVisitor := nil;
+ FPDFPrintcb := nil;
+ FCookiDeletercb := nil;
+ FPDFPrintOptions := nil;
+ FUpdatePreferences := False;
+ FCustomHeaderName := '';
+ FCustomHeaderValue := '';
+ FPrefsFileName := '';
+ FAddCustomHeader := False;
+ FDoNotTrack := True;
+ FSendReferrer := True;
+ FHyperlinkAuditing := False;
+ FCookiePrefs := CEF_CONTENT_SETTING_ALLOW;
+ FImagesPrefs := CEF_CONTENT_SETTING_ALLOW;
+ FZoomStep := ZOOM_STEP_DEF;
+ FWindowName := '';
+ FDragOperations := DRAG_OPERATION_NONE;
+ FDragDropManager := nil;
+ FDropTargetCtrl := nil;
+ FDragAndDropInitialized := False;
- FProxyType := CEF_PROXYTYPE_DIRECT;
- FProxyServer := '';
- FProxyPort := 80;
- FProxyUsername := '';
- FProxyPassword := '';
- FProxyScriptURL := '';
- FProxyByPassList := '';
+ FProxyType := CEF_PROXYTYPE_DIRECT;
+ FProxyServer := '';
+ FProxyPort := 80;
+ FProxyUsername := '';
+ FProxyPassword := '';
+ FProxyScriptURL := '';
+ FProxyByPassList := '';
FillChar(FWindowInfo, SizeOf(TCefWindowInfo), 0);
FillChar(FDevWindowInfo, SizeOf(TCefWindowInfo), 0);
@@ -664,6 +689,8 @@ destructor TChromium.Destroy;
begin
try
try
+ if (FDragDropManager <> nil) then FreeAndNil(FDragDropManager);
+
if (FCompHandle <> 0) then
begin
DeallocateHWnd(FCompHandle);
@@ -898,6 +925,91 @@ begin
end;
end;
+procedure TChromium.InitializeDragAndDrop(const aDropTargetCtrl : TWinControl);
+var
+ TempDropTarget : IDropTarget;
+begin
+ if FIsOSR and (FDragDropManager = nil) and (aDropTargetCtrl <> nil) then
+ begin
+ FDropTargetCtrl := aDropTargetCtrl;
+
+ FDragDropManager := TCEFDragAndDropMgr.Create;
+ FDragDropManager.OnDragEnter := DragDropManager_OnDragEnter;
+ FDragDropManager.OnDragOver := DragDropManager_OnDragOver;
+ FDragDropManager.OnDragLeave := DragDropManager_OnDragLeave;
+ FDragDropManager.OnDrop := DragDropManager_OnDrop;
+
+ TempDropTarget := TOLEDropTarget.Create(FDragDropManager);
+
+ RegisterDragDrop(FDropTargetCtrl.Handle, TempDropTarget);
+
+ FDragAndDropInitialized := True;
+ end;
+end;
+
+procedure TChromium.ShutdownDragAndDrop;
+begin
+ if FDragAndDropInitialized and (FDropTargetCtrl <> nil) then
+ RevokeDragDrop(FDropTargetCtrl.Handle);
+end;
+
+procedure TChromium.ToMouseEvent(grfKeyState : Longint; pt : TPoint; var aMouseEvent : TCefMouseEvent);
+begin
+ if (FDropTargetCtrl <> nil) then
+ begin
+ pt := FDropTargetCtrl.ScreenToClient(pt);
+ aMouseEvent.x := pt.x;
+ aMouseEvent.y := pt.y;
+ aMouseEvent.modifiers := GetCefMouseModifiers(grfKeyState);
+ end;
+end;
+
+procedure TChromium.DragDropManager_OnDragEnter(Sender: TObject; const aDragData : ICefDragData; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
+var
+ TempMouseEvent : TCefMouseEvent;
+ TempAllowedOps : TCefDragOperations;
+begin
+ ToMouseEvent(grfKeyState, pt, TempMouseEvent);
+ DropEffectToDragOperation(dwEffect, TempAllowedOps);
+
+ DragTargetDragEnter(aDragData, @TempMouseEvent, TempAllowedOps);
+ DragTargetDragOver(@TempMouseEvent, TempAllowedOps);
+
+ DragOperationToDropEffect(FDragOperations, dwEffect);
+end;
+
+procedure TChromium.DragDropManager_OnDragOver(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
+var
+
TempMouseEvent : TCefMouseEvent;
+ TempAllowedOps : TCefDragOperations;
+
begin
+
ToMouseEvent(grfKeyState, pt, TempMouseEvent);
+ DropEffectToDragOperation(dwEffect, TempAllowedOps);
+
+ DragTargetDragOver(@TempMouseEvent, TempAllowedOps);
+
+ DragOperationToDropEffect(FDragOperations, dwEffect);
+end;
+
+procedure TChromium.DragDropManager_OnDragLeave(Sender: TObject);
+begin
+
DragTargetDragLeave;
+end;
+
+procedure TChromium.DragDropManager_OnDrop(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
+var
+
TempMouseEvent : TCefMouseEvent;
+ TempAllowedOps : TCefDragOperations;
+
begin
+
ToMouseEvent(grfKeyState, pt, TempMouseEvent);
+ DropEffectToDragOperation(dwEffect, TempAllowedOps);
+
+ DragTargetDragOver(@TempMouseEvent, TempAllowedOps);
+ DragTargetDrop(@TempMouseEvent);
+
+ DragOperationToDropEffect(FDragOperations, dwEffect);
+end;
+
procedure TChromium.CloseBrowser(aForceClose : boolean);
begin
if Initialized then FBrowser.Host.CloseBrowser(aForceClose);
@@ -1615,7 +1727,7 @@ begin
begin
TempEvent.x := 0;
TempEvent.y := 0;
- TempEvent.modifiers := [];
+ TempEvent.modifiers := EVENTFLAG_NONE;
FBrowser.Host.SendMouseWheelEvent(@TempEvent, aDeltaX, aDeltaY);
end;
end;
@@ -2133,6 +2245,7 @@ procedure TChromium.WndProc(var aMessage: TMessage);
begin
case aMessage.Msg of
CEF_PREFERENCES_SAVED : PrefsAvailableMsg(aMessage);
+ CEF_STARTDRAGGING : DelayedDragging;
else aMessage.Result := DefWindowProc(FCompHandle, aMessage.Msg, aMessage.WParam, aMessage.LParam);
end;
@@ -2687,9 +2800,35 @@ function TChromium.doOnStartDragging(const browser : ICefBrowser;
begin
Result := False;
+ if FDragAndDropInitialized and
+ FDragDropManager.CloneDragData(dragData, allowedOps) then
+ begin
+ Result := True;
+ SendCompMessage(CEF_STARTDRAGGING);
+ end;
+
if Assigned(FOnStartDragging) then FOnStartDragging(Self, browser, dragData, allowedOps, x, y, Result);
end;
+procedure TChromium.DelayedDragging;
+var
+ TempOperation : TCefDragOperation;
+ TempPoint : TPoint;
+begin
+ if FDragAndDropInitialized then
+ begin
+ FDragOperations := DRAG_OPERATION_NONE;
+ TempOperation := FDragDropManager.StartDragging;
+ FDragOperations := DRAG_OPERATION_NONE;
+
+ GetCursorPos(TempPoint);
+ TempPoint := FDropTargetCtrl.ScreenToClient(TempPoint);
+
+ DragSourceEndedAt(TempPoint.x, TempPoint.y, TempOperation);
+ DragSourceSystemDragEnded;
+ end;
+end;
+
procedure TChromium.doOnStatusMessage(const browser: ICefBrowser; const value: ustring);
begin
if Assigned(FOnStatusMessage) then FOnStatusMessage(Self, browser, value);
@@ -2714,6 +2853,8 @@ end;
procedure TChromium.doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation);
begin
+ if FDragAndDropInitialized then FDragOperations := operation;
+
if Assigned(FOnUpdateDragCursor) then FOnUpdateDragCursor(Self, browser, operation);
end;
@@ -2893,4 +3034,34 @@ begin
Result := Initialized and FBrowser.SendProcessMessage(targetProcess, ProcMessage);
end;
+procedure TChromium.DragTargetDragEnter(const dragData: ICefDragData; const event: PCefMouseEvent; allowedOps: TCefDragOperations);
+begin
+ if Initialized then FBrowser.Host.DragTargetDragEnter(dragData, event, allowedOps);
+end;
+
+procedure TChromium.DragTargetDragOver(const event: PCefMouseEvent; allowedOps: TCefDragOperations);
+begin
+ if Initialized then FBrowser.Host.DragTargetDragOver(event, allowedOps);
+end;
+
+procedure TChromium.DragTargetDragLeave;
+begin
+ if Initialized then FBrowser.Host.DragTargetDragLeave;
+end;
+
+procedure TChromium.DragTargetDrop(event: PCefMouseEvent);
+begin
+ if Initialized then FBrowser.Host.DragTargetDrop(event);
+end;
+
+procedure TChromium.DragSourceEndedAt(x, y: Integer; op: TCefDragOperation);
+begin
+ if Initialized then FBrowser.Host.DragSourceEndedAt(x, y, op);
+end;
+
+procedure TChromium.DragSourceSystemDragEnded;
+begin
+ if Initialized then FBrowser.Host.DragSourceSystemDragEnded;
+end;
+
end.
diff --git a/source/uCEFConstants.pas b/source/uCEFConstants.pas
index 67da8e8a..c02b2f14 100644
--- a/source/uCEFConstants.pas
+++ b/source/uCEFConstants.pas
@@ -134,9 +134,17 @@ const
CERT_STATUS_FIRST_ERROR = CERT_STATUS_COMMON_NAME_INVALID;
CERT_STATUS_LAST_ERROR = CERT_STATUS_VALIDITY_TOO_LONG;
+ // /include/internal/cef_types.h (cef_v8_accesscontrol_t)
+ V8_ACCESS_CONTROL_DEFAULT = 0;
+ V8_ACCESS_CONTROL_ALL_CAN_READ = 1 shl 0;
+ V8_ACCESS_CONTROL_ALL_CAN_WRITE = 1 shl 1;
+ V8_ACCESS_CONTROL_PROHIBITS_OVERWRITING = 1 shl 2;
// /include/internal/cef_types.h (cef_v8_propertyattribute_t)
- V8_PROPERTY_ATTRIBUTE_NONE = [];
+ V8_PROPERTY_ATTRIBUTE_NONE = 0;
+ V8_PROPERTY_ATTRIBUTE_READONLY = 1 shl 0;
+ V8_PROPERTY_ATTRIBUTE_DONTENUM = 1 shl 1;
+ V8_PROPERTY_ATTRIBUTE_DONTDELETE = 1 shl 2;
// /include/internal/cef_types.h (cef_transition_type_t)
TT_LINK = 0;
@@ -145,7 +153,7 @@ const
TT_MANUAL_SUBFRAME = 4;
TT_FORM_SUBMIT = 7;
TT_RELOAD = 8;
- TT_SOURCE_MASK = $FF;
+ TT_SOURCE_MASK = $000000FF;
TT_BLOCKED_FLAG = $00800000;
TT_FORWARD_BACK_FLAG = $01000000;
TT_CHAIN_START_FLAG = $10000000;
@@ -155,27 +163,60 @@ const
TT_IS_REDIRECT_MASK = $C0000000;
TT_QUALIFIER_MASK = $FFFFFF00;
+ // /include/internal/cef_types.h (cef_urlrequest_flags_t)
+ UR_FLAG_NONE = 0;
+ UR_FLAG_SKIP_CACHE = 1 shl 0;
+ UR_FLAG_ALLOW_CACHED_CREDENTIALS = 1 shl 1;
+ UR_FLAG_REPORT_UPLOAD_PROGRESS = 1 shl 3;
+ UR_FLAG_NO_DOWNLOAD_DATA = 1 shl 6;
+ UR_FLAG_NO_RETRY_ON_5XX = 1 shl 7;
+
// /include/internal/cef_types.h (cef_dom_event_category_t)
- DOM_EVENT_CATEGORY_UNKNOWN = $0;
- DOM_EVENT_CATEGORY_UI = $1;
- DOM_EVENT_CATEGORY_MOUSE = $2;
- DOM_EVENT_CATEGORY_MUTATION = $4;
- DOM_EVENT_CATEGORY_KEYBOARD = $8;
- DOM_EVENT_CATEGORY_TEXT = $10;
- DOM_EVENT_CATEGORY_COMPOSITION = $20;
- DOM_EVENT_CATEGORY_DRAG = $40;
- DOM_EVENT_CATEGORY_CLIPBOARD = $80;
- DOM_EVENT_CATEGORY_MESSAGE = $100;
- DOM_EVENT_CATEGORY_WHEEL = $200;
- DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED = $400;
- DOM_EVENT_CATEGORY_OVERFLOW = $800;
- DOM_EVENT_CATEGORY_PAGE_TRANSITION = $1000;
- DOM_EVENT_CATEGORY_POPSTATE = $2000;
- DOM_EVENT_CATEGORY_PROGRESS = $4000;
- DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS = $8000;
+ DOM_EVENT_CATEGORY_UNKNOWN = 0;
+ DOM_EVENT_CATEGORY_UI = 1 shl 0;
+ DOM_EVENT_CATEGORY_MOUSE = 1 shl 1;
+ DOM_EVENT_CATEGORY_MUTATION = 1 shl 2;
+ DOM_EVENT_CATEGORY_KEYBOARD = 1 shl 3;
+ DOM_EVENT_CATEGORY_TEXT = 1 shl 4;
+ DOM_EVENT_CATEGORY_COMPOSITION = 1 shl 5;
+ DOM_EVENT_CATEGORY_DRAG = 1 shl 6;
+ DOM_EVENT_CATEGORY_CLIPBOARD = 1 shl 7;
+ DOM_EVENT_CATEGORY_MESSAGE = 1 shl 8;
+ DOM_EVENT_CATEGORY_WHEEL = 1 shl 9;
+ DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED = 1 shl 10;
+ DOM_EVENT_CATEGORY_OVERFLOW = 1 shl 11;
+ DOM_EVENT_CATEGORY_PAGE_TRANSITION = 1 shl 12;
+ DOM_EVENT_CATEGORY_POPSTATE = 1 shl 13;
+ DOM_EVENT_CATEGORY_PROGRESS = 1 shl 14;
+ DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS = 1 shl 15;
+
+ // /include/internal/cef_types.h (cef_event_flags_t)
+ EVENTFLAG_NONE = 0;
+ EVENTFLAG_CAPS_LOCK_ON = 1 shl 0;
+ EVENTFLAG_SHIFT_DOWN = 1 shl 1;
+ EVENTFLAG_CONTROL_DOWN = 1 shl 2;
+ EVENTFLAG_ALT_DOWN = 1 shl 3;
+ EVENTFLAG_LEFT_MOUSE_BUTTON = 1 shl 4;
+ EVENTFLAG_MIDDLE_MOUSE_BUTTON = 1 shl 5;
+ EVENTFLAG_RIGHT_MOUSE_BUTTON = 1 shl 6;
+ EVENTFLAG_COMMAND_DOWN = 1 shl 7;
+ EVENTFLAG_NUM_LOCK_ON = 1 shl 8;
+ EVENTFLAG_IS_KEY_PAD = 1 shl 9;
+ EVENTFLAG_IS_LEFT = 1 shl 10;
+ EVENTFLAG_IS_RIGHT = 1 shl 11;
+
+ // /include/internal/cef_types.h (cef_drag_operations_mask_t)
+ DRAG_OPERATION_NONE = 0;
+ DRAG_OPERATION_COPY = 1 shl 0;
+ DRAG_OPERATION_LINK = 1 shl 1;
+ DRAG_OPERATION_GENERIC = 1 shl 2;
+ DRAG_OPERATION_PRIVATE = 1 shl 3;
+ DRAG_OPERATION_MOVE = 1 shl 4;
+ DRAG_OPERATION_DELETE = 1 shl 5;
+ DRAG_OPERATION_EVERY = $FFFFFFFF;
// /include/internal/cef_types.h (cef_file_dialog_mode_t)
- FILE_DIALOG_TYPE_MASK = $FF;
+ FILE_DIALOG_TYPE_MASK = $000000FF;
FILE_DIALOG_OVERWRITEPROMPT_FLAG = $01000000;
FILE_DIALOG_HIDEREADONLY_FLAG = $02000000;
@@ -217,6 +258,39 @@ const
MENU_ID_USER_FIRST = 26500;
MENU_ID_USER_LAST = 28500;
+ // /include/internal/cef_types.h (cef_context_menu_type_flags_t)
+ CM_TYPEFLAG_NONE = 0;
+ CM_TYPEFLAG_PAGE = 1 shl 0;
+ CM_TYPEFLAG_FRAME = 1 shl 1;
+ CM_TYPEFLAG_LINK = 1 shl 2;
+ CM_TYPEFLAG_MEDIA = 1 shl 3;
+ CM_TYPEFLAG_SELECTION = 1 shl 4;
+ CM_TYPEFLAG_EDITABLE = 1 shl 5;
+
+ // /include/internal/cef_types.h (cef_context_menu_media_state_flags_t)
+ CM_MEDIAFLAG_NONE = 0;
+ CM_MEDIAFLAG_ERROR = 1 shl 0;
+ CM_MEDIAFLAG_PAUSED = 1 shl 1;
+ CM_MEDIAFLAG_MUTED = 1 shl 2;
+ CM_MEDIAFLAG_LOOP = 1 shl 3;
+ CM_MEDIAFLAG_CAN_SAVE = 1 shl 4;
+ CM_MEDIAFLAG_HAS_AUDIO = 1 shl 5;
+ CM_MEDIAFLAG_HAS_VIDEO = 1 shl 6;
+ CM_MEDIAFLAG_CONTROL_ROOT_ELEMENT = 1 shl 7;
+ CM_MEDIAFLAG_CAN_PRINT = 1 shl 8;
+ CM_MEDIAFLAG_CAN_ROTATE = 1 shl 9;
+
+ // /include/internal/cef_types.h (cef_context_menu_edit_state_flags_t)
+ CM_EDITFLAG_NONE = 0;
+ CM_EDITFLAG_CAN_UNDO = 1 shl 0;
+ CM_EDITFLAG_CAN_REDO = 1 shl 1;
+ CM_EDITFLAG_CAN_CUT = 1 shl 2;
+ CM_EDITFLAG_CAN_COPY = 1 shl 3;
+ CM_EDITFLAG_CAN_PASTE = 1 shl 4;
+ CM_EDITFLAG_CAN_DELETE = 1 shl 5;
+ CM_EDITFLAG_CAN_SELECT_ALL = 1 shl 6;
+ CM_EDITFLAG_CAN_TRANSLATE = 1 shl 7;
+
// /include/internal/cef_types.h (cef_ssl_version_t)
SSL_CONNECTION_VERSION_UNKNOWN = 0;
SSL_CONNECTION_VERSION_SSL2 = 1;
@@ -226,6 +300,18 @@ const
SSL_CONNECTION_VERSION_TLS1_2 = 5;
SSL_CONNECTION_VERSION_QUIC = 7;
+ // /include/internal/cef_types.h (cef_ssl_content_status_t)
+ SSL_CONTENT_NORMAL_CONTENT = 0;
+ SSL_CONTENT_DISPLAYED_INSECURE_CONTENT = 1 shl 0;
+ SSL_CONTENT_RAN_INSECURE_CONTENT = 1 shl 1;
+
+ // /include/internal/cef_types.h (cef_json_writer_options_t)
+ JSON_WRITER_DEFAULT = 0;
+ JSON_WRITER_OMIT_BINARY_VALUES = 1 shl 0;
+ JSON_WRITER_OMIT_DOUBLE_TYPE_PRESERVATION = 1 shl 1;
+ JSON_WRITER_PRETTY_PRINT = 1 shl 2;
+
+
//******************************************************
//****************** OTHER CONSTANTS *******************
//******************************************************
@@ -272,6 +358,7 @@ const
CEF_PREFERENCES_SAVED = WM_APP + $A00;
CEF_DOONCLOSE = WM_APP + $A01;
+ CEF_STARTDRAGGING = WM_APP + $A02;
CEF_USER_TIMER_MINIMUM = $0000000A;
CEF_USER_TIMER_MAXIMUM = $7FFFFFFF;
diff --git a/source/uCEFContextMenuParams.pas b/source/uCEFContextMenuParams.pas
index 7440989a..a59a8a60 100644
--- a/source/uCEFContextMenuParams.pas
+++ b/source/uCEFContextMenuParams.pas
@@ -112,7 +112,7 @@ end;
function TCefContextMenuParamsRef.GetEditStateFlags: TCefContextMenuEditStateFlags;
begin
- Byte(Result) := PCefContextMenuParams(FData).get_edit_state_flags(PCefContextMenuParams(FData));
+ Result := PCefContextMenuParams(FData).get_edit_state_flags(PCefContextMenuParams(FData));
end;
function TCefContextMenuParamsRef.GetFrameCharset: ustring;
@@ -132,7 +132,7 @@ end;
function TCefContextMenuParamsRef.GetMediaStateFlags: TCefContextMenuMediaStateFlags;
begin
- Word(Result) := PCefContextMenuParams(FData).get_media_state_flags(PCefContextMenuParams(FData));
+ Result := PCefContextMenuParams(FData).get_media_state_flags(PCefContextMenuParams(FData));
end;
function TCefContextMenuParamsRef.GetMediaType: TCefContextMenuMediaType;
@@ -167,7 +167,7 @@ end;
function TCefContextMenuParamsRef.GetTypeFlags: TCefContextMenuTypeFlags;
begin
- Byte(Result) := PCefContextMenuParams(FData).get_type_flags(PCefContextMenuParams(FData));
+ Result := PCefContextMenuParams(FData).get_type_flags(PCefContextMenuParams(FData));
end;
function TCefContextMenuParamsRef.GetUnfilteredLinkUrl: ustring;
diff --git a/source/uCEFDomVisitor.pas b/source/uCEFDomVisitor.pas
index 2b62444a..254b1da4 100644
--- a/source/uCEFDomVisitor.pas
+++ b/source/uCEFDomVisitor.pas
@@ -60,7 +60,7 @@ type
TCefFastDomVisitor = class(TCefDomVisitorOwn)
protected
- FProc: TCefDomVisitorProc;
+ FProc : TCefDomVisitorProc;
procedure visit(const document: ICefDomDocument); override;
@@ -68,6 +68,18 @@ type
constructor Create(const proc: TCefDomVisitorProc); reintroduce; virtual;
end;
+ TCefFastDomVisitor2 = class(TCefDomVisitorOwn)
+ protected
+ FProc : TCefDomVisitorProc2;
+ FBrowser : ICefBrowser;
+
+ procedure visit(const document: ICefDomDocument); override;
+
+ public
+ constructor Create(const browser: ICefBrowser; const proc: TCefDomVisitorProc2); reintroduce; virtual;
+ destructor Destroy; override;
+ end;
+
implementation
uses
@@ -97,6 +109,7 @@ end;
constructor TCefFastDomVisitor.Create(const proc: TCefDomVisitorProc);
begin
inherited Create;
+
FProc := proc;
end;
@@ -105,4 +118,27 @@ begin
FProc(document);
end;
+
+// TCefFastDomVisitor2
+
+constructor TCefFastDomVisitor2.Create(const browser: ICefBrowser; const proc: TCefDomVisitorProc2);
+begin
+ inherited Create;
+
+ FBrowser := browser;
+ FProc := proc;
+end;
+
+destructor TCefFastDomVisitor2.Destroy;
+begin
+ FBrowser := nil;
+
+ inherited Destroy;
+end;
+
+procedure TCefFastDomVisitor2.visit(const document: ICefDomDocument);
+begin
+ FProc(FBrowser, document);
+end;
+
end.
diff --git a/source/uCEFDragAndDropMgr.pas b/source/uCEFDragAndDropMgr.pas
new file mode 100644
index 00000000..c5a02941
--- /dev/null
+++ b/source/uCEFDragAndDropMgr.pas
@@ -0,0 +1,777 @@
+// ************************************************************************
+// ***************************** CEF4Delphi *******************************
+// ************************************************************************
+//
+// CEF4Delphi is based on DCEF3 which uses CEF3 to embed a chromium-based
+// browser in Delphi applications.
+//
+// The original license of DCEF3 still applies to CEF4Delphi.
+//
+// For more information about CEF4Delphi visit :
+// https://www.briskbard.com/index.php?lang=en&pageid=cef
+//
+// Copyright © 2017 Salvador Díaz Fau. All rights reserved.
+//
+// ************************************************************************
+// ************ vvvv Original license and comments below vvvv *************
+// ************************************************************************
+(*
+ * Delphi Chromium Embedded 3
+ *
+ * Usage allowed under the restrictions of the Lesser GNU General Public License
+ * or alternatively the restrictions of the Mozilla Public License 1.1
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
+ * the specific language governing rights and limitations under the License.
+ *
+ * Unit owner : Henri Gourvest
+ * Web site : http://www.progdigy.com
+ * Repository : http://code.google.com/p/delphichromiumembedded/
+ * Group : http://groups.google.com/group/delphichromiumembedded
+ *
+ * Embarcadero Technologies, Inc is not permitted to use or redistribute
+ * this source code without explicit permission.
+ *
+ *)
+
+unit uCEFDragAndDropMgr;
+
+{$I cef.inc}
+
+interface
+
+uses
+ {$IFDEF DELPHI16_UP}
+ WinApi.Windows, System.Classes, Vcl.Controls, System.SysUtils, System.Math,
+ WinApi.ActiveX, WinApi.ShlObj, WinApi.ShellApi, System.StrUtils, System.AnsiStrings,
+ {$ELSE}
+ Windows, Classes, Controls, SysUtils, Math,
+ ActiveX, ShlObj, Shellapi, StrUtils, AnsiStrings,
+ {$ENDIF}
+ uCEFDragData, uCEFInterfaces, uCEFTypes, uOLEDragAndDrop;
+
+type
+ TDragEnterEvent = procedure(Sender: TObject; const aDragData : ICefDragData; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint) of object;
+ TDragOverEvent = procedure(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint) of object;
+ TDropEvent = procedure(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint) of object;
+
+ TCEFDragAndDropMgr = class(TOLEDragAndDropMgr)
+ protected
+ FCurrentDragData : ICefDragData;
+ FOLEEffect : integer;
+ FMozURLFormat : cardinal;
+ FHTMLFormat : cardinal;
+ FFileDescFormat : cardinal;
+ FFileContentsFormat : cardinal;
+
+ FOnDragEnter : TDragEnterEvent;
+ FOnDragOver : TDragOverEvent;
+ FOnDragLeave : TNotifyEvent;
+ FOnDrop : TDropEvent;
+
+ function DragDataToDataObject_Unicode(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
+ function DragDataToDataObject_Text(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
+ function DragDataToDataObject_HTML(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
+ function DragDataToDataObject_URL(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
+ function DragDataToDataObject_FileDesc(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
+ function DragDataToDataObject_FileContents(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
+
+ procedure DataObjectToDragData(const aDataObject : IDataObject; var aDragData : ICefDragData);
+ function DataObjectToDragData_Unicode(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+ function DataObjectToDragData_Text(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+ function DataObjectToDragData_URL(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+ function DataObjectToDragData_HTML(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+ function DataObjectToDragData_FileDrop(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+
+ function HtmlToCFHtml(var aHTML, aBaseURL : ustring) : AnsiString;
+ procedure CFHtmlToHtml(const cf_html : AnsiString; var html, base_url : string);
+ function FindStringField(const aString, aFieldName : AnsiString; var aPos : integer) : string;
+
+ public
+ constructor Create;
+ destructor Destroy; override;
+ function StartDragging : TCefDragOperation;
+ function CloneDragData(const aDragData : ICefDragData; aAllowedOps : TCefDragOperations) : boolean;
+
+ function DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; override;
+ function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; override;
+ function DragLeave: HRESULT; override;
+ function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; override;
+
+ property OnDragEnter : TDragEnterEvent read FOnDragEnter write FOnDragEnter;
+ property OnDragOver : TDragOverEvent read FOnDragOver write FOnDragOver;
+ property OnDragLeave : TNotifyEvent read FOnDragLeave write FOnDragLeave;
+ property OnDrop : TDropEvent read FOnDrop write FOnDrop;
+ end;
+
+
+implementation
+
+uses
+ uCEFMiscFunctions, uCEFWriteHandler, uCEFStreamWriter, uCEFConstants;
+
+// *****************************************************
+// **************** TCEFDragAndDropMgr *****************
+// *****************************************************
+
+constructor TCEFDragAndDropMgr.Create;
+begin
+ inherited Create;
+
+ FOnDragEnter := nil;
+ FOnDragOver := nil;
+ FOnDragLeave := nil;
+ FOnDrop := nil;
+ FCurrentDragData := nil;
+
+ FMozURLFormat := RegisterClipboardFormat('text/x-moz-url');
+ FHTMLFormat := RegisterClipboardFormat('HTML Format');
+ FFileDescFormat := RegisterClipboardFormat(CFSTR_FILEDESCRIPTOR);
+ FFileContentsFormat := RegisterClipboardFormat(CFSTR_FILECONTENTS);
+end;
+
+destructor TCEFDragAndDropMgr.Destroy;
+begin
+ FCurrentDragData := nil;
+
+ inherited Destroy;
+end;
+
+function TCEFDragAndDropMgr.DragDataToDataObject_Unicode(const aDragData : ICefDragData;
+ var aFormat : TFormatEtc;
+ var aMedium : TStgMedium) : boolean;
+var
+ TempText : ustring;
+begin
+ Result := False;
+ TempText := aDragData.GetFragmentText;
+
+ if (length(TempText) > 0) then
+ begin
+ aFormat.ptd := nil;
+ aFormat.dwAspect := DVASPECT_CONTENT;
+ aFormat.lindex := -1;
+ aFormat.tymed := TYMED_HGLOBAL;
+ aFormat.cfFormat := CF_UNICODETEXT;
+
+ TempText := TempText + #0;
+ Result := GetStorageForString(aMedium, TempText);
+ end;
+end;
+
+function TCEFDragAndDropMgr.DragDataToDataObject_Text(const aDragData : ICefDragData;
+ var aFormat : TFormatEtc;
+ var aMedium : TStgMedium) : boolean;
+var
+ TempText : AnsiString;
+begin
+ Result := False;
+ TempText := UTF8Encode(aDragData.GetFragmentText);
+
+ if (length(TempText) > 0) then
+ begin
+ aFormat.ptd := nil;
+ aFormat.dwAspect := DVASPECT_CONTENT;
+ aFormat.lindex := -1;
+ aFormat.tymed := TYMED_HGLOBAL;
+ aFormat.cfFormat := CF_TEXT;
+
+ TempText := TempText + #0;
+ Result := GetStorageForString(aMedium, TempText);
+ end;
+end;
+
+function TCEFDragAndDropMgr.DragDataToDataObject_HTML(const aDragData : ICefDragData;
+ var aFormat : TFormatEtc;
+ var aMedium : TStgMedium) : boolean;
+var
+ TempBaseURL, TempHTML : ustring;
+ TempAnsi : AnsiString;
+begin
+ Result := False;
+ TempHTML := aDragData.GetFragmentHtml;
+
+ if (length(TempHTML) > 0) then
+ begin
+ aFormat.ptd := nil;
+ aFormat.dwAspect := DVASPECT_CONTENT;
+ aFormat.lindex := -1;
+ aFormat.tymed := TYMED_HGLOBAL;
+ aFormat.cfFormat := FHTMLFormat;
+
+ TempBaseURL := aDragData.GetFragmentBaseURL;
+ TempAnsi := HtmlToCFHtml(TempHTML, TempBaseURL) + #0;
+ Result := GetStorageForString(aMedium, TempAnsi);
+ end;
+end;
+
+function TCEFDragAndDropMgr.DragDataToDataObject_URL(const aDragData : ICefDragData;
+ var aFormat : TFormatEtc;
+ var aMedium : TStgMedium) : boolean;
+var
+ TempURL, TempTitle : ustring;
+begin
+ Result := False;
+
+ if aDragData.IsLink then
+ begin
+ TempURL := aDragData.GetLinkURL;
+ TempTitle := aDragData.GetLinkTitle;
+
+ if (length(TempURL) > 0) then
+ begin
+ aFormat.ptd := nil;
+ aFormat.dwAspect := DVASPECT_CONTENT;
+ aFormat.lindex := -1;
+ aFormat.tymed := TYMED_HGLOBAL;
+ aFormat.cfFormat := FMozURLFormat;
+
+ if (length(TempTitle) > 0) then
+ TempURL := TempURL + #13 + TempTitle;
+
+ TempURL := TempURL + #0;
+ Result := GetStorageForString(aMedium, TempURL);
+ end;
+ end;
+end;
+
+function TCEFDragAndDropMgr.DragDataToDataObject_FileDesc(const aDragData : ICefDragData;
+ var aFormat : TFormatEtc;
+ var aMedium : TStgMedium) : boolean;
+var
+ TempFileName : ustring;
+ TempSize : cardinal;
+begin
+ Result := False;
+
+ if aDragData.IsFile then
+ begin
+ TempSize := aDragData.GetFileContents(nil);
+ TempFileName := aDragData.GetFileName;
+
+ if (TempSize > 0) and (length(TempFileName) > 0) then
+ begin
+ aFormat.ptd := nil;
+ aFormat.dwAspect := DVASPECT_CONTENT;
+ aFormat.lindex := -1;
+ aFormat.tymed := TYMED_HGLOBAL;
+ aFormat.cfFormat := FFileDescFormat;
+
+ TempFileName := TempFileName + #0;
+ Result := GetStorageForFileDescriptor(aMedium, TempFileName);
+ end;
+ end;
+end;
+
+function TCEFDragAndDropMgr.DragDataToDataObject_FileContents(const aDragData : ICefDragData;
+ var aFormat : TFormatEtc;
+ var aMedium : TStgMedium) : boolean;
+var
+ TempHandler : ICefWriteHandler;
+ TempWriter : ICefStreamWriter;
+ TempSize : cardinal;
+begin
+ Result := False;
+
+ if aDragData.IsFile then
+ begin
+ TempSize := aDragData.GetFileContents(nil);
+
+ if (TempSize > 0) then
+ begin
+ aFormat.ptd := nil;
+ aFormat.dwAspect := DVASPECT_CONTENT;
+ aFormat.lindex := -1;
+ aFormat.tymed := TYMED_HGLOBAL;
+ aFormat.cfFormat := FFileContentsFormat;
+
+ TempHandler := TCefBytesWriteHandler.Create(TempSize);
+ TempWriter := TCefStreamWriterRef.CreateForHandler(TempHandler);
+
+ aDragData.GetFileContents(TempWriter);
+
+ TempSize := cardinal(TCefBytesWriteHandler(TempHandler).GetDataSize);
+ Result := GetStorageForBytes(aMedium, TCefBytesWriteHandler(TempHandler).GetData, TempSize);
+ end;
+ end;
+end;
+
+function TCEFDragAndDropMgr.HtmlToCFHtml(var aHTML, aBaseURL : ustring) : AnsiString;
+const
+ CRLF : AnsiString = #13+#10;
+ HTML_START_TAG : AnsiString = '';
+ HTML_END_TAG : AnsiString = '';
+ BODY_START_TAG : AnsiString = '';
+ BODY_END_TAG : AnsiString = '';
+ FRAGMENT_START : AnsiString = '';
+ FRAGMENT_END : AnsiString = '';
+ PATTERN1 : AnsiString = '<<<<<1';
+ PATTERN2 : AnsiString = '<<<<<2';
+ PATTERN3 : AnsiString = '<<<<<3';
+ PATTERN4 : AnsiString = '<<<<<4';
+var
+ TempString, TempDigits : AnsiString;
+ TempPos : integer;
+begin
+ if (length(aHTML) = 0) then
+ begin
+ Result := '';
+ exit;
+ end;
+
+ TempString := 'Version:0.9' + CRLF +
+ 'StartHTML:' + PATTERN1 + CRLF +
+ 'EndHTML:' + PATTERN2 + CRLF +
+ 'StartFragment:' + PATTERN3 + CRLF +
+ 'EndFragment:' + PATTERN4 + CRLF +
+ 'StartSelection:' + PATTERN3 + CRLF +
+ 'EndSelection:' + PATTERN4;
+
+ if (length(aBaseURL) > 0) then
+ TempString := TempString + CRLF + 'SourceURL:' + Utf8Encode(aBaseURL);
+
+ TempString := TempString + CRLF +
+ HTML_START_TAG + CRLF +
+ BODY_START_TAG + CRLF +
+ FRAGMENT_START + CRLF +
+ Utf8Encode(aHTML) + CRLF +
+ FRAGMENT_END + CRLF +
+ BODY_END_TAG + CRLF +
+ HTML_END_TAG;
+
+ TempPos := System.AnsiStrings.PosEx(HTML_START_TAG, TempString) + length(HTML_START_TAG);
+ FmtStr(TempDigits, '%.6d', [TempPos]);
+ TempString := System.AnsiStrings.StringReplace(TempString, PATTERN1, TempDigits, [rfReplaceAll]);
+
+ TempPos := System.AnsiStrings.PosEx(HTML_END_TAG, TempString);
+ FmtStr(TempDigits, '%.6d', [TempPos]);
+ TempString := System.AnsiStrings.StringReplace(TempString, PATTERN2, TempDigits, [rfReplaceAll]);
+
+ TempPos := System.AnsiStrings.PosEx(FRAGMENT_START, TempString) + length(FRAGMENT_START);
+ FmtStr(TempDigits, '%.6d', [TempPos]);
+ TempString := System.AnsiStrings.StringReplace(TempString, PATTERN3, TempDigits, [rfReplaceAll]);
+
+ TempPos := System.AnsiStrings.PosEx(FRAGMENT_END, TempString);
+ FmtStr(TempDigits, '%.6d', [TempPos]);
+ TempString := System.AnsiStrings.StringReplace(TempString, PATTERN4, TempDigits, [rfReplaceAll]);
+
+ Result := TempString;
+end;
+
+function TCEFDragAndDropMgr.FindStringField(const aString, aFieldName : AnsiString; var aPos : integer) : string;
+var
+ TempLen, i, TempValuePos : integer;
+ TempString : AnsiString;
+begin
+ aPos := pos(aFieldName, aString);
+ TempLen := length(aString);
+
+ if (aPos > 0) then
+ begin
+ TempValuePos := aPos + length(aFieldName);
+ i := TempValuePos;
+
+ while (i <= TempLen) and not(CharInSet(aString[i], [#13, #10])) do inc(i);
+
+ TempString := copy(aString, TempValuePos, i - TempValuePos);
+ if (length(TempString) > 0) then Result := UTF8ToString(TempString);
+ end
+ else
+ Result := '';
+end;
+
+procedure TCEFDragAndDropMgr.CFHtmlToHtml(const cf_html : AnsiString; var html, base_url : string);
+const
+ CFHTML_VERSION : AnsiString = 'Version:';
+ CFHTML_STARTHTML : AnsiString = 'StartHTML:';
+ CFHTML_ENDHTML : AnsiString = 'EndHTML:';
+ CFHTML_STARTFRAG : AnsiString = 'StartFragment:';
+ CFHTML_ENDFRAG : AnsiString = 'EndFragment:';
+ CFHTML_STARSEL : AnsiString = 'StartSelection:';
+ CFHTML_ENDSEL : AnsiString = 'EndSelection:';
+ CFHTML_SOURCEURL : AnsiString = 'SourceURL:';
+ FRAGMENT_START : AnsiString = '', cf_html, TempFragStartCommentPos + length(FRAGMENT_START));
+
+ if (TempFragStartCommentPos > 0) then
+ begin
+ TempFragStartCommentPos := TempFragStartCommentPos + 3;
+ TempFragEndCommentPos := System.AnsiStrings.PosEx(FRAGMENT_END, cf_html, TempFragStartCommentPos);
+ end
+ else
+ if (TempFragStart > 0) and
+ (TempFragEnd > 0) then
+ begin
+ TempFragStartCommentPos := TempFragStart;
+ TempFragEndCommentPos := TempFragEnd;
+ end
+ else
+ if (TempHTMLStart > 0) and
+ (TempHTMLEnd > 0) then
+ begin
+ TempFragStartCommentPos := TempHTMLStart;
+ TempFragEndCommentPos := TempHTMLEnd;
+ end
+ else
+ exit;
+
+ if (TempFragStartCommentPos > 0) and
+ (TempFragEndCommentPos > 0) and
+ (TempFragEndCommentPos > TempFragStartCommentPos) then
+ begin
+ html := UTF8ToString(copy(cf_html, TempFragStartCommentPos, TempFragEndCommentPos - TempFragStartCommentPos));
+ base_url := FindStringField(cf_html, CFHTML_SOURCEURL, TempSourcePos);
+ end;
+ end;
+end;
+
+function TCEFDragAndDropMgr.DataObjectToDragData_Unicode(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+var
+ TempText : string;
+ TempPointer : pointer;
+begin
+ Result := False;
+
+ if (aMedium.hGlobal <> 0) then
+ begin
+ TempPointer := GlobalLock(aMedium.hGlobal);
+
+ if (TempPointer <> nil) then
+ begin
+ TempText := PWideChar(TempPointer);
+ aDragData.SetFragmentText(TempText);
+ GlobalUnlock(aMedium.hGlobal);
+ Result := True;
+ end;
+
+ ReleaseStgMedium(aMedium);
+ end;
+end;
+
+function TCEFDragAndDropMgr.DataObjectToDragData_Text(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+var
+ TempText : string;
+ TempPointer : pointer;
+begin
+ Result := False;
+
+ if (aMedium.hGlobal <> 0) then
+ begin
+ TempPointer := GlobalLock(aMedium.hGlobal);
+
+ if (TempPointer <> nil) then
+ begin
+ TempText := UTF8ToString(PAnsiChar(TempPointer));
+ aDragData.SetFragmentText(TempText);
+ GlobalUnlock(aMedium.hGlobal);
+ Result := True;
+ end;
+
+ ReleaseStgMedium(aMedium);
+ end;
+end;
+
+function TCEFDragAndDropMgr.DataObjectToDragData_URL(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+var
+ TempText, TempURL, TempTitle : string;
+ TempPos : integer;
+ TempPointer : pointer;
+begin
+ Result := False;
+
+ if (aMedium.hGlobal <> 0) then
+ begin
+ TempPointer := GlobalLock(aMedium.hGlobal);
+
+ if (TempPointer <> nil) then
+ begin
+ TempText := PWideChar(TempPointer);
+ TempPos := LastDelimiter(#13, TempText);
+
+ if (TempPos > 0) then
+ begin
+ TempURL := copy(TempText, 1, pred(TempPos));
+ TempTitle := copy(TempText, succ(TempPos), length(TempText));
+ end
+ else
+ begin
+ TempURL := TempText;
+ TempTitle := TempText;
+ end;
+
+ aDragData.SetLinkURL(TempURL);
+ aDragData.SetLinkTitle(TempTitle);
+ GlobalUnlock(aMedium.hGlobal);
+ Result := True;
+ end;
+
+ ReleaseStgMedium(aMedium);
+ end;
+end;
+
+function TCEFDragAndDropMgr.DataObjectToDragData_HTML(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+var
+ TempAnsi : AnsiString;
+ TempHTML, TempBaseURL : string;
+ TempPointer : pointer;
+begin
+ Result := False;
+
+ if (aMedium.hGlobal <> 0) then
+ begin
+ TempPointer := GlobalLock(aMedium.hGlobal);
+
+ if (TempPointer <> nil) then
+ begin
+ TempAnsi := PAnsiChar(TempPointer);
+
+ CFHtmlToHtml(TempAnsi, TempHTML, TempBaseURL);
+
+ aDragData.SetFragmentHtml(TempHTML);
+ aDragData.SetFragmentBaseURL(TempBaseURL);
+ GlobalUnlock(aMedium.hGlobal);
+ Result := True;
+ end;
+
+ ReleaseStgMedium(aMedium);
+ end;
+end;
+
+function TCEFDragAndDropMgr.DataObjectToDragData_FileDrop(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
+var
+ TempHdrop : HDROP;
+ TempNumFiles, i, TempLen : integer;
+ TempText, TempFilePath, TempFileName : string;
+ TempPointer : pointer;
+ TempAdded : boolean;
+begin
+ Result := False;
+
+ if (aMedium.hGlobal <> 0) then
+ begin
+ TempPointer := GlobalLock(aMedium.hGlobal);
+
+ if (TempPointer <> nil) then
+ begin
+ TempHdrop := THandle(TempPointer);
+ TempNumFiles := DragQueryFile(TempHdrop, $FFFFFFFF, nil, 0);
+ TempAdded := False;
+ i := 0;
+
+ SetLength(TempText, succ(MAX_PATH));
+
+ while (i < TempNumFiles) do
+ begin
+ TempLen := DragQueryFile(TempHdrop, i, @TempText[1], succ(MAX_PATH));
+
+ if (TempLen > 0) then
+ begin
+ TempFilePath := copy(TempText, 1, TempLen);
+ TempFileName := ExtractFileName(TempFilePath);
+ TempAdded := True;
+
+ if (length(TempFileName) > 0) then
+ aDragData.AddFile(TempFilePath, TempFileName)
+ else
+ aDragData.AddFile(TempFilePath, TempFilePath);
+ end;
+
+ inc(i);
+ end;
+
+ GlobalUnlock(aMedium.hGlobal);
+ DragFinish(TempHdrop);
+ Result := TempAdded;
+ end;
+ end;
+end;
+
+procedure TCEFDragAndDropMgr.DataObjectToDragData(const aDataObject : IDataObject; var aDragData : ICefDragData);
+var
+ TempEnumFrmt : IEnumFormatEtc;
+ TempFormat : TFormatEtc;
+ TempMedium : TStgMedium;
+ TempUsed : boolean;
+begin
+ try
+ aDragData := TCefDragDataRef.New;
+
+ if (aDataObject <> nil) and (aDataObject.EnumFormatEtc(DATADIR_GET, TempEnumFrmt) = S_OK) then
+ begin
+ TempEnumFrmt.Reset;
+ TempUsed := False;
+
+ while (TempEnumFrmt.Next(1, TempFormat, nil) = S_OK) and not(TempUsed) do
+ begin
+ try
+ TempMedium.unkForRelease := nil;
+
+ if ((TempFormat.tymed and TYMED_HGLOBAL) <> 0) and
+ (aDataObject.GetData(TempFormat, TempMedium) = S_OK) then
+ begin
+ if (TempFormat.cfFormat = CF_UNICODETEXT) then TempUsed := DataObjectToDragData_Unicode(TempMedium, aDragData)
+ else if (TempFormat.cfFormat = CF_TEXT) then TempUsed := DataObjectToDragData_Text(TempMedium, aDragData)
+ else if (TempFormat.cfFormat = FMozURLFormat) then TempUsed := DataObjectToDragData_URL(TempMedium, aDragData)
+ else if (TempFormat.cfFormat = FHTMLFormat) then TempUsed := DataObjectToDragData_HTML(TempMedium, aDragData)
+ else if (TempFormat.cfFormat = CF_HDROP) then TempUsed := DataObjectToDragData_FileDrop(TempMedium, aDragData)
+ else ReleaseStgMedium(TempMedium);
+ end;
+ finally
+ if (TempFormat.ptd <> nil) then
+ begin
+ CoTaskMemFree(TempFormat.ptd);
+ TempFormat.ptd := nil;
+ end;
+ end;
+ end;
+ end;
+ except
+ on e : exception do
+ if CustomExceptionHandler('TCEFDragAndDropMgr.DataObjectToDragData', e) then raise;
+ end;
+end;
+
+function TCEFDragAndDropMgr.StartDragging : TCefDragOperation;
+var
+ TempDataObject : IDataObject;
+ TempDropSource : IDropSource;
+ TempResEffect : integer;
+ TempResult : HRESULT;
+ TempFormatArray : TOLEFormatArray;
+ TempMediumArray : TOLEMediumArray;
+ i : integer;
+begin
+ Result := DRAG_OPERATION_NONE;
+
+ if (FCurrentDragData <> nil) then
+ begin
+ i := 0;
+
+ if DragDataToDataObject_Unicode(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
+ if DragDataToDataObject_Text(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
+ if DragDataToDataObject_URL(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
+ if DragDataToDataObject_HTML(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
+ if DragDataToDataObject_FileDesc(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
+ if DragDataToDataObject_FileContents(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
+
+ if (i > 0) then
+ begin
+ TempResEffect := DROPEFFECT_NONE;
+ TempDataObject := TOLEDataObject.Create(TempFormatArray, TempMediumArray, i);
+ TempDropSource := TOLEDropSource.Create;
+ TempResult := DoDragDrop(TempDataObject, TempDropSource, FOLEEffect, TempResEffect);
+
+ if (TempResult <> DRAGDROP_S_DROP) then TempResEffect := DROPEFFECT_NONE;
+ FCurrentDragData := nil;
+
+ DropEffectToDragOperation(TempResEffect, Result);
+ end;
+ end;
+end;
+
+function TCEFDragAndDropMgr.CloneDragData(const aDragData : ICefDragData; aAllowedOps : TCefDragOperations) : boolean;
+begin
+ if (aDragData <> nil) and
+ ((length(aDragData.GetFragmentText) > 0) or
+ (length(aDragData.GetFragmentHTML) > 0) or
+ aDragData.IsLink or
+ aDragData.IsFile) then
+ begin
+ DragOperationToDropEffect(aAllowedOps, FOLEEffect);
+
+ FCurrentDragData := aDragData.Clone;
+ FCurrentDragData.ResetFileContents;
+
+ Result := True;
+ end
+ else
+ Result := False;
+end;
+
+function TCEFDragAndDropMgr.DragEnter(const dataObj : IDataObject;
+ grfKeyState : Longint;
+ pt : TPoint;
+ var dwEffect : Longint): HRESULT;
+var
+ TempDragData : ICefDragData;
+begin
+ if assigned(FOnDragEnter) then
+ begin
+ if (FCurrentDragData <> nil) then
+ TempDragData := FCurrentDragData
+ else
+ DataObjectToDragData(dataObj, TempDragData);
+
+ FOnDragEnter(self, TempDragData, grfKeyState, pt, dwEffect);
+ Result := S_OK;
+ end
+ else
+ Result := E_UNEXPECTED;
+end;
+
+function TCEFDragAndDropMgr.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult;
+begin
+ if assigned(FOnDragOver) then
+ begin
+ FOnDragOver(self, grfKeyState, pt, dwEffect);
+ Result := S_OK;
+ end
+ else
+ Result := E_UNEXPECTED;
+end;
+
+function TCEFDragAndDropMgr.DragLeave: HResult;
+begin
+ if assigned(FOnDragLeave) then
+ begin
+ FOnDragLeave(self);
+ Result := S_OK;
+ end
+ else
+ Result := E_UNEXPECTED;
+end;
+
+function TCEFDragAndDropMgr.Drop(const dataObj : IDataObject;
+ grfKeyState : Longint;
+ pt : TPoint;
+ var dwEffect : Longint): HResult;
+
+begin
+ if assigned(FOnDrop) then
+ begin
+ FOnDrop(self, grfKeyState, pt, dwEffect);
+ Result := S_OK;
+ end
+ else
+ Result := E_UNEXPECTED;
+end;
+
+end.
diff --git a/source/uCEFInterfaces.pas b/source/uCEFInterfaces.pas
index 804273f2..822e44bd 100644
--- a/source/uCEFInterfaces.pas
+++ b/source/uCEFInterfaces.pas
@@ -100,6 +100,7 @@ type
TOnPdfPrintFinishedProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const path: ustring; ok: Boolean);
TCefDomVisitorProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const document: ICefDomDocument);
+ TCefDomVisitorProc2 = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser : ICefBrowser; const document: ICefDomDocument);
TCefStringVisitorProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const str: ustring);
TOnRegisterCustomSchemes = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const registrar: TCefSchemeRegistrarRef) {$IFNDEF DELPHI12_UP}of object{$ENDIF};
diff --git a/source/uCEFMiscFunctions.pas b/source/uCEFMiscFunctions.pas
index 6117e9ab..72a3bd5d 100644
--- a/source/uCEFMiscFunctions.pas
+++ b/source/uCEFMiscFunctions.pas
@@ -48,9 +48,9 @@ interface
uses
{$IFDEF DELPHI16_UP}
- WinApi.Windows, System.Classes, System.SysUtils,
+ WinApi.Windows, System.Classes, System.SysUtils, System.UITypes, WinApi.ActiveX,
{$ELSE}
- Windows, Classes, SysUtils,
+ Windows, Classes, SysUtils, UITypes, ActiveX,
{$ENDIF}
uCEFTypes, uCEFInterfaces, uCEFLibFunctions, uCEFResourceHandler;
@@ -165,6 +165,15 @@ function CefDeleteFile(const path: ustring; recursive: Boolean): Boolean;
function CefZipDirectory(const srcDir, destFile: ustring; includeHiddenFiles: Boolean): Boolean;
procedure CefLoadCRLSetsFile(const path : ustring);
+function CefIsKeyDown(aWparam : WPARAM) : boolean;
+function CefIsKeyToggled(aWparam : WPARAM) : boolean;
+function GetCefMouseModifiers(awparam : WPARAM) : TCefEventFlags;
+function GetCefKeyboardModifiers(aWparam : WPARAM; aLparam : LPARAM) : TCefEventFlags;
+function GefCursorToWindowsCursor(aCefCursor : TCefCursorType) : TCursor;
+
+procedure DropEffectToDragOperation(aEffect : Longint; var aAllowedOps : TCefDragOperations);
+procedure DragOperationToDropEffect(const aDragOperations : TCefDragOperations; var aEffect: Longint);
+
implementation
uses
@@ -987,4 +996,156 @@ begin
cef_load_crlsets_file(@TempPath);
end;
+function CefIsKeyDown(aWparam : WPARAM) : boolean;
+begin
+ Result := (GetKeyState(aWparam) < 0);
+end;
+
+function CefIsKeyToggled(aWparam : WPARAM) : boolean;
+begin
+ Result := (GetKeyState(aWparam) and $1) <> 0;
+end;
+
+function GetCefMouseModifiers(aWparam : WPARAM) : TCefEventFlags;
+begin
+ Result := EVENTFLAG_NONE;
+
+ if ((aWparam and MK_CONTROL) <> 0) then Result := Result or EVENTFLAG_CONTROL_DOWN;
+ if ((aWparam and MK_SHIFT) <> 0) then Result := Result or EVENTFLAG_SHIFT_DOWN;
+ if ((aWparam and MK_LBUTTON) <> 0) then Result := Result or EVENTFLAG_LEFT_MOUSE_BUTTON;
+ if ((aWparam and MK_MBUTTON) <> 0) then Result := Result or EVENTFLAG_MIDDLE_MOUSE_BUTTON;
+ if ((aWparam and MK_RBUTTON) <> 0) then Result := Result or EVENTFLAG_RIGHT_MOUSE_BUTTON;
+ if CefIsKeyDown(VK_MENU) then Result := Result or EVENTFLAG_ALT_DOWN;
+ if CefIsKeyToggled(VK_NUMLOCK) then Result := Result or EVENTFLAG_NUM_LOCK_ON;
+ if CefIsKeyToggled(VK_CAPITAL) then Result := Result or EVENTFLAG_CAPS_LOCK_ON;
+end;
+
+function GetCefKeyboardModifiers(aWparam : WPARAM; aLparam : LPARAM) : TCefEventFlags;
+begin
+ Result := EVENTFLAG_NONE;
+
+ if CefIsKeyDown(VK_SHIFT) then Result := Result or EVENTFLAG_SHIFT_DOWN;
+ if CefIsKeyDown(VK_CONTROL) then Result := Result or EVENTFLAG_CONTROL_DOWN;
+ if CefIsKeyDown(VK_MENU) then Result := Result or EVENTFLAG_ALT_DOWN;
+ if CefIsKeyToggled(VK_NUMLOCK) then Result := Result or EVENTFLAG_NUM_LOCK_ON;
+ if CefIsKeyToggled(VK_CAPITAL) then Result := Result or EVENTFLAG_CAPS_LOCK_ON;
+
+
+ case aWparam of
+ VK_RETURN:
+ if (((aLparam shr 16) and KF_EXTENDED) <> 0) then Result := Result or EVENTFLAG_IS_KEY_PAD;
+
+ VK_INSERT,
+ VK_DELETE,
+ VK_HOME,
+ VK_END,
+ VK_PRIOR,
+ VK_NEXT,
+ VK_UP,
+ VK_DOWN,
+ VK_LEFT,
+ VK_RIGHT :
+ if (((aLparam shr 16) and KF_EXTENDED) = 0) then Result := Result or EVENTFLAG_IS_KEY_PAD;
+
+ VK_NUMLOCK,
+ VK_NUMPAD0,
+ VK_NUMPAD1,
+ VK_NUMPAD2,
+ VK_NUMPAD3,
+ VK_NUMPAD4,
+ VK_NUMPAD5,
+ VK_NUMPAD6,
+ VK_NUMPAD7,
+ VK_NUMPAD8,
+ VK_NUMPAD9,
+ VK_DIVIDE,
+ VK_MULTIPLY,
+ VK_SUBTRACT,
+ VK_ADD,
+ VK_DECIMAL,
+ VK_CLEAR :
+ Result := Result or EVENTFLAG_IS_KEY_PAD;
+
+ VK_SHIFT :
+ if CefIsKeyDown(VK_LSHIFT) then
+ Result := Result or EVENTFLAG_IS_LEFT
+ else
+ if CefIsKeyDown(VK_RSHIFT) then
+ Result := Result or EVENTFLAG_IS_RIGHT;
+
+ VK_CONTROL :
+ if CefIsKeyDown(VK_LCONTROL) then
+ Result := Result or EVENTFLAG_IS_LEFT
+ else
+ if CefIsKeyDown(VK_RCONTROL) then
+ Result := Result or EVENTFLAG_IS_RIGHT;
+
+ VK_MENU :
+ if CefIsKeyDown(VK_LMENU) then
+ Result := Result or EVENTFLAG_IS_LEFT
+ else
+ if CefIsKeyDown(VK_RMENU) then
+ Result := Result or EVENTFLAG_IS_RIGHT;
+
+ VK_LWIN :
+ Result := Result or EVENTFLAG_IS_LEFT;
+
+ VK_RWIN :
+ Result := Result or EVENTFLAG_IS_RIGHT;
+ end;
+end;
+
+function GefCursorToWindowsCursor(aCefCursor : TCefCursorType) : TCursor;
+begin
+ case aCefCursor of
+ CT_POINTER : Result := crArrow;
+ CT_CROSS : Result := crCross;
+ CT_HAND : Result := crHandPoint;
+ CT_IBEAM : Result := crIBeam;
+ CT_WAIT : Result := crHourGlass;
+ CT_HELP : Result := crHelp;
+ CT_EASTRESIZE : Result := crSizeWE;
+ CT_NORTHRESIZE : Result := crSizeNS;
+ CT_NORTHEASTRESIZE : Result := crSizeNESW;
+ CT_NORTHWESTRESIZE : Result := crSizeNWSE;
+ CT_SOUTHRESIZE : Result := crSizeNS;
+ CT_SOUTHEASTRESIZE : Result := crSizeNWSE;
+ CT_SOUTHWESTRESIZE : Result := crSizeNESW;
+ CT_WESTRESIZE : Result := crSizeWE;
+ CT_NORTHSOUTHRESIZE : Result := crSizeNS;
+ CT_EASTWESTRESIZE : Result := crSizeWE;
+ CT_NORTHEASTSOUTHWESTRESIZE : Result := crSizeNESW;
+ CT_NORTHWESTSOUTHEASTRESIZE : Result := crSizeNWSE;
+ CT_COLUMNRESIZE : Result := crHSplit;
+ CT_ROWRESIZE : Result := crVSplit;
+ CT_MOVE : Result := crSizeAll;
+ CT_PROGRESS : Result := crAppStart;
+ CT_NONE : Result := crNone;
+ CT_NODROP,
+ CT_NOTALLOWED : Result := crNo;
+ CT_GRAB,
+ CT_GRABBING : Result := crDrag;
+
+ else Result := crDefault;
+ end;
+end;
+
+procedure DropEffectToDragOperation(aEffect: Longint; var aAllowedOps : TCefDragOperations);
+begin
+ aAllowedOps := DRAG_OPERATION_NONE;
+
+ if ((aEffect and DROPEFFECT_COPY) <> 0) then aAllowedOps := aAllowedOps or DRAG_OPERATION_COPY;
+ if ((aEffect and DROPEFFECT_LINK) <> 0) then aAllowedOps := aAllowedOps or DRAG_OPERATION_LINK;
+ if ((aEffect and DROPEFFECT_MOVE) <> 0) then aAllowedOps := aAllowedOps or DRAG_OPERATION_MOVE;
+end;
+
+procedure DragOperationToDropEffect(const aDragOperations : TCefDragOperations; var aEffect: Longint);
+begin
+ aEffect := DROPEFFECT_NONE;
+
+ if ((aDragOperations and DRAG_OPERATION_COPY) <> 0) then aEffect := aEffect or DROPEFFECT_COPY;
+ if ((aDragOperations and DRAG_OPERATION_LINK) <> 0) then aEffect := aEffect or DROPEFFECT_LINK;
+ if ((aDragOperations and DRAG_OPERATION_MOVE) <> 0) then aEffect := aEffect or DROPEFFECT_MOVE;
+end;
+
end.
diff --git a/source/uCEFRequest.pas b/source/uCEFRequest.pas
index cebfb2c5..1f2bf249 100644
--- a/source/uCEFRequest.pas
+++ b/source/uCEFRequest.pas
@@ -103,7 +103,7 @@ end;
function TCefRequestRef.GetFlags: TCefUrlRequestFlags;
begin
- Byte(Result) := PCefRequest(FData)^.get_flags(PCefRequest(FData));
+ Result := PCefRequest(FData)^.get_flags(PCefRequest(FData));
end;
procedure TCefRequestRef.GetHeaderMap(const HeaderMap: ICefStringMultimap);
diff --git a/source/uCEFTypes.pas b/source/uCEFTypes.pas
index 53f68007..f3fabfb8 100644
--- a/source/uCEFTypes.pas
+++ b/source/uCEFTypes.pas
@@ -201,22 +201,32 @@ type
PPCefX509Certificate = ^PCefX509Certificate;
- TCefWindowHandle = HWND; // /include/internal/cef_types_win.h (cef_window_handle_t)
- TCefCursorHandle = HCURSOR; // /include/internal/cef_types_win.h (cef_cursor_handle_t)
- TCefEventHandle = PMsg; // /include/internal/cef_types_win.h (cef_event_handle_t)
- TCefPlatformThreadId = DWORD; // /include/internal/cef_thread_internal.h (cef_platform_thread_id_t)
- TCefPlatformThreadHandle = DWORD; // /include/internal/cef_thread_internal.h (cef_platform_thread_handle_t)
- TCefTransitionType = Cardinal; // /include/internal/cef_types.h (cef_transition_type_t)
- TCefColor = Cardinal; // /include/internal/cef_types.h (cef_color_t)
- TCefErrorcode = Integer; // /include/internal/cef_types.h (cef_errorcode_t)
- TCefCertStatus = Integer; // /include/internal/cef_types.h (cef_cert_status_t)
- TCefSSLVersion = integer; // /include/internal/cef_types.h (cef_ssl_version_t)
- TCefStringList = Pointer; // /include/internal/cef_string_list.h (cef_string_list_t)
- TCefStringMap = Pointer; // /include/internal/cef_string_map.h (cef_string_map_t)
- TCefStringMultimap = Pointer; // /include/internal/cef_string_multimap.h (cef_string_multimap_t)
- TCefUriUnescapeRule = Integer; // /include/internal/cef_types.h (cef_uri_unescape_rule_t)
- TCefDomEventCategory = Integer; // /include/internal/cef_types.h (cef_dom_event_category_t)
-
+ TCefWindowHandle = HWND; // /include/internal/cef_types_win.h (cef_window_handle_t)
+ TCefCursorHandle = HCURSOR; // /include/internal/cef_types_win.h (cef_cursor_handle_t)
+ TCefEventHandle = PMsg; // /include/internal/cef_types_win.h (cef_event_handle_t)
+ TCefPlatformThreadId = DWORD; // /include/internal/cef_thread_internal.h (cef_platform_thread_id_t)
+ TCefPlatformThreadHandle = DWORD; // /include/internal/cef_thread_internal.h (cef_platform_thread_handle_t)
+ TCefTransitionType = Cardinal; // /include/internal/cef_types.h (cef_transition_type_t)
+ TCefColor = Cardinal; // /include/internal/cef_types.h (cef_color_t)
+ TCefErrorcode = Integer; // /include/internal/cef_types.h (cef_errorcode_t)
+ TCefCertStatus = Integer; // /include/internal/cef_types.h (cef_cert_status_t)
+ TCefSSLVersion = integer; // /include/internal/cef_types.h (cef_ssl_version_t)
+ TCefStringList = Pointer; // /include/internal/cef_string_list.h (cef_string_list_t)
+ TCefStringMap = Pointer; // /include/internal/cef_string_map.h (cef_string_map_t)
+ TCefStringMultimap = Pointer; // /include/internal/cef_string_multimap.h (cef_string_multimap_t)
+ TCefUriUnescapeRule = Integer; // /include/internal/cef_types.h (cef_uri_unescape_rule_t)
+ TCefDomEventCategory = Integer; // /include/internal/cef_types.h (cef_dom_event_category_t)
+ TCefEventFlags = Cardinal; // /include/internal/cef_types.h (cef_event_flags_t)
+ TCefDragOperations = Cardinal; // /include/internal/cef_types.h (cef_drag_operations_mask_t)
+ TCefDragOperation = Cardinal; // /include/internal/cef_types.h (cef_drag_operations_mask_t)
+ TCefV8AccessControls = Cardinal; // /include/internal/cef_types.h (cef_v8_accesscontrol_t)
+ TCefV8PropertyAttributes = Cardinal; // /include/internal/cef_types.h (cef_v8_propertyattribute_t)
+ TCefUrlRequestFlags = Cardinal; // /include/internal/cef_types.h (cef_urlrequest_flags_t)
+ TCefContextMenuTypeFlags = Cardinal; // /include/internal/cef_types.h (cef_context_menu_type_flags_t)
+ TCefContextMenuMediaStateFlags = Cardinal; // /include/internal/cef_types.h (cef_context_menu_media_state_flags_t)
+ TCefContextMenuEditStateFlags = Cardinal; // /include/internal/cef_types.h (cef_context_menu_edit_state_flags_t)
+ TCefJsonWriterOptions = Cardinal; // /include/internal/cef_types.h (cef_json_writer_options_t)
+ TCefSSLContentStatus = Cardinal; // /include/internal/cef_types.h (cef_ssl_content_status_t)
{$IFNDEF DELPHI12_UP}
NativeUInt = Cardinal;
@@ -359,14 +369,6 @@ type
JSON_PARSE_ERROR_COUNT
);
- // /include/internal/cef_types.h (cef_json_writer_options_t)
- TCefJsonWriterOption = (
- JSON_WRITER_OMIT_BINARY_VALUES,
- JSON_WRITER_OMIT_DOUBLE_TYPE_PRESERVATION,
- JSON_WRITER_PRETTY_PRINT
- );
- TCefJsonWriterOptions = set of TCefJsonWriterOption;
-
// /include/internal/cef_types.h (cef_state_t)
TCefState = (
STATE_DEFAULT = 0,
@@ -492,40 +494,15 @@ type
MENUITEMTYPE_SUBMENU
);
- // /include/internal/cef_types.h (cef_event_flags_t)
- TCefEventFlag = (
- EVENTFLAG_CAPS_LOCK_ON,
- EVENTFLAG_SHIFT_DOWN,
- EVENTFLAG_CONTROL_DOWN,
- EVENTFLAG_ALT_DOWN,
- EVENTFLAG_LEFT_MOUSE_BUTTON,
- EVENTFLAG_MIDDLE_MOUSE_BUTTON,
- EVENTFLAG_RIGHT_MOUSE_BUTTON,
- EVENTFLAG_COMMAND_DOWN,
- EVENTFLAG_NUM_LOCK_ON,
- EVENTFLAG_IS_KEY_PAD,
- EVENTFLAG_IS_LEFT,
- EVENTFLAG_IS_RIGHT
- );
- TCefEventFlags = set of TCefEventFlag;
-
- // /include/internal/cef_types.h (cef_drag_operations_mask_t)
- TCefDragOperation = (
- DRAG_OPERATION_COPY,
- DRAG_OPERATION_LINK,
- DRAG_OPERATION_GENERIC,
- DRAG_OPERATION_PRIVATE,
- DRAG_OPERATION_MOVE,
- DRAG_OPERATION_DELETE
- );
- TCefDragOperations = set of TCefDragOperation;
-
// /include/internal/cef_types.h (cef_file_dialog_mode_t)
TCefFileDialogMode = (
FILE_DIALOG_OPEN,
FILE_DIALOG_OPEN_MULTIPLE,
FILE_DIALOG_OPEN_FOLDER,
- FILE_DIALOG_SAVE
+ FILE_DIALOG_SAVE,
+ FILE_DIALOG_TYPE_MASK = $FF,
+ FILE_DIALOG_OVERWRITEPROMPT_FLAG = $01000000,
+ FILE_DIALOG_HIDEREADONLY_FLAG = $02000000
);
// /include/internal/cef_types.h (cef_focus_source_t)
@@ -681,19 +658,6 @@ type
RV_CONTINUE_ASYNC
);
- // /include/internal/cef_types.h (cef_urlrequest_flags_t)
- TCefUrlRequestFlag = (
- UR_FLAG_SKIP_CACHE,
- UR_FLAG_ALLOW_CACHED_CREDENTIALS,
- UR_FLAG_DUMMY_1,
- UR_FLAG_REPORT_UPLOAD_PROGRESS,
- UR_FLAG_DUMMY_2,
- UR_FLAG_DUMMY_3,
- UR_FLAG_NO_DOWNLOAD_DATA,
- UR_FLAG_NO_RETRY_ON_5XX
- );
- TCefUrlRequestFlags = set of TCefUrlRequestFlag;
-
// /include/internal/cef_types.h (cef_urlrequest_status_t)
TCefUrlRequestStatus = (
UR_UNKNOWN = 0,
@@ -728,22 +692,6 @@ type
ST_SESSIONSTORAGE
);
- // /include/internal/cef_types.h (cef_v8_accesscontrol_t)
- TCefV8AccessControl = (
- V8_ACCESS_CONTROL_ALL_CAN_READ,
- V8_ACCESS_CONTROL_ALL_CAN_WRITE,
- V8_ACCESS_CONTROL_PROHIBITS_OVERWRITING
- );
- TCefV8AccessControls = set of TCefV8AccessControl;
-
- // /include/internal/cef_types.h (cef_v8_propertyattribute_t)
- TCefV8PropertyAttribute = (
- V8_PROPERTY_ATTRIBUTE_READONLY,
- V8_PROPERTY_ATTRIBUTE_DONTENUM,
- V8_PROPERTY_ATTRIBUTE_DONTDELETE
- );
- TCefV8PropertyAttributes = set of TCefV8PropertyAttribute;
-
// /include/internal/cef_types.h (cef_response_filter_status_t)
TCefResponseFilterStatus = (
RESPONSE_FILTER_NEED_MORE_DATA,
@@ -883,45 +831,6 @@ type
GEOPOSITON_ERROR_TIMEOUT
);
- // /include/internal/cef_types.h (cef_context_menu_type_flags_t)
- TCefContextMenuTypeFlag = (
- CM_TYPEFLAG_PAGE,
- CM_TYPEFLAG_FRAME,
- CM_TYPEFLAG_LINK,
- CM_TYPEFLAG_MEDIA,
- CM_TYPEFLAG_SELECTION,
- CM_TYPEFLAG_EDITABLE
- );
- TCefContextMenuTypeFlags = set of TCefContextMenuTypeFlag;
-
- // /include/internal/cef_types.h (cef_context_menu_media_state_flags_t)
- TCefContextMenuMediaStateFlag = (
- CM_MEDIAFLAG_ERROR,
- CM_MEDIAFLAG_PAUSED,
- CM_MEDIAFLAG_MUTED,
- CM_MEDIAFLAG_LOOP,
- CM_MEDIAFLAG_CAN_SAVE,
- CM_MEDIAFLAG_HAS_AUDIO,
- CM_MEDIAFLAG_HAS_VIDEO,
- CM_MEDIAFLAG_CONTROL_ROOT_ELEMENT,
- CM_MEDIAFLAG_CAN_PRINT,
- CM_MEDIAFLAG_CAN_ROTATE
- );
- TCefContextMenuMediaStateFlags = set of TCefContextMenuMediaStateFlag;
-
- // /include/internal/cef_types.h (cef_context_menu_edit_state_flags_t)
- TCefContextMenuEditStateFlag = (
- CM_EDITFLAG_CAN_UNDO,
- CM_EDITFLAG_CAN_REDO,
- CM_EDITFLAG_CAN_CUT,
- CM_EDITFLAG_CAN_COPY,
- CM_EDITFLAG_CAN_PASTE,
- CM_EDITFLAG_CAN_DELETE,
- CM_EDITFLAG_CAN_SELECT_ALL,
- CM_EDITFLAG_CAN_TRANSLATE
- );
- TCefContextMenuEditStateFlags = set of TCefContextMenuEditStateFlag;
-
// /include/internal/cef_types.h (cef_button_state_t)
TCefButtonState = (
CEF_BUTTON_STATE_NORMAL,
@@ -955,13 +864,6 @@ type
CEF_MENU_COLOR_COUNT
);
- // /include/internal/cef_types.h (cef_ssl_content_status_t)
- TCefSSLContentStatusFlags = (
- SSL_CONTENT_DISPLAYED_INSECURE_CONTENT,
- SSL_CONTENT_RAN_INSECURE_CONTENT
- );
- TCefSSLContentStatus = set of TCefSSLContentStatusFlags;
-
// /include/internal/cef_types.h (cef_cdm_registration_error_t)
TCefCDMRegistrationError = (
CEF_CDM_REGISTRATION_ERROR_NONE,
diff --git a/source/uCEFWriteHandler.pas b/source/uCEFWriteHandler.pas
index f5be8e23..7a94670a 100644
--- a/source/uCEFWriteHandler.pas
+++ b/source/uCEFWriteHandler.pas
@@ -47,18 +47,48 @@ unit uCEFWriteHandler;
interface
uses
+ {$IFDEF DELPHI16_UP}
+ WinApi.Windows,
+ {$ELSE}
+ Windows,
+ {$ENDIF}
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
type
TCefWriteHandlerOwn = class(TCefBaseRefCountedOwn, ICefWriteHandler)
- protected
- function Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt; virtual;
- function Seek(offset: Int64; whence: Integer): Integer; virtual;
- function Tell: Int64; virtual;
- function Flush: Integer; virtual;
- function MayBlock: Boolean; virtual;
- public
- constructor Create; virtual;
+ protected
+ function Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt; virtual;
+ function Seek(offset: Int64; whence: Integer): Integer; virtual;
+ function Tell: Int64; virtual;
+ function Flush: Integer; virtual;
+ function MayBlock: Boolean; virtual;
+ public
+ constructor Create; virtual;
+ end;
+
+ TCefBytesWriteHandler = class(TCefWriteHandlerOwn)
+ protected
+ FCriticalSection : TRTLCriticalSection;
+
+ FGrow : NativeUInt;
+ FData : Pointer;
+ FDataSize : int64;
+ FOffset : int64;
+
+ function Grow(size : NativeUInt) : NativeUInt;
+
+ public
+ constructor Create(aGrow : NativeUInt); reintroduce;
+ destructor Destroy; override;
+
+ function Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt; override;
+ function Seek(offset: Int64; whence: Integer): Integer; override;
+ function Tell: Int64; override;
+ function Flush: Integer; override;
+ function MayBlock: Boolean; override;
+
+ function GetData : pointer;
+ function GetDataSize : int64;
end;
implementation
@@ -67,15 +97,17 @@ uses
uCEFMiscFunctions, uCEFLibFunctions;
-function cef_write_handler_write(self: PCefWriteHandler; const ptr: Pointer;
- size, n: NativeUInt): NativeUInt; stdcall;
+// *******************************************
+// *********** TCefWriteHandlerOwn ***********
+// *******************************************
+
+function cef_write_handler_write(self: PCefWriteHandler; const ptr: Pointer; size, n: NativeUInt): NativeUInt; stdcall;
begin
with TCefWriteHandlerOwn(CefGetObject(self)) do
Result:= Write(ptr, size, n);
end;
-function cef_write_handler_seek(self: PCefWriteHandler; offset: Int64;
- whence: Integer): Integer; stdcall;
+function cef_write_handler_seek(self: PCefWriteHandler; offset: Int64; whence: Integer): Integer; stdcall;
begin
with TCefWriteHandlerOwn(CefGetObject(self)) do
Result := Seek(offset, whence);
@@ -102,14 +134,15 @@ end;
constructor TCefWriteHandlerOwn.Create;
begin
inherited CreateData(SizeOf(TCefWriteHandler));
+
with PCefWriteHandler(FData)^ do
- begin
- write := cef_write_handler_write;
- seek := cef_write_handler_seek;
- tell := cef_write_handler_tell;
- flush := cef_write_handler_flush;
- may_block := cef_write_handler_may_block;
- end;
+ begin
+ write := cef_write_handler_write;
+ seek := cef_write_handler_seek;
+ tell := cef_write_handler_tell;
+ flush := cef_write_handler_flush;
+ may_block := cef_write_handler_may_block;
+ end;
end;
function TCefWriteHandlerOwn.Flush: Integer;
@@ -132,10 +165,154 @@ begin
Result := 0;
end;
-function TCefWriteHandlerOwn.Write(const ptr: Pointer; size,
- n: NativeUInt): NativeUInt;
+function TCefWriteHandlerOwn.Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt;
begin
Result := 0;
end;
+
+// *******************************************
+// ********** TCefBytesWriteHandler **********
+// *******************************************
+
+constructor TCefBytesWriteHandler.Create(aGrow : NativeUInt);
+begin
+ inherited Create;
+
+ InitializeCriticalSection(FCriticalSection);
+
+ FGrow := aGrow;
+ FDataSize := aGrow;
+ FOffset := 0;
+
+ GetMem(FData, aGrow);
+end;
+
+destructor TCefBytesWriteHandler.Destroy;
+begin
+ if (FData <> nil) then FreeMem(FData);
+
+ DeleteCriticalSection(FCriticalSection);
+
+ FCriticalSection.DebugInfo := nil;
+ FCriticalSection.LockCount := 0;
+ FCriticalSection.RecursionCount := 0;
+ FCriticalSection.OwningThread := 0;
+ FCriticalSection.LockSemaphore := 0;
+ FCriticalSection.Reserved := 0;
+
+ inherited Destroy;
+end;
+
+function TCefBytesWriteHandler.Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt;
+var
+ TempPointer : pointer;
+begin
+ EnterCriticalSection(FCriticalSection);
+
+ if ((FOffset + (size * n)) >= FDataSize) and (Grow(size * n) = 0) then
+ Result := 0
+ else
+ begin
+ TempPointer := Pointer(PByte(FData) + FOffset);
+
+ CopyMemory(TempPointer, ptr, size * n);
+
+ FOffset := FOffset + (size * n);
+ Result := n;
+ end;
+
+ LeaveCriticalSection(FCriticalSection);
+end;
+
+function TCefBytesWriteHandler.Seek(offset: Int64; whence: Integer): Integer;
+const
+ SEEK_SET = 0;
+ SEEK_CUR = 1;
+ SEEK_END = 2;
+var
+ TempAbsOffset : int64;
+begin
+ EnterCriticalSection(FCriticalSection);
+
+ Result := -1;
+
+ case whence of
+ SEEK_CUR :
+ if not((FOffset + offset > FDataSize) or (FOffset + offset < 0)) then
+ begin
+ FOffset := FOffset + offset;
+ Result := 0;
+ end;
+
+ SEEK_END:
+ begin
+ TempAbsOffset := abs(offset);
+
+ if not(TempAbsOffset > FDataSize) then
+ begin
+ FOffset := FDataSize - TempAbsOffset;
+ Result := 0;
+ end;
+ end;
+
+ SEEK_SET:
+ if not((offset > FDataSize) or (offset < 0)) then
+ begin
+ FOffset := offset;
+ Result := 0;
+ end;
+ end;
+
+ LeaveCriticalSection(FCriticalSection);
+end;
+
+function TCefBytesWriteHandler.Tell: Int64;
+begin
+ EnterCriticalSection(FCriticalSection);
+
+ Result := FOffset;
+
+ LeaveCriticalSection(FCriticalSection);
+end;
+
+function TCefBytesWriteHandler.Flush: Integer;
+begin
+ Result := 0;
+end;
+
+function TCefBytesWriteHandler.MayBlock: Boolean;
+begin
+ Result := False;
+end;
+
+function TCefBytesWriteHandler.GetData : pointer;
+begin
+ Result := FData;
+end;
+
+function TCefBytesWriteHandler.GetDataSize : int64;
+begin
+ Result := FDataSize;
+end;
+
+function TCefBytesWriteHandler.Grow(size : NativeUInt) : NativeUInt;
+var
+ s : NativeUInt;
+begin
+ EnterCriticalSection(FCriticalSection);
+
+ if (size > FGrow) then
+ s := size
+ else
+ s := FGrow;
+
+ ReallocMem(FData, FDataSize + s);
+
+ FDataSize := FDataSize + s;
+ Result := FDataSize;
+
+ LeaveCriticalSection(FCriticalSection);
+end;
+
end.
diff --git a/source/uCEFv8Handler.pas b/source/uCEFv8Handler.pas
index a2e336e0..57deca92 100644
--- a/source/uCEFv8Handler.pas
+++ b/source/uCEFv8Handler.pas
@@ -100,7 +100,7 @@ type
implementation
uses
- uCEFMiscFunctions, uCEFLibFunctions, uCEFv8Value;
+ uCEFMiscFunctions, uCEFLibFunctions, uCEFv8Value, uCEFConstants;
function cef_v8_handler_execute(self: PCefv8Handler;
const name: PCefString; obj: PCefv8Value; argumentsCount: NativeUInt;
@@ -507,7 +507,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
begin
vl := rf.GetValue(rec);
SetValue(vl, o);
- v8.SetValueByKey(rf.Name, o, []);
+ v8.SetValueByKey(rf.Name, o, V8_PROPERTY_ATTRIBUTE_NONE);
end;
end)
end else
@@ -516,7 +516,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
vl := rf.GetValue(rec);
if not SetValue(vl, v8) then
Exit(False);
- ret.SetValueByKey(rf.Name, v8, []);
+ ret.SetValueByKey(rf.Name, v8, V8_PROPERTY_ATTRIBUTE_NONE);
end;
Result := True;
end;
@@ -548,7 +548,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
if m.Visibility > mvProtected then
begin
f := TCefv8ValueRef.NewFunction(m.Name, Self);
- ret.SetValueByKey(m.Name, f, []);
+ ret.SetValueByKey(m.Name, f, V8_PROPERTY_ATTRIBUTE_NONE);
end;
for p in rt.GetProperties do
@@ -614,7 +614,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
if (m.Visibility > mvProtected) and (m.MethodKind in [mkClassProcedure, mkClassFunction]) then
begin
f := TCefv8ValueRef.NewFunction(m.Name, Self);
- ret.SetValueByKey(m.Name, f, []);
+ ret.SetValueByKey(m.Name, f, V8_PROPERTY_ATTRIBUTE_NONE);
end;
end;
@@ -680,7 +680,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
if m.Visibility > mvProtected then
begin
f := TCefv8ValueRef.NewFunction(m.Name, Self);
- ret.SetValueByKey(m.Name, f, []);
+ ret.SetValueByKey(m.Name, f, V8_PROPERTY_ATTRIBUTE_NONE);
end;
Result := True;
diff --git a/source/uOLEDragAndDrop.pas b/source/uOLEDragAndDrop.pas
new file mode 100644
index 00000000..2f7c2af5
--- /dev/null
+++ b/source/uOLEDragAndDrop.pas
@@ -0,0 +1,619 @@
+// ************************************************************************
+// ***************************** CEF4Delphi *******************************
+// ************************************************************************
+//
+// CEF4Delphi is based on DCEF3 which uses CEF3 to embed a chromium-based
+// browser in Delphi applications.
+//
+// The original license of DCEF3 still applies to CEF4Delphi.
+//
+// For more information about CEF4Delphi visit :
+// https://www.briskbard.com/index.php?lang=en&pageid=cef
+//
+// Copyright © 2017 Salvador Díaz Fau. All rights reserved.
+//
+// ************************************************************************
+// ************ vvvv Original license and comments below vvvv *************
+// ************************************************************************
+(*
+ * Delphi Chromium Embedded 3
+ *
+ * Usage allowed under the restrictions of the Lesser GNU General Public License
+ * or alternatively the restrictions of the Mozilla Public License 1.1
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
+ * the specific language governing rights and limitations under the License.
+ *
+ * Unit owner : Henri Gourvest
+ * Web site : http://www.progdigy.com
+ * Repository : http://code.google.com/p/delphichromiumembedded/
+ * Group : http://groups.google.com/group/delphichromiumembedded
+ *
+ * Embarcadero Technologies, Inc is not permitted to use or redistribute
+ * this source code without explicit permission.
+ *
+ *)
+
+unit uOLEDragAndDrop;
+
+{$I cef.inc}
+
+interface
+
+uses
+ {$IFDEF DELPHI16_UP}
+ WinApi.Windows, System.Classes, System.Math, WinApi.ShlObj, WinApi.ActiveX;
+ {$ELSE}
+ Windows, Classes, Math, ShlObj, ActiveX;
+ {$ENDIF}
+
+const
+ CUSTOM_ARRAY_LENGTH = 25;
+
+type
+ TOLEMediumArray = array [0..pred(CUSTOM_ARRAY_LENGTH)] of TStgMedium;
+ TOLEFormatArray = array [0..pred(CUSTOM_ARRAY_LENGTH)] of TFormatEtc;
+
+ TOLEDragAndDropMgr = class
+ protected
+ function GetStorageForBytes(var aMedium : TStgMedium; const aData : pointer; aLength : NativeUInt) : boolean;
+ function GetStorageForString(var aMedium : TStgMedium; const aData : WideString) : boolean; overload;
+ function GetStorageForString(var aMedium : TStgMedium; const aData : AnsiString) : boolean; overload;
+ function GetStorageForFileDescriptor(var aMedium : TStgMedium; const aFileName : string) : boolean;
+
+ public
+ function DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; virtual;
+ function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; virtual;
+ function DragLeave: HRESULT; virtual;
+ function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; virtual;
+ end;
+
+ TOLEEnumFormatEtc = class(TInterfacedObject, IEnumFormatEtc)
+ protected
+ FIndex : integer;
+ FNumFormats : integer;
+ FFormatArray : TOLEFormatArray;
+
+ procedure CopyFromFormatArray(const aSrcFormatArray : TOLEFormatArray);
+ procedure CopyFormatEtc(var aDstFormatEtc : TFormatEtc; const aSrcFormatEtc : TFormatEtc);
+
+ public
+ constructor Create; overload;
+ constructor Create(const aFormatArray : TOLEFormatArray; aNumFormats : integer; aIndex : integer = 0); overload;
+ destructor Destroy; override;
+
+ // IEnumFormatEtc
+ function Next(Celt: LongInt; out Elt; pCeltFetched: pLongInt): HRESULT; stdcall;
+ function Skip(Celt: Longint): HRESULT; stdcall;
+ function Reset: HRESULT; stdcall;
+ function Clone(out Enum: IEnumFormatEtc): HRESULT; stdcall;
+ end;
+
+ TOLEDropSource = class(TInterfacedObject, IDropSource)
+ public
+ // IDropSource
+ function QueryContinueDrag(fEscapePressed: bool; grfKeyState: LongInt): HRESULT; stdcall;
+ function GiveFeedback(dwEffect: LongInt): HRESULT; stdcall;
+ end;
+
+ TOLEDataObject = class(TInterfacedObject, IDataObject)
+ protected
+ FNumFormats : integer;
+ FFormatArray : TOLEFormatArray;
+ FMediumArray : TOLEMediumArray;
+ FAsync : boolean;
+ FInOperation : boolean;
+
+ function LookupFormatEtc(const aFormatEtc : TFormatEtc) : integer;
+ function DupGlobalMem(hMem : HGLOBAL) : HGLOBAL;
+
+ public
+ constructor Create(const aFormatArray : TOLEFormatArray; const aMediumArray : TOLEMediumArray; aNumFormats : integer); reintroduce;
+
+ // IDataObject
+ function GetData(const FormatEtcIn: TFormatEtc; out Medium: TStgMedium):HRESULT; stdcall;
+ function GetDataHere(const FormatEtc: TFormatEtc; out Medium: TStgMedium):HRESULT; stdcall;
+ function QueryGetData(const FormatEtc: TFormatEtc): HRESULT; stdcall;
+ function GetCanonicalFormatEtc(const FormatEtc: TFormatEtc; out FormatEtcout: TFormatEtc): HRESULT; stdcall;
+ function SetData(const FormatEtc: TFormatEtc; var Medium: TStgMedium; fRelease: Bool): HRESULT; stdcall;
+ function EnumFormatEtc(dwDirection: LongInt; out aEnumFormatEtc: IEnumFormatEtc): HRESULT; stdcall;
+ function dAdvise(const FormatEtc: TFormatEtc; advf: LongInt; const advsink: IAdviseSink; out dwConnection: LongInt): HRESULT; stdcall;
+ function dUnadvise(dwConnection: LongInt): HRESULT; stdcall;
+ function EnumdAdvise(out EnumAdvise: IEnumStatData): HRESULT; stdcall;
+ end;
+
+ TOLEDropTarget = class(TInterfacedObject, IDropTarget)
+ protected
+ FManager : TOLEDragAndDropMgr;
+
+ public
+ constructor Create(const aManager : TOLEDragAndDropMgr); reintroduce;
+
+ // IDropTarget
+ function DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
+ function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
+ function DragLeave: HRESULT; stdcall;
+ function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
+ end;
+
+implementation
+
+// *****************************************************
+// *************** TOLEDragAndDropMgr ******************
+// *****************************************************
+
+function TOLEDragAndDropMgr.GetStorageForBytes(var aMedium : TStgMedium; const aData : pointer; aLength : NativeUInt) : boolean;
+var
+ TempHandle : HGLOBAL;
+ TempPointer : pointer;
+begin
+ Result := False;
+
+ if (aData <> nil) then
+ begin
+ TempHandle := GlobalAlloc(GHND, aLength);
+
+ if (TempHandle <> 0) then
+ begin
+ TempPointer := GlobalLock(TempHandle);
+
+ if (TempPointer <> nil) then
+ begin
+ Move(aData^, TempPointer^, aLength);
+
+ aMedium.hGlobal := TempHandle;
+ aMedium.tymed := TYMED_HGLOBAL;
+ aMedium.unkForRelease := nil;
+
+ GlobalUnlock(TempHandle);
+
+ Result := True;
+ end
+ else
+ GlobalFree(TempHandle);
+ end;
+ end;
+end;
+
+function TOLEDragAndDropMgr.GetStorageForString(var aMedium : TStgMedium; const aData : WideString) : boolean;
+var
+ TempPointer : pointer;
+begin
+ Result := False;
+
+ if (length(aData) > 0) then
+ begin
+ TempPointer := @aData[1];
+ Result := GetStorageForBytes(aMedium, TempPointer, length(aData) * SizeOf(WideChar));
+ end;
+end;
+
+function TOLEDragAndDropMgr.GetStorageForString(var aMedium : TStgMedium; const aData : AnsiString) : boolean;
+var
+ TempPointer : pointer;
+begin
+ Result := False;
+
+ if (length(aData) > 0) then
+ begin
+ TempPointer := @aData[1];
+ Result := GetStorageForBytes(aMedium, TempPointer, length(aData) * SizeOf(AnsiChar));
+ end;
+end;
+
+function TOLEDragAndDropMgr.GetStorageForFileDescriptor(var aMedium : TStgMedium; const aFileName : string) : boolean;
+var
+ TempHandle : HGLOBAL;
+ TempDescriptor : TFileGroupDescriptor;
+ TempPointer : pointer;
+ i, j : integer;
+ TempString : string;
+begin
+ Result := False;
+
+ if (length(aFileName) > 0) then
+ begin
+ TempHandle := GlobalAlloc(GHND, sizeof(TFileGroupDescriptor));
+
+ if (TempHandle <> 0) then
+ begin
+ TempPointer := GlobalLock(TempHandle);
+
+ if (TempPointer <> nil) then
+ begin
+ TempDescriptor := TFileGroupDescriptor(TempPointer^);
+ TempDescriptor.cItems := 1;
+ TempDescriptor.fgd[0].dwFlags := FD_LINKUI;
+
+ TempString := aFileName + #0;
+
+ i := 1;
+ j := length(TempString);
+
+ while (i <= j) do
+ begin
+ TempDescriptor.fgd[0].cFileName[pred(i)] := TempString[i];
+ inc(i);
+ end;
+
+ aMedium.tymed := TYMED_HGLOBAL;
+ aMedium.hGlobal := TempHandle;
+ aMedium.unkForRelease := nil;
+
+ GlobalUnlock(TempHandle);
+
+ Result := True;
+ end
+ else
+ GlobalFree(TempHandle);
+ end;
+ end;
+end;
+
+function TOLEDragAndDropMgr.DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT;
+begin
+ Result := S_OK;
+ dwEffect := DROPEFFECT_NONE;
+end;
+
+function TOLEDragAndDropMgr.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT;
+begin
+ Result := S_OK;
+ dwEffect := DROPEFFECT_NONE;
+end;
+
+function TOLEDragAndDropMgr.DragLeave: HRESULT;
+begin
+ Result := S_OK;
+end;
+
+function TOLEDragAndDropMgr.Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT;
+begin
+ Result := S_OK;
+ dwEffect := DROPEFFECT_NONE;
+end;
+
+
+// *****************************************************
+// **************** TOLEEnumFormatEtc ******************
+// *****************************************************
+
+constructor TOLEEnumFormatEtc.Create;
+begin
+ inherited Create;
+
+ FIndex := 0;
+ FNumFormats := 0;
+end;
+
+constructor TOLEEnumFormatEtc.Create(const aFormatArray : TOLEFormatArray; aNumFormats, aIndex : integer);
+begin
+ inherited Create;
+
+ FIndex := aIndex;
+ FNumFormats := min(aNumFormats, CUSTOM_ARRAY_LENGTH);
+
+ CopyFromFormatArray(aFormatArray);
+end;
+
+destructor TOLEEnumFormatEtc.Destroy;
+var
+ i : integer;
+begin
+ i := 0;
+
+ while (i < FNumFormats) do
+ begin
+ if (FFormatArray[i].ptd <> nil) then CoTaskMemFree(FFormatArray[i].ptd);
+ inc(i);
+ end;
+
+ inherited Destroy;
+end;
+
+procedure TOLEEnumFormatEtc.CopyFromFormatArray(const aSrcFormatArray : TOLEFormatArray);
+var
+ i : integer;
+begin
+ i := 0;
+
+ while (i < FNumFormats) do
+ begin
+ CopyFormatEtc(FFormatArray[i], aSrcFormatArray[i]);
+ inc(i);
+ end;
+end;
+
+procedure TOLEEnumFormatEtc.CopyFormatEtc(var aDstFormatEtc : TFormatEtc; const aSrcFormatEtc : TFormatEtc);
+begin
+ aDstFormatEtc.cfFormat := aSrcFormatEtc.cfFormat;
+ aDstFormatEtc.dwAspect := aSrcFormatEtc.dwAspect;
+ aDstFormatEtc.lindex := aSrcFormatEtc.lindex;
+ aDstFormatEtc.tymed := aSrcFormatEtc.tymed;
+
+ if (aSrcFormatEtc.ptd = nil) then
+ aDstFormatEtc.ptd := nil
+ else
+ begin
+ aDstFormatEtc.ptd := CoTaskMemAlloc(SizeOf(TDVTargetDevice));
+
+ aDstFormatEtc.ptd.tdSize := aSrcFormatEtc.ptd.tdSize;
+ aDstFormatEtc.ptd.tdDriverNameOffset := aSrcFormatEtc.ptd.tdDriverNameOffset;
+ aDstFormatEtc.ptd.tdDeviceNameOffset := aSrcFormatEtc.ptd.tdDeviceNameOffset;
+ aDstFormatEtc.ptd.tdPortNameOffset := aSrcFormatEtc.ptd.tdPortNameOffset;
+ aDstFormatEtc.ptd.tdExtDevmodeOffset := aSrcFormatEtc.ptd.tdExtDevmodeOffset;
+ aDstFormatEtc.ptd.tdData := aSrcFormatEtc.ptd.tdData;
+ end;
+end;
+
+function TOLEEnumFormatEtc.Next(Celt: LongInt; out Elt; pCeltFetched: pLongInt): HRESULT;
+var
+ i : integer;
+ TempArray : TOLEFormatArray absolute Elt;
+begin
+ i := 0;
+
+ while (i < Celt) and (FIndex < FNumFormats) do
+ begin
+ CopyFormatEtc(TempArray[i], FFormatArray[FIndex]);
+ inc(i);
+ inc(FIndex);
+ end;
+
+ if (pCeltFetched <> nil) then pCeltFetched^ := i;
+
+ if (i = Celt) then
+ Result := S_OK
+ else
+ Result := S_FALSE;
+end;
+
+function TOLEEnumFormatEtc.Skip(Celt: Longint): HRESULT;
+begin
+ FIndex := FIndex + Celt;
+
+ if (FIndex <= FNumFormats) then
+ Result := S_OK
+ else
+ Result := S_FALSE;
+end;
+
+function TOLEEnumFormatEtc.Reset: HRESULT;
+begin
+ FIndex := 0;
+ Result := S_OK;
+end;
+
+function TOLEEnumFormatEtc.Clone(out Enum: IEnumFormatEtc): HRESULT;
+begin
+ Enum := TOLEEnumFormatEtc.Create(FFormatArray, FNumFormats, FIndex);
+ Result := S_OK;
+end;
+
+
+// *****************************************************
+// ****************** TOLEDropTarget *******************
+// *****************************************************
+
+constructor TOLEDropTarget.Create(const aManager : TOLEDragAndDropMgr);
+begin
+ inherited Create;
+
+ FManager := aManager;
+end;
+
+function TOLEDropTarget.DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
+begin
+ Result := FManager.DragEnter(DataObj, grfKeyState, pt, dwEffect);
+end;
+
+function TOLEDropTarget.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
+begin
+ Result := FManager.DragOver(grfKeyState, pt, dwEffect);
+end;
+
+function TOLEDropTarget.DragLeave: HRESULT; stdcall;
+begin
+ Result := FManager.DragLeave;
+end;
+
+function TOLEDropTarget.Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
+begin
+ Result := FManager.Drop(dataObj, grfKeyState, pt, dwEffect);
+end;
+
+
+// *****************************************************
+// ****************** TOLEDropSource *******************
+// *****************************************************
+
+function TOLEDropSource.QueryContinueDrag(fEscapePressed: bool; grfKeyState: LongInt): HRESULT; stdcall;
+begin
+ if fEscapePressed then
+ Result := DRAGDROP_S_CANCEL
+ else
+ if ((grfKeyState and MK_LBUTTON) = 0) then
+ Result := DRAGDROP_S_DROP
+ else
+ Result := S_OK;
+end;
+
+function TOLEDropSource.GiveFeedback(dwEffect: LongInt): HRESULT; stdcall;
+begin
+ Result := DRAGDROP_S_USEDEFAULTCURSORS;
+end;
+
+
+// *****************************************************
+// ****************** TOLEDataObject *******************
+// *****************************************************
+
+constructor TOLEDataObject.Create(const aFormatArray : TOLEFormatArray;
+ const aMediumArray : TOLEMediumArray;
+ aNumFormats : integer);
+var
+ i : integer;
+begin
+ inherited Create;
+
+ FAsync := False;
+ FInOperation := False;
+ FNumFormats := min(aNumFormats, CUSTOM_ARRAY_LENGTH);
+
+ i := 0;
+
+ while (i < FNumFormats) do
+ begin
+ FFormatArray[i].cfFormat := aFormatArray[i].cfFormat;
+ FFormatArray[i].ptd := aFormatArray[i].ptd;
+ FFormatArray[i].dwAspect := aFormatArray[i].dwAspect;
+ FFormatArray[i].lindex := aFormatArray[i].lindex;
+ FFormatArray[i].tymed := aFormatArray[i].tymed;
+
+ FMediumArray[i] := aMediumArray[i];
+
+ inc(i);
+ end;
+end;
+
+function TOLEDataObject.LookupFormatEtc(const aFormatEtc : TFormatEtc) : integer;
+var
+ i : integer;
+begin
+ Result := -1;
+ i := 0;
+
+ while (i < FNumFormats) do
+ if ((FFormatArray[i].tymed and aFormatEtc.tymed) <> 0) and
+ (FFormatArray[i].cfFormat = aFormatEtc.cfFormat) and
+ (FFormatArray[i].dwAspect = aFormatEtc.dwAspect) then
+ begin
+ Result := i;
+ exit;
+ end
+ else
+ inc(i);
+end;
+
+function TOLEDataObject.DupGlobalMem(hMem : HGLOBAL) : HGLOBAL;
+var
+ TempLen : cardinal;
+ TempHandle : HGLOBAL;
+ TempSrc : Pointer;
+ TempDst : Pointer;
+begin
+ Result := 0;
+ TempSrc := GlobalLock(hMem);
+
+ if (TempSrc <> nil) then
+ begin
+ TempLen := GlobalSize(hMem);
+ TempHandle := GlobalAlloc(GHND, TempLen);
+
+ if (TempHandle <> 0) then
+ begin
+ TempDst := GlobalLock(TempHandle);
+
+ if (TempDst <> nil) then
+ begin
+ Move(TempSrc^, TempDst^, TempLen);
+ Result := TempHandle;
+ GlobalUnlock(TempHandle);
+ end
+ else
+ GlobalFree(TempHandle);
+ end;
+
+ GlobalUnlock(hMem);
+ end;
+end;
+
+function TOLEDataObject.GetData(const FormatEtcIn: TFormatEtc; out Medium: TStgMedium):HRESULT; stdcall;
+var
+ i : integer;
+begin
+ i := LookupFormatEtc(FormatEtcIn);
+
+ if (i < 0) or ((FFormatArray[i].tymed and TYMED_HGLOBAL) = 0) then
+ begin
+ Medium.tymed := TYMED_NULL;
+ Medium.unkForRelease := nil;
+ Medium.hGlobal := 0;
+ Result := DV_E_FORMATETC;
+ end
+ else
+ begin
+ Medium.tymed := FFormatArray[i].tymed;
+ Medium.unkForRelease := nil;
+ Medium.hGlobal := DupGlobalMem(FMediumArray[i].hGlobal);
+ Result := S_OK;
+ end;
+end;
+
+function TOLEDataObject.GetDataHere(const FormatEtc: TFormatEtc; out Medium: TStgMedium):HRESULT; stdcall;
+begin
+ Result := DV_E_FORMATETC;
+end;
+
+function TOLEDataObject.QueryGetData(const FormatEtc: TFormatEtc): HRESULT; stdcall;
+begin
+ if (LookupFormatEtc(FormatEtc) < 0) then
+ Result := DV_E_FORMATETC
+ else
+ Result := S_OK;
+end;
+
+function TOLEDataObject.GetCanonicalFormatEtc(const FormatEtc: TFormatEtc; out FormatEtcout: TFormatEtc): HRESULT; stdcall;
+begin
+ FormatEtcout.cfFormat := 0;
+ FormatEtcout.dwAspect := DVASPECT_CONTENT;
+ FormatEtcout.lindex := -1;
+ FormatEtcout.tymed := TYMED_NULL;
+ FormatEtcout.ptd := nil;
+
+ Result := E_NOTIMPL;
+end;
+
+function TOLEDataObject.SetData(const FormatEtc: TFormatEtc; var Medium: TStgMedium; fRelease: Bool): HRESULT; stdcall;
+begin
+ Result := E_NOTIMPL;
+end;
+
+function TOLEDataObject.EnumFormatEtc(dwDirection: LongInt; out aEnumFormatEtc: IEnumFormatEtc): HRESULT; stdcall;
+begin
+ if (dwDirection = DATADIR_GET) then
+ begin
+ aEnumFormatEtc := TOLEEnumFormatEtc.Create(FFormatArray, FNumFormats);
+ Result := S_OK;
+ end
+ else
+ begin
+ aEnumFormatEtc := nil;
+
+ if (dwDirection = DATADIR_SET) then
+ Result := E_NOTIMPL
+ else
+ Result := E_INVALIDARG;
+ end;
+end;
+
+function TOLEDataObject.dAdvise(const FormatEtc: TFormatEtc;
+ advf: LongInt;
+ const advsink: IAdviseSink;
+ out dwConnection: LongInt): HRESULT; stdcall;
+begin
+ Result := OLE_E_ADVISENOTSUPPORTED;
+end;
+
+function TOLEDataObject.dUnadvise(dwConnection: LongInt): HRESULT; stdcall;
+begin
+ Result := OLE_E_ADVISENOTSUPPORTED;
+end;
+
+function TOLEDataObject.EnumdAdvise(out EnumAdvise: IEnumStatData): HRESULT; stdcall;
+begin
+ Result := OLE_E_ADVISENOTSUPPORTED;
+end;
+
+end.