From ded23f33a1437fe9ce4a90994f283c0047d91d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salvador=20D=C3=ADaz=20Fau?= Date: Sat, 13 Sep 2025 18:23:07 +0200 Subject: [PATCH] Added initial QT support (work in progress) --- source/uCEFLinkedWinControlBase.pas | 12 ++++++------ source/uCEFWinControl.pas | 4 ++-- source/uCEFWindowInfoWrapper.pas | 9 +++++++++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/source/uCEFLinkedWinControlBase.pas b/source/uCEFLinkedWinControlBase.pas index 72c6672c..08eb97ac 100644 --- a/source/uCEFLinkedWinControlBase.pas +++ b/source/uCEFLinkedWinControlBase.pas @@ -47,9 +47,9 @@ type {$IFDEF MSWINDOWS} procedure WndProc(var aMessage: TMessage); override; {$ENDIF} - {$IFDEF LCLGTK3} + {$IF DEFINED(LCLQT) OR DEFINED(LCLQT5) OR DEFINED(LCLQT6) OR DEFINED(LCLGTK3)} procedure Paint; override; - {$ENDIF} + {$IFEND} /// /// TChromium instance used by this component. /// @@ -76,13 +76,13 @@ begin {$IFDEF MSWINDOWS} FUseSetFocus := True; {$ENDIF} - {$IFDEF LCLGTK3} + {$IF DEFINED(LCLQT) OR DEFINED(LCLQT5) OR DEFINED(LCLQT6) OR DEFINED(LCLGTK3)} BevelOuter := bvNone; BevelWidth := 0; Caption := ''; ControlStyle := ControlStyle - [csNoFocus]; TabStop := True; - {$ENDIF} + {$IFEND} end; {$IFDEF MSWINDOWS} @@ -97,13 +97,13 @@ begin end; {$ENDIF} -{$IFDEF LCLGTK3} +{$IF DEFINED(LCLQT) OR DEFINED(LCLQT5) OR DEFINED(LCLQT6) OR DEFINED(LCLGTK3)} procedure TCEFLinkedWinControlBase.Paint; begin if (Chromium = nil) or not(Chromium.Initialized) then inherited Paint; end; -{$ENDIF} +{$IFEND} {$IFDEF FPC} procedure TCEFLinkedWinControlBase.SetVisible(Value: Boolean); diff --git a/source/uCEFWinControl.pas b/source/uCEFWinControl.pas index 4e6a2346..043ef452 100644 --- a/source/uCEFWinControl.pas +++ b/source/uCEFWinControl.pas @@ -19,7 +19,7 @@ uses {$IFDEF MSWINDOWS}WinApi.Windows, {$ENDIF} System.Classes, Vcl.Controls, Vcl.Graphics, {$ELSE} {$IFDEF MSWINDOWS}Windows,{$ENDIF} Classes, Forms, Controls, Graphics, - {$IFDEF LCLGTK3}ExtCtrls,{$ENDIF} + {$IF DEFINED(LCLQT) OR DEFINED(LCLQT5) OR DEFINED(LCLQT6) OR DEFINED(LCLGTK3)}ExtCtrls,{$IFEND} {$IFDEF FPC} LCLProc, LCLType, LCLIntf, LResources, InterfaceBase, {$ENDIF} @@ -33,7 +33,7 @@ type /// /// Custom TWinControl used by CEF browsers. /// - TCEFWinControl = class({$IFDEF LCLGTK3}TCustomPanel{$ELSE}TWinControl{$ENDIF}) + TCEFWinControl = class({$IF DEFINED(LCLQT) OR DEFINED(LCLQT5) OR DEFINED(LCLQT6) OR DEFINED(LCLGTK3)}TCustomPanel{$ELSE}TWinControl{$IFEND}) protected function GetChildWindowHandle : {$IFNDEF MSWINDOWS}{$IFDEF FPC}LclType.{$ENDIF}{$ENDIF}THandle; virtual; procedure Resize; override; diff --git a/source/uCEFWindowInfoWrapper.pas b/source/uCEFWindowInfoWrapper.pas index 22afbf26..a1d91470 100644 --- a/source/uCEFWindowInfoWrapper.pas +++ b/source/uCEFWindowInfoWrapper.pas @@ -237,6 +237,9 @@ uses ctypes, keysym, xf86keysym, x, xlib, {$IFDEF LCLGTK2}gtk2, glib2, gdk2, gtk2proc, gtk2int, Gtk2Def, gdk2x, Gtk2Extra,{$ENDIF} {$IFDEF LCLGTK3}LazGdk3, LazGtk3, LazGLib2, Gtk3Widgets, Gtk3Procs, LazGObject2,{$ENDIF} + {$IFDEF LCLQT}qtwidgets, qt4,{$ENDIF} + {$IFDEF LCLQT5}qtwidgets, qt5,{$ENDIF} + {$IFDEF LCLQT6}qtwidgets, qt6,{$ENDIF} uCEFLinuxFunctions, {$ENDIF}{$ENDIF} uCEFMiscFunctions; @@ -532,6 +535,12 @@ begin TempParent := gdk_x11_window_get_xid(gtk_widget_get_window(TempWidget)); end; {$ENDIF} + {$IF DEFINED(LCLQT) OR DEFINED(LCLQT5) OR DEFINED(LCLQT6)} + if ValidCefWindowHandle(aParent) then + begin + TempParent := QWidget_winId(TQtWidget(aParent).Widget); + end; + {$IFEND} {$ENDIF} aWindowInfo.parent_window := TempParent;