秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

CEF4Delphi for lazarus在gtk3可以输入中文:
2025-01-02:
CEF 131最新版本不用按以下方法修改就可以使用。

测试环境:
树莓派5(aarch64)
CEF4Delphi-104.0.5112.102
lazarus 4.0RC1  fpc 3.3.1
1)系统安装gtk3:

sudo apt install libgtk-3-dev

2)修改cef源码
打开uCEFLinuxFunctions.pas
将 Gdk3_library改为ibgtk-3.so.0(红色代码部分)

function gdk_screen_width:gint; cdecl; external 'libgdk-3.so';
function gdk_screen_width_mm:gint; cdecl; external 'libgdk-3.so';
function gdk_screen_get_default:PGdkScreen; cdecl; external 'libgdk-3.so';
function gdk_screen_get_resolution(screen:PGdkScreen):gdouble; cdecl; external 'libgdk-3.so';
{$ENDIF}
{$IFDEF FPC}
{$IFDEF LCLGTK3}
function gdk_x11_window_get_xid(window: PGdkWindow): TWindow; cdecl; external 'libgtk-3.so.0';
function gdk_x11_get_default_xdisplay: PDisplay; cdecl; external 'libgtk-3.so.0';
procedure gdk_set_allowed_backends(const backends: PGchar); cdecl; external 'libgtk-3.so.0';
{$ENDIF}
procedure ShowX11Message(const aMessage : string);
{$ENDIF}{$ENDIF}

implementation

uses
  {$IFDEF DELPHI16_UP}
  System.SysUtils,

找到GetCefStateModifiers,按下面代码修改:

function GetCefStateModifiers(state : uint32) : integer;
begin
  Result := EVENTFLAG_NONE;

  if ((uint32(state) and uint32(GDK_SHIFT_MASK)) <> 0) then
    Result := Result or EVENTFLAG_SHIFT_DOWN;

  if ((uint32(state) and uint32(GDK_LOCK_MASK)) <> 0) then
    Result := Result or EVENTFLAG_CAPS_LOCK_ON;

  if ((uint32(state) and uint32(GDK_CONTROL_MASK)) <> 0) then
    Result := Result or EVENTFLAG_CONTROL_DOWN;

  if ((uint32(state) and uint32(GDK_MOD1_MASK)) <> 0) then
    Result := Result or EVENTFLAG_ALT_DOWN;

  if ((uint32(state) and uint32(GDK_BUTTON1_MASK)) <> 0) then
    Result := Result or EVENTFLAG_LEFT_MOUSE_BUTTON;

  if ((uint32(state) and uint32(GDK_BUTTON2_MASK)) <> 0) then
    Result := Result or EVENTFLAG_MIDDLE_MOUSE_BUTTON;

  if ((uint32(state) and uint32(GDK_BUTTON3_MASK)) <> 0) then
    Result := Result or EVENTFLAG_RIGHT_MOUSE_BUTTON;
end;

重新编译cef4delphi_lazarus.lpk
3)设置CEF应用为GTK3

 然后重新编译CEF应用就可以。

这篇博客就是用CEF4Delphi自带的demo--TinyBrowser2编辑的。

 

posted on 2024-12-31 14:38  秋·风  阅读(289)  评论(2)    收藏  举报