mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-28 15:20:49 +02:00
fix for TCarbonMemo selection. Returns incorrect values if not focused
git-svn-id: trunk@20775 -
This commit is contained in:
parent
10869b8cdf
commit
1669ec7c1f
@ -55,10 +55,10 @@ type
|
||||
public
|
||||
function GetPreferredSize: TPoint; override;
|
||||
|
||||
function GetSelStart(var ASelStart: Integer): Boolean;
|
||||
function GetSelLength(var ASelLength: Integer): Boolean;
|
||||
function SetSelStart(ASelStart: Integer): Boolean;
|
||||
function SetSelLength(ASelLength: Integer): Boolean;
|
||||
function GetSelStart(var ASelStart: Integer): Boolean; virtual;
|
||||
function GetSelLength(var ASelLength: Integer): Boolean; virtual;
|
||||
function SetSelStart(ASelStart: Integer): Boolean; virtual;
|
||||
function SetSelLength(ASelLength: Integer): Boolean; virtual;
|
||||
|
||||
function GetText(var S: String): Boolean; override;
|
||||
function SetText(const S: String): Boolean; override;
|
||||
@ -174,6 +174,8 @@ type
|
||||
procedure DestroyWidget; override;
|
||||
procedure GetLineOffset(AIndex: Integer; out AStart, AEnd: TXNOffset);
|
||||
function GetCreationOptions: TXNFrameOptions; virtual;
|
||||
function GetTXNSelection(var iStart, iEnd: Integer): Boolean;
|
||||
function SetTXNSelection(iStart, iEnd: Integer): Boolean;
|
||||
public
|
||||
procedure TextDidChange; override;
|
||||
function GetTextObject: TXNObject;
|
||||
@ -182,6 +184,11 @@ type
|
||||
|
||||
function SetTXNControl(Tag: TXNControlTag; const Data: TXNControlData): Boolean;
|
||||
public
|
||||
function GetSelStart(var ASelStart: Integer): Boolean; override;
|
||||
function GetSelLength(var ASelLength: Integer): Boolean; override;
|
||||
function SetSelStart(ASelStart: Integer): Boolean; override;
|
||||
function SetSelLength(ASelLength: Integer): Boolean; override;
|
||||
|
||||
procedure SetAlignment(AAlignment: TAlignment);
|
||||
procedure SetColor(const AColor: TColor); override;
|
||||
procedure SetFont(const AFont: TFont); override;
|
||||
@ -1536,6 +1543,69 @@ begin
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
function TCarbonMemo.GetTXNSelection(var iStart, iEnd: Integer): Boolean;
|
||||
var
|
||||
ist, ien : TXNOffset;
|
||||
begin
|
||||
TXNGetSelection(HITextViewGetTXNObject(ControlRef(Widget)), ist, ien);
|
||||
iStart := Integer(ist);
|
||||
iEnd := Integer(ien);
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
function TCarbonMemo.SetTXNSelection(iStart, iEnd: Integer): Boolean;
|
||||
begin
|
||||
Result := not OSError( TXNSetSelection( HITextViewGetTXNObject(Widget), iStart, iEnd),
|
||||
Self, 'SetSelSTart', 'SetTXNSelection', '');
|
||||
if Result then Invalidate(nil);
|
||||
end;
|
||||
|
||||
function TCarbonMemo.GetSelStart(var ASelStart: Integer): Boolean;
|
||||
var
|
||||
iEnd : Integer;
|
||||
begin
|
||||
Result := GetTXNSelection(ASelStart, iEnd);
|
||||
end;
|
||||
|
||||
function TCarbonMemo.GetSelLength(var ASelLength: Integer): Boolean;
|
||||
var
|
||||
iStart : integer;
|
||||
begin
|
||||
Result := GetTXNSelection(iStart, ASelLength);
|
||||
dec(ASelLength, iStart);
|
||||
end;
|
||||
|
||||
function TCarbonMemo.SetSelStart(ASelStart: Integer): Boolean;
|
||||
var
|
||||
iStart : integer;
|
||||
iEnd : integer;
|
||||
begin
|
||||
Result := GetTXNSelection(iStart, iEnd);
|
||||
if not Result then
|
||||
begin
|
||||
iStart := 0;
|
||||
iEnd := iStart;
|
||||
Result := true;
|
||||
end;
|
||||
Result := SetTXNSelection(ASelStart, ASelStart+iEnd-iStart);
|
||||
end;
|
||||
|
||||
function TCarbonMemo.SetSelLength(ASelLength: Integer): Boolean;
|
||||
var
|
||||
iStart : integer;
|
||||
iEnd : integer;
|
||||
begin
|
||||
Result := GetTXNSelection(iStart, iEnd);
|
||||
if not Result then
|
||||
begin
|
||||
iStart := 0;
|
||||
Result := true;
|
||||
end;
|
||||
if ASelLength < 0 then iEnd := kTXNEndOffset
|
||||
else iEnd := iStart + ASelLength;
|
||||
Result := SetTXNSelection(iStart, iEnd);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Method: TCarbonMemo.SetAlignment
|
||||
Params: AAlignment - New alignment
|
||||
|
Loading…
Reference in New Issue
Block a user