mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 04:49:19 +02:00
* more unicode fixes
git-svn-id: branches/unicodekvm@48622 -
This commit is contained in:
parent
829404a957
commit
be726fdd09
@ -1607,15 +1607,15 @@ Delta, Anchor, OldCurPos, OldFirstPos, OldSelStart, OldSelEnd: Sw_Integer;
|
|||||||
if Mouse.X < 1 then Mouse.X := 1;
|
if Mouse.X < 1 then Mouse.X := 1;
|
||||||
Pos := Mouse.X + FirstPos - 1;
|
Pos := Mouse.X + FirstPos - 1;
|
||||||
if Pos < 0 then Pos := 0;
|
if Pos < 0 then Pos := 0;
|
||||||
if Pos > Length(Data^) then Pos := Length(Data^);
|
if Pos > Length(Data Sw_PString_DeRef) then Pos := Length(Data Sw_PString_DeRef);
|
||||||
MousePos := Pos;
|
MousePos := Pos;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
PROCEDURE DeleteSelect;
|
PROCEDURE DeleteSelect;
|
||||||
BEGIN
|
BEGIN
|
||||||
If (SelStart <> SelEnd) Then Begin { An area selected }
|
If (SelStart <> SelEnd) Then Begin { An area selected }
|
||||||
If (Data <> Nil) Then
|
If Data <> Sw_PString_Empty Then
|
||||||
Delete(Data^, SelStart+1, SelEnd-SelStart); { Delete the text }
|
Delete(Data Sw_PString_DeRef, SelStart+1, SelEnd-SelStart); { Delete the text }
|
||||||
CurPos := SelStart; { Set cursor position }
|
CurPos := SelStart; { Set cursor position }
|
||||||
End;
|
End;
|
||||||
END;
|
END;
|
||||||
@ -1634,20 +1634,20 @@ Delta, Anchor, OldCurPos, OldFirstPos, OldSelStart, OldSelEnd: Sw_Integer;
|
|||||||
PROCEDURE SaveState;
|
PROCEDURE SaveState;
|
||||||
BEGIN
|
BEGIN
|
||||||
If (Validator <> Nil) Then Begin { Check for validator }
|
If (Validator <> Nil) Then Begin { Check for validator }
|
||||||
If (Data <> Nil) Then OldData := Data^; { Hold data }
|
If Data <> Sw_PString_Empty Then OldData := Data Sw_PString_DeRef; { Hold data }
|
||||||
OldCurPos := CurPos; { Hold cursor position }
|
OldCurPos := CurPos; { Hold cursor position }
|
||||||
OldFirstPos := FirstPos; { Hold first position }
|
OldFirstPos := FirstPos; { Hold first position }
|
||||||
OldSelStart := SelStart; { Hold select start }
|
OldSelStart := SelStart; { Hold select start }
|
||||||
OldSelEnd := SelEnd; { Hold select end }
|
OldSelEnd := SelEnd; { Hold select end }
|
||||||
If (Data = Nil) Then WasAppending := True { Invalid data ptr }
|
If Data = Sw_PString_Empty Then WasAppending := True { Invalid data ptr }
|
||||||
Else WasAppending := Length(Data^) = CurPos; { Hold appending state }
|
Else WasAppending := Length(Data Sw_PString_DeRef) = CurPos; { Hold appending state }
|
||||||
End;
|
End;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
PROCEDURE RestoreState;
|
PROCEDURE RestoreState;
|
||||||
BEGIN
|
BEGIN
|
||||||
If (Validator <> Nil) Then Begin { Validator valid }
|
If (Validator <> Nil) Then Begin { Validator valid }
|
||||||
If (Data <> Nil) Then Data^ := OldData; { Restore data }
|
If Data <> Sw_PString_Empty Then Data Sw_PString_DeRef := OldData; { Restore data }
|
||||||
CurPos := OldCurPos; { Restore cursor pos }
|
CurPos := OldCurPos; { Restore cursor pos }
|
||||||
FirstPos := OldFirstPos; { Restore first pos }
|
FirstPos := OldFirstPos; { Restore first pos }
|
||||||
SelStart := OldSelStart; { Restore select start }
|
SelStart := OldSelStart; { Restore select start }
|
||||||
@ -1656,29 +1656,29 @@ Delta, Anchor, OldCurPos, OldFirstPos, OldSelStart, OldSelEnd: Sw_Integer;
|
|||||||
END;
|
END;
|
||||||
|
|
||||||
FUNCTION CheckValid (NoAutoFill: Boolean): Boolean;
|
FUNCTION CheckValid (NoAutoFill: Boolean): Boolean;
|
||||||
VAR OldLen: Sw_Integer; NewData: String;
|
VAR OldLen: Sw_Integer; NewData: Sw_String;
|
||||||
BEGIN
|
BEGIN
|
||||||
If (Validator <> Nil) Then Begin { Validator valid }
|
If (Validator <> Nil) Then Begin { Validator valid }
|
||||||
CheckValid := False; { Preset false return }
|
CheckValid := False; { Preset false return }
|
||||||
If (Data <> Nil) Then OldLen := Length(Data^); { Hold old length }
|
If Data <> Sw_PString_Empty Then OldLen := Length(Data Sw_PString_DeRef); { Hold old length }
|
||||||
If (Validator^.Options AND voOnAppend = 0) OR
|
If (Validator^.Options AND voOnAppend = 0) OR
|
||||||
(WasAppending AND (CurPos = OldLen)) Then Begin
|
(WasAppending AND (CurPos = OldLen)) Then Begin
|
||||||
If (Data <> Nil) Then NewData := Data^ { Hold current data }
|
If Data <> Sw_PString_Empty Then NewData := Data Sw_PString_DeRef { Hold current data }
|
||||||
Else NewData := ''; { Set empty string }
|
Else NewData := ''; { Set empty string }
|
||||||
If NOT Validator^.IsValidInput(NewData,
|
If NOT Validator^.IsValidInput(NewData,
|
||||||
NoAutoFill) Then RestoreState Else Begin
|
NoAutoFill) Then RestoreState Else Begin
|
||||||
If (Length(NewData) > MaxLen) Then { Exceeds maximum }
|
If (Length(NewData) > MaxLen) Then { Exceeds maximum }
|
||||||
SetLength(NewData, MaxLen); { Set string length }
|
SetLength(NewData, MaxLen); { Set string length }
|
||||||
If (Data <> Nil) Then Data^ := NewData; { Set data value }
|
If Data <> Sw_PString_Empty Then Data Sw_PString_DeRef := NewData; { Set data value }
|
||||||
If (Data <> Nil) AND (CurPos >= OldLen) { Cursor beyond end }
|
If (Data <> Sw_PString_Empty) AND (CurPos >= OldLen) { Cursor beyond end }
|
||||||
AND (Length(Data^) > OldLen) Then { Cursor beyond string }
|
AND (Length(Data Sw_PString_DeRef) > OldLen) Then { Cursor beyond string }
|
||||||
CurPos := Length(Data^); { Set cursor position }
|
CurPos := Length(Data Sw_PString_DeRef); { Set cursor position }
|
||||||
CheckValid := True; { Return true result }
|
CheckValid := True; { Return true result }
|
||||||
End;
|
End;
|
||||||
End Else Begin
|
End Else Begin
|
||||||
CheckValid := True; { Preset true return }
|
CheckValid := True; { Preset true return }
|
||||||
If (CurPos = OldLen) AND (Data <> Nil) Then { Lengths match }
|
If (CurPos = OldLen) AND (Data <> Sw_PString_Empty) Then { Lengths match }
|
||||||
If NOT Validator^.IsValidInput(Data^,
|
If NOT Validator^.IsValidInput(Data Sw_PString_DeRef,
|
||||||
False) Then Begin { Check validator }
|
False) Then Begin { Check validator }
|
||||||
Validator^.Error; { Call error }
|
Validator^.Error; { Call error }
|
||||||
CheckValid := False; { Return false result }
|
CheckValid := False; { Return false result }
|
||||||
|
Loading…
Reference in New Issue
Block a user