mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-10 18:17:18 +02:00
LCL: Support autocompletion in TComboBox for single-letter text, too. Issue #34566, patch from Serge Anvarov.
git-svn-id: trunk@59651 -
This commit is contained in:
parent
235888a37d
commit
af653f96cb
@ -545,6 +545,7 @@ procedure TCustomComboBox.KeyUp(var Key: Word; Shift: TShiftState);
|
||||
var
|
||||
iSelStart: Integer; // char position
|
||||
sCompleteText, sPrefixText, sResultText: string;
|
||||
Utf8TextLen: Integer;
|
||||
begin
|
||||
if DroppingDown then
|
||||
begin
|
||||
@ -576,23 +577,25 @@ begin
|
||||
iSelStart := SelStart;//Capture original cursor position
|
||||
//DebugLn(['TCustomComboBox.UTF8KeyPress SelStart=',SelStart,' Text=',Text]);
|
||||
//End of line completion
|
||||
if ((iSelStart < UTF8Length(Text)) and
|
||||
(cbactEndOfLineComplete in FAutoCompleteText)) then
|
||||
Utf8TextLen := UTF8Length(Text);
|
||||
if (iSelStart < Utf8TextLen) and (cbactEndOfLineComplete in FAutoCompleteText) then
|
||||
Exit;
|
||||
sPrefixText := UTF8Copy(Text, 1, iSelStart);
|
||||
sCompleteText := GetCompleteText(Text, iSelStart,
|
||||
(cbactSearchCaseSensitive in FAutoCompleteText),
|
||||
(cbactSearchAscending in FAutoCompleteText), Items);
|
||||
cbactSearchCaseSensitive in FAutoCompleteText,
|
||||
cbactSearchAscending in FAutoCompleteText, Items);
|
||||
//DebugLn(['TCustomComboBox.UTF8KeyPress sCompleteText=',sCompleteText,' Text=',Text]);
|
||||
if (sCompleteText <> Text) then
|
||||
if (sCompleteText <> Text) or (Utf8TextLen = 1) then
|
||||
begin
|
||||
sResultText := sCompleteText;
|
||||
if ((cbactEndOfLineComplete in FAutoCompleteText) and
|
||||
(cbactRetainPrefixCase in FAutoCompleteText)) then
|
||||
begin//Retain Prefix Character cases
|
||||
if (cbactEndOfLineComplete in FAutoCompleteText)
|
||||
and (cbactRetainPrefixCase in FAutoCompleteText) then
|
||||
begin //Retain Prefix Character cases
|
||||
UTF8Delete(sResultText, 1, iSelStart);
|
||||
UTF8Insert(sPrefixText, sResultText, 1);
|
||||
end;
|
||||
if Utf8TextLen = 1 then
|
||||
Text := '';
|
||||
Text := sResultText;
|
||||
SelStart := iSelStart;
|
||||
SelLength := UTF8Length(Text);
|
||||
@ -602,7 +605,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TCustomComboBox.UTF8KeyPress(var UTF8Key: TUTF8Char);
|
||||
begin
|
||||
//First invoke OnUtf8KeyPress, or else CharCase may be reverted again
|
||||
|
Loading…
Reference in New Issue
Block a user