From 424a32b9f5087ec42dc778797d71782e4f5ca5b4 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Sun, 2 Aug 2009 23:32:49 +0200 Subject: Implements Up Arrow key navigation in TextEdit component. Signed-off-by: Graeme Geldenhuys --- prototypes/textedit/fpg_textedit.pas | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'prototypes') diff --git a/prototypes/textedit/fpg_textedit.pas b/prototypes/textedit/fpg_textedit.pas index fcc14626..d076f056 100644 --- a/prototypes/textedit/fpg_textedit.pas +++ b/prototypes/textedit/fpg_textedit.pas @@ -779,6 +779,42 @@ procedure TfpgBaseTextEdit.KeyboardCaretNav(const ShiftState: TShiftState; const keyUp: begin + if CaretPos.x = 0 then Exit; + if not (ssShift in ShiftState) and not (ssCtrl in ShiftState) then + begin + CaretPos.Y := CaretPos.Y - 1; + if FSelected then + begin + FSelected := False; + Exit; + end; + FSelStartNo := CaretPos.Y; + Exit; + end; + if (ssCtrl in ShiftState) and not (ssShift in ShiftState) then + begin + CaretPos.Y := CaretPos.Y - 1; + UpdateScrollBars; + FSelStartNo := CaretPos.Y; + Exit; + end; + if not (ssCtrl in ShiftState) and (ssShift in ShiftState) then + begin + CaretPos.Y := CaretPos.Y - 1; + if not FSelected then + begin + FSelStartNo := CaretPos.Y + 1; + FSelStartOffs := CaretPos.X; + FSelEndNo := CaretPos.X; + FSelEndOffs := CaretPos.X; + FSelected := True; + end else + begin + FSelEndNo := CaretPos.Y; + FSelEndOffs := CaretPos.X; + FSelected := (FSelStartNo <> FSelEndNo) or (FSelStartOffs <> FSelEndOffs); + end; + end; end; keyDown: -- cgit v1.2.3-54-g00ecf