You've already forked CEF4Delphi
							
							
				mirror of
				https://github.com/salvadordf/CEF4Delphi.git
				synced 2025-10-30 23:07:52 +02:00 
			
		
		
		
	Added code comments to GTKBrowser
Removed overloaded UseDefaultX11VisualForGtk Removed overloaded FlushDisplay Added Linux Mint 22.2 mention
This commit is contained in:
		| @@ -15,7 +15,7 @@ The CEF binaries used by CEF4Delphi are available for download at Spotify : | ||||
|  | ||||
| CEF4Delphi was developed and tested on Delphi 12.3 and it has been tested in Delphi 6, Delphi XE, Delphi 10, Delphi 11 and Lazarus 4.2/FPC 3.2.2. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components. | ||||
|  | ||||
| CEF4Delphi demos have been tested in Windows 10, Windows 11, Linux Mint 22.1 and Raspberry Pi OS. | ||||
| CEF4Delphi demos have been tested in Windows 10, Windows 11, Linux Mint 22.2 and Raspberry Pi OS. | ||||
|  | ||||
| ## Links | ||||
| * [Installation instructions and more information about CEF4Delphi](https://www.briskbard.com/index.php?lang=en&pageid=cef) | ||||
|   | ||||
| @@ -15,8 +15,6 @@ type | ||||
|     private                      | ||||
|       FCanClose     : boolean; | ||||
|       FClosing      : boolean; | ||||
|       FInitializing : boolean; | ||||
|       FLoading      : boolean; | ||||
|       FWindow       : PGtkWidget; | ||||
|       FChromium     : TChromium; | ||||
|  | ||||
| @@ -63,6 +61,30 @@ function StartMainProcess: boolean; | ||||
|  | ||||
| implementation | ||||
|  | ||||
| // This demo is a rough and incomplete translation of the official cefclient | ||||
| // application for GTK3. | ||||
|  | ||||
| // There are several missing features and pending issues. This demo was just | ||||
| // used to test the CEF initialization in GTK3 using low level API functions in | ||||
| // Lazarus. | ||||
|  | ||||
| // If you need to add a CEF browser to your GTK3 application then use the code | ||||
| // in SimpleOSRBrowser. | ||||
|  | ||||
| // Trying to use the GTK3 WidgetSet in Lazarus to initialize CEF is not possible | ||||
| // at this moment because: | ||||
| // - GTK >3.15.1 uses an X11 visual optimized for GTK+'s OpenGL stuff which | ||||
| //   breaks CEF/Chromium. | ||||
| // - It's necessary to call the UseDefaultX11VisualForGtk procedure before the | ||||
| //   GtkWindow is realized to use the default X11 visual. | ||||
| // - TGtk3Window.CreateWidget (Gtk3Widgets.pas) realizes the window almost | ||||
| //   immediately after its creation. | ||||
|  | ||||
| // At this point we can only wait until the CEF/Chromium requirements change. | ||||
| // Perhaps with Wayland support. | ||||
|  | ||||
| // Meanwhile GTK3 applications can use CEF browsers in OSR mode only. | ||||
|  | ||||
| var | ||||
|   MainAppEvent : TEventObject = nil; | ||||
|  | ||||
| @@ -151,8 +173,6 @@ begin | ||||
|  | ||||
|   FCanClose              := False; | ||||
|   FClosing               := False; | ||||
|   FInitializing          := True; | ||||
|   FLoading               := False; | ||||
|   FWindow                := nil; | ||||
|   FChromium              := nil; | ||||
| end; | ||||
| @@ -195,6 +215,7 @@ procedure TMainWindow.Show; | ||||
| begin | ||||
|   // Show the GTK window. | ||||
|   UseDefaultX11VisualForGtk(FWindow); | ||||
|  | ||||
|   gtk_widget_show_all(FWindow); | ||||
|  | ||||
|   // Flush the display to make sure the underlying X11 window gets created | ||||
| @@ -235,13 +256,20 @@ end; | ||||
| {%Region} | ||||
| procedure TMainWindow.OnAfterCreated(Sender: TObject; const browser: ICefBrowser); | ||||
| begin | ||||
|   TThread.Synchronize(nil, @DoAfterCreated); | ||||
|   if GlobalCEFApp.MultiThreadedMessageLoop then | ||||
|     TThread.Synchronize(nil, @DoAfterCreated) | ||||
|    else | ||||
|     DoAfterCreated; | ||||
| end; | ||||
|  | ||||
| procedure TMainWindow.OnBeforeClose(Sender: TObject; const browser: ICefBrowser); | ||||
| begin | ||||
|   FCanClose := True; | ||||
|   TThread.Synchronize(nil, @DoBeforeClose); | ||||
|  | ||||
|   if GlobalCEFApp.MultiThreadedMessageLoop then | ||||
|     TThread.Synchronize(nil, @DoBeforeClose) | ||||
|    else | ||||
|     DoBeforeClose; | ||||
| end;               | ||||
|  | ||||
| procedure TMainWindow.OnBeforePopup(Sender: TObject; | ||||
|   | ||||
| @@ -65,10 +65,8 @@ procedure gdk_set_allowed_backends(const backends: PGchar); cdecl; external 'lib | ||||
| function gdk_x11_display_get_xdisplay(display: PGdkDisplay): PDisplay; cdecl; external 'libgdk-3.so.0'; | ||||
| function gdk_x11_screen_get_screen_number(screen: PGdkScreen): longint; cdecl; external 'libgdk-3.so.0'; | ||||
| function gdk_x11_visual_get_xvisual(visual: PGdkVisual): PVisual; cdecl; external 'libgdk-3.so.0'; | ||||
| procedure UseDefaultX11VisualForGtk(widget : PGtkWidget); overload; | ||||
| procedure UseDefaultX11VisualForGtk(aHandle : TCefWindowHandle); overload; | ||||
| procedure FlushDisplay(widget : PGtkWidget); overload; | ||||
| procedure FlushDisplay(aHandle : TCefWindowHandle); overload; | ||||
| procedure UseDefaultX11VisualForGtk(widget : PGtkWidget);  | ||||
| procedure FlushDisplay(widget : PGtkWidget);  | ||||
| {$ENDIF} | ||||
| procedure ShowX11Message(const aMessage : string); | ||||
| {$ENDIF}{$ENDIF} | ||||
| @@ -735,11 +733,6 @@ begin | ||||
|   g_list_free(visuals); | ||||
| end; | ||||
|  | ||||
| procedure UseDefaultX11VisualForGtk(aHandle : TCefWindowHandle); | ||||
| begin | ||||
|   UseDefaultX11VisualForGtk(TGtk3Widget(aHandle).Widget); | ||||
| end; | ||||
|  | ||||
| procedure FlushDisplay(widget : PGtkWidget); | ||||
| var | ||||
|   gdk_window : PGdkWindow; | ||||
| @@ -749,11 +742,6 @@ begin | ||||
|   display    := gdk_window_get_display(gdk_window); | ||||
|   gdk_display_flush(display); | ||||
| end; | ||||
|  | ||||
| procedure FlushDisplay(aHandle : TCefWindowHandle); | ||||
| begin | ||||
|   FlushDisplay(TGtk3Widget(aHandle).Widget); | ||||
| end; | ||||
| {$ENDIF} | ||||
| {$ENDIF} | ||||
|  | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|   "UpdateLazPackages" : [ | ||||
|     { | ||||
|       "ForceNotify" : true, | ||||
|       "InternalVersion" : 780, | ||||
|       "InternalVersion" : 781, | ||||
|       "Name" : "cef4delphi_lazarus.lpk", | ||||
|       "Version" : "139.0.38" | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user