From 7050dbc7cc93f40db86d5ddf45822a2cde855f29 Mon Sep 17 00:00:00 2001 From: mattias Date: Sun, 17 May 2009 00:03:15 +0000 Subject: [PATCH] synedit: syncompletion: overriding UTF8 keypress git-svn-id: trunk@19992 - --- components/synedit/syncompletion.pas | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/components/synedit/syncompletion.pas b/components/synedit/syncompletion.pas index e0ed2f3fc3..6d1d8378b3 100644 --- a/components/synedit/syncompletion.pas +++ b/components/synedit/syncompletion.pas @@ -311,6 +311,7 @@ type {$ENDIF} procedure EditorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure EditorKeyPress(Sender: TObject; var Key: char); + procedure EditorUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char); function GetPreviousToken(FEditor: TCustomSynEdit): string; function GetFEditor: TCustomSynEdit; function GetEditor(i: integer): TCustomSynEdit; @@ -1283,6 +1284,7 @@ type TRecordUsedToStoreEachEditorVars = record kp: TKeyPressEvent; kd: TKeyEvent; + UTF8KeyPress: TUTF8KeyPressEvent; NoNextKey: boolean; end; PRecordUsedToStoreEachEditorVars = ^TRecordUsedToStoreEachEditorVars; @@ -1530,6 +1532,22 @@ begin end; end; +procedure TSynCompletion.EditorUTF8KeyPress(Sender: TObject; + var UTF8Key: TUTF8Char); +var + i: integer; +begin + i := fEditors.IndexOf(Sender); + if i <> -1 then begin + if TRecordUsedToStoreEachEditorVars(fEditstuffs[i]^).NoNextKey then begin + UTF8Key := #0; + TRecordUsedToStoreEachEditorVars(fEditstuffs[i]^).NoNextKey := false; + end; + if assigned(TRecordUsedToStoreEachEditorVars(fEditstuffs[i]^).UTF8KeyPress) then + TRecordUsedToStoreEachEditorVars(fEditstuffs[i]^).UTF8KeyPress(sender,UTF8Key); + end; +end; + destructor TSynCompletion.Destroy; begin // necessary to get Notification called before fEditors is freed @@ -1562,6 +1580,7 @@ begin fEditors.Add(aEditor); new(p); p^.kp := aEditor.OnKeyPress; + p^.UTF8KeyPress := aEditor.OnUTF8KeyPress; p^.kd := aEditor.OnKeyDown; p^.NoNextKey := false; fEditstuffs.add(p); @@ -1569,6 +1588,7 @@ begin if not (csDesigning in ComponentState) then begin aEditor.OnKeyDown := {$IFDEF FPC}@{$ENDIF}EditorKeyDown; aEditor.OnKeyPress := {$IFDEF FPC}@{$ENDIF}EditorKeyPress; + aEditor.OnUTF8KeyPress := {$IFDEF FPC}@{$ENDIF}EditorUTF8KeyPress; end; end; end;