summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/corelib/fpg_base.pas64
-rw-r--r--src/gui/fpg_edit.pas33
-rw-r--r--src/gui/fpg_editcombo.pas33
-rw-r--r--src/gui/fpg_memo.pas33
4 files changed, 90 insertions, 73 deletions
diff --git a/src/corelib/fpg_base.pas b/src/corelib/fpg_base.pas
index 07d44191..f3e8f6db 100644
--- a/src/corelib/fpg_base.pas
+++ b/src/corelib/fpg_base.pas
@@ -747,8 +747,6 @@ type
{ Keyboard }
function KeycodeToText(AKey: Word; AShiftState: TShiftState): string;
function CheckClipboardKey(AKey: Word; AShiftstate: TShiftState): TClipboardKeyType;
-function UseDeadKey(AChar: TfpgChar; AKey: word): TfpgChar;
-function ReadDeadKey(AKey: word): integer;
{ Color }
function fpgColorToRGBTriple(const AColor: TfpgColor): TRGBTriple;
@@ -973,68 +971,6 @@ begin
end { if/else }
end;
-function UseDeadKey(AChar: TfpgChar; AKey: word): TfpgChar;
-begin
- case AKey of
- keyDeadCircumflex:
- case AChar of
- 'a':
- Result:= 'â';
- 'e':
- Result:= 'ê';
- 'i':
- Result:= 'î';
- 'o':
- Result:= 'ô';
- 'u':
- Result:= 'û';
- 'A':
- Result:= 'Â';
- 'E':
- Result:= 'Ê';
- 'I':
- Result:= 'Î';
- 'O':
- Result:= 'Ô';
- 'U':
- Result:= 'Û';
- end;
- keyDeadDiaeresis:
- case AChar of
- 'a':
- Result:= 'ä';
- 'e':
- Result:= 'ë';
- 'i':
- Result:= 'ï';
- 'o':
- Result:= 'ö';
- 'u':
- Result:= 'ü';
- 'A':
- Result:= 'Ä';
- 'E':
- Result:= 'Ë';
- 'I':
- Result:= 'Ï';
- 'O':
- Result:= 'Ö';
- 'U':
- Result:= 'Ü';
- end;
- end;
-end;
-
-function ReadDeadKey(AKey: word): integer;
-begin
- case AKey of
- keyDeadCircumflex, keyDeadDiaeresis:
- Result := AKey;
- else
- Result := -1;
- end;
-end;
-
function fpgColorToRGBTriple(const AColor: TfpgColor): TRGBTriple;
begin
with Result do
diff --git a/src/gui/fpg_edit.pas b/src/gui/fpg_edit.pas
index 21e6895e..01c52d4c 100644
--- a/src/gui/fpg_edit.pas
+++ b/src/gui/fpg_edit.pas
@@ -758,7 +758,34 @@ begin
prevval := Text;
if FDeadKeyChar> -1 then
begin
- AText:= UseDeadKey(AText, FDeadKeyChar);
+ case FDeadKeyChar of
+ keyDeadDiaeresis:
+ case AText of
+ 'a':
+ AText:= 'â';
+ 'e':
+ AText:= 'ë';
+ 'i':
+ AText:= 'ï';
+ 'o':
+ AText:= 'ö';
+ 'u':
+ AText:= 'ü';
+ end;
+ keyDeadCircumflex:
+ case AText of
+ 'a':
+ AText:= 'â';
+ 'e':
+ AText:= 'ê';
+ 'i':
+ AText:= 'î';
+ 'o':
+ AText:= 'ô';
+ 'u':
+ AText:= 'û';
+ end;
+ end;
FDeadKeyChar:= -1;
end;
s := AText;
@@ -804,8 +831,8 @@ begin
hasChanged := False;
fpgApplication.HideHint;
- if FDeadKeyChar = -1 then
- FDeadKeyChar:= ReadDeadKey(keycode);
+ if (keycode= keyDeadCircumflex) or (keycode= keyDeadDiaeresis) then
+ FDeadKeyChar:= keycode;
Consumed := True;
case CheckClipBoardKey(keycode, shiftstate) of
diff --git a/src/gui/fpg_editcombo.pas b/src/gui/fpg_editcombo.pas
index 9145d641..72b804ef 100644
--- a/src/gui/fpg_editcombo.pas
+++ b/src/gui/fpg_editcombo.pas
@@ -526,7 +526,34 @@ begin
prevval := FText;
if FDeadKeyChar> -1 then
begin
- AText:= UseDeadKey(AText, FDeadKeyChar);
+ case FDeadKeyChar of
+ keyDeadDiaeresis:
+ case AText of
+ 'a':
+ AText:= 'â';
+ 'e':
+ AText:= 'ë';
+ 'i':
+ AText:= 'ï';
+ 'o':
+ AText:= 'ö';
+ 'u':
+ AText:= 'ü';
+ end;
+ keyDeadCircumflex:
+ case AText of
+ 'a':
+ AText:= 'â';
+ 'e':
+ AText:= 'ê';
+ 'i':
+ AText:= 'î';
+ 'o':
+ AText:= 'ô';
+ 'u':
+ AText:= 'û';
+ end;
+ end;
FDeadKeyChar:= -1;
end;
s := AText;
@@ -590,8 +617,8 @@ var
begin
hasChanged := False;
- if FDeadKeyChar = -1 then
- FDeadKeyChar:= ReadDeadKey(keycode);
+ if (keycode= 58536) or (keycode= 58462) then
+ FDeadKeyChar:= keycode;
if not Enabled then
consumed := False
diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas
index 2769e4d4..c0b227ae 100644
--- a/src/gui/fpg_memo.pas
+++ b/src/gui/fpg_memo.pas
@@ -1064,7 +1064,34 @@ begin
prevval := Text;
if FDeadKeyChar> -1 then
begin
- AText:= UseDeadKey(AText, FDeadKeyChar);
+ case FDeadKeyChar of
+ keyDeadDiaeresis:
+ case AText of
+ 'a':
+ AText:= 'â';
+ 'e':
+ AText:= 'ë';
+ 'i':
+ AText:= 'ï';
+ 'o':
+ AText:= 'ö';
+ 'u':
+ AText:= 'ü';
+ end;
+ keyDeadCircumflex:
+ case AText of
+ 'a':
+ AText:= 'â';
+ 'e':
+ AText:= 'ê';
+ 'i':
+ AText:= 'î';
+ 'o':
+ AText:= 'ô';
+ 'u':
+ AText:= 'û';
+ end;
+ end;
FDeadKeyChar:= -1;
end;
s := AText;
@@ -1115,8 +1142,8 @@ begin
Consumed := True;
hasChanged := False;
- if FDeadKeyChar = -1 then
- FDeadKeyChar:= ReadDeadKey(keycode);
+ if (keycode= 58536) or (keycode= 58462) then
+ FDeadKeyChar:= keycode;
case CheckClipBoardKey(keycode, shiftstate) of
ckCopy: