1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-02-02 10:25:26 +02:00

Refactor BufferPanel: Allow inherited classes to hook IME events

This commit is contained in:
martin 2021-03-10 00:09:18 +01:00
parent 80693d87c1
commit 28d4240ace

View File

@ -133,6 +133,11 @@ type
procedure WMIMEEndComp(var aMessage: TMessage); procedure WMIMEEndComp(var aMessage: TMessage);
procedure WMIMESetContext(var aMessage: TMessage); procedure WMIMESetContext(var aMessage: TMessage);
procedure WMIMEComposition(var aMessage: TMessage); procedure WMIMEComposition(var aMessage: TMessage);
procedure DoOnIMECancelComposition; virtual;
procedure DoOnIMECommitText(const aText : ustring; const replacement_range : PCefRange; relative_cursor_pos : integer); virtual;
procedure DoOnIMESetComposition(const aText : ustring; const underlines : TCefCompositionUnderlineDynArray; const replacement_range, selection_range : TCefRange); virtual;
{$ENDIF} {$ENDIF}
public public
@ -735,7 +740,7 @@ end;
procedure TBufferPanel.WMIMEEndComp(var aMessage: TMessage); procedure TBufferPanel.WMIMEEndComp(var aMessage: TMessage);
begin begin
if assigned(FOnIMECancelComposition) then FOnIMECancelComposition(self); DoOnIMECancelComposition;
if (FIMEHandler <> nil) then if (FIMEHandler <> nil) then
begin begin
@ -775,7 +780,7 @@ begin
TempRange.from := high(Integer); TempRange.from := high(Integer);
TempRange.to_ := high(Integer); TempRange.to_ := high(Integer);
FOnIMECommitText(self, TempText, @TempRange, 0); DoOnIMECommitText(TempText, @TempRange, 0);
end; end;
FIMEHandler.ResetComposition; FIMEHandler.ResetComposition;
@ -791,14 +796,14 @@ begin
TempSelection.from := TempCompStart; TempSelection.from := TempCompStart;
TempSelection.to_ := TempCompStart + length(TempText); TempSelection.to_ := TempCompStart + length(TempText);
FOnIMESetComposition(self, TempText, TempUnderlines, TempRange, TempSelection); DoOnIMESetComposition(TempText, TempUnderlines, TempRange, TempSelection);
end; end;
FIMEHandler.UpdateCaretPosition(pred(TempCompStart)); FIMEHandler.UpdateCaretPosition(pred(TempCompStart));
end end
else else
begin begin
if assigned(FOnIMECancelComposition) then FOnIMECancelComposition(self); DoOnIMECancelComposition;
FIMEHandler.ResetComposition; FIMEHandler.ResetComposition;
FIMEHandler.DestroyImeWindow; FIMEHandler.DestroyImeWindow;
@ -812,6 +817,28 @@ begin
end; end;
end; end;
end; end;
procedure TBufferPanel.DoOnIMECancelComposition;
begin
if FOnIMECancelComposition <> nil then
FOnIMECancelComposition(Self);
end;
procedure TBufferPanel.DoOnIMECommitText(const aText: ustring;
const replacement_range: PCefRange; relative_cursor_pos: integer);
begin
if FOnIMECommitText <> nil then
FOnIMECommitText(Self, aText, replacement_range, relative_cursor_pos);
end;
procedure TBufferPanel.DoOnIMESetComposition(const aText: ustring;
const underlines: TCefCompositionUnderlineDynArray; const replacement_range,
selection_range: TCefRange);
begin
if FOnIMESetComposition <> nil then
FOnIMESetComposition(Self, aText, underlines, replacement_range, selection_range);
end;
{$ENDIF} {$ENDIF}
function TBufferPanel.GetBufferBits : pointer; function TBufferPanel.GetBufferBits : pointer;