Browse Source

+ TInputLine unicode keyboard text input fixed

git-svn-id: branches/unicodekvm@48788 -
nickysn 4 years ago
parent
commit
fe7324a04c
1 changed files with 27 additions and 0 deletions
  1. 27 0
      packages/fv/src/dialogs.inc

+ 27 - 0
packages/fv/src/dialogs.inc

@@ -1765,6 +1765,32 @@ BEGIN
            End;
            End;
            kbIns: SetState(sfCursorIns, State AND
            kbIns: SetState(sfCursorIns, State AND
              sfCursorIns = 0);                        { Flip insert state }
              sfCursorIns = 0);                        { Flip insert state }
+{$ifdef FV_UNICODE}
+           Else Case Event.UnicodeChar Of
+             ' '..#$FFFF:   { Character key }
+               Begin
+                 If (State AND sfCursorIns <> 0) Then
+                   Delete(Data Sw_PString_DeRef, CurPos + 1, 1) Else    { Overwrite character }
+                   DeleteSelect;                        { Deselect selected }
+                 If CheckValid(True) Then Begin         { Check data valid }
+                   If (Length(Data Sw_PString_DeRef) < MaxLen) Then     { Must not exceed maxlen }
+                   Begin
+                     If (FirstPos > CurPos) Then
+                       FirstPos := CurPos;              { Advance first position }
+                     Inc(CurPos);                       { Increment cursor }
+                     Insert(Event.UnicodeChar, Data Sw_PString_DeRef,
+                       CurPos);                         { Insert the character }
+                   End;
+                   CheckValid(False);                   { Check data valid }
+                 End;
+               End;
+             ^Y: If Data <> Sw_PString_Empty Then Begin          { Clear all data }
+                Data Sw_PString_DeRef := '';          { Set empty string }
+                CurPos := 0;                          { Cursor to start }
+             End;
+             Else Exit;                               { Unused key }
+           End
+{$else FV_UNICODE}
            Else Case Event.CharCode Of
            Else Case Event.CharCode Of
              ' '..#255: If Data <> Sw_PString_Empty Then Begin   { Character key }
              ' '..#255: If Data <> Sw_PString_Empty Then Begin   { Character key }
                If (State AND sfCursorIns <> 0) Then
                If (State AND sfCursorIns <> 0) Then
@@ -1788,6 +1814,7 @@ BEGIN
              End;
              End;
              Else Exit;                               { Unused key }
              Else Exit;                               { Unused key }
            End
            End
+{$endif FV_UNICODE}
          End;
          End;
          If ExtendBlock Then AdjustSelectBlock        { Extended block }
          If ExtendBlock Then AdjustSelectBlock        { Extended block }
          Else Begin
          Else Begin