SynEdit: invalidate if Markup.enable changes. Issue #0028729

git-svn-id: trunk@49891 -
This commit is contained in:
martin 2015-09-29 01:29:20 +00:00
parent 316207d5d9
commit 8c427fe657
7 changed files with 61 additions and 4 deletions

View File

@ -52,6 +52,7 @@ type
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override; procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
procedure DoTextChanged(StartLine, EndLine, ACountDiff: Integer); override; procedure DoTextChanged(StartLine, EndLine, ACountDiff: Integer); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override; procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure DoEnabledChanged(Sender: TObject); override;
procedure DoVisibleChanged(AVisible: Boolean); override; procedure DoVisibleChanged(AVisible: Boolean); override;
public public
constructor Create(ASynEdit: TSynEditBase); constructor Create(ASynEdit: TSynEditBase);
@ -174,6 +175,11 @@ begin
InvalidateBracketHighlight; InvalidateBracketHighlight;
end; end;
procedure TSynEditMarkupBracket.DoEnabledChanged(Sender: TObject);
begin
InvalidateBracketHighlight;
end;
procedure TSynEditMarkupBracket.DoVisibleChanged(AVisible: Boolean); procedure TSynEditMarkupBracket.DoVisibleChanged(AVisible: Boolean);
begin begin
inherited DoVisibleChanged(AVisible); inherited DoVisibleChanged(AVisible);

View File

@ -51,6 +51,8 @@ type
procedure InternalUpdateCtrlMouse; procedure InternalUpdateCtrlMouse;
protected protected
procedure SetLines(const AValue : TSynEditStrings); override; procedure SetLines(const AValue : TSynEditStrings); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure DoEnabledChanged(Sender: TObject); override;
public public
procedure UpdateCtrlState(aShift: TShiftState); procedure UpdateCtrlState(aShift: TShiftState);
procedure UpdateCtrlMouse; procedure UpdateCtrlMouse;
@ -133,8 +135,8 @@ procedure TSynEditMarkupCtrlMouseLink.InternalUpdateCtrlMouse;
procedure doNotShowLink; procedure doNotShowLink;
begin begin
if CtrlMouseLine > 0 then if FCtrlMouseLine >= 0 then
TCustomSynEdit(SynEdit).Invalidate; InvalidateSynLines(FCtrlMouseLine, FCtrlMouseLine);
FCursor := crDefault; FCursor := crDefault;
CtrlMouseLine:=-1; CtrlMouseLine:=-1;
FCtrlLinkable := False; FCtrlLinkable := False;
@ -152,11 +154,13 @@ begin
(NewX2 = CtrlMouseX2) (NewX2 = CtrlMouseX2)
then then
exit; exit;
if (FCtrlMouseLine >= 0) and (FCtrlMouseLine <> NewY) then
InvalidateSynLines(FCtrlMouseLine, FCtrlMouseLine);
FCtrlLinkable := TCustomSynEdit(SynEdit).IsLinkable(NewY, NewX1, NewX2); FCtrlLinkable := TCustomSynEdit(SynEdit).IsLinkable(NewY, NewX1, NewX2);
CtrlMouseLine := fLastMouseCaret.Y; CtrlMouseLine := fLastMouseCaret.Y;
CtrlMouseX1 := NewX1; CtrlMouseX1 := NewX1;
CtrlMouseX2 := NewX2; CtrlMouseX2 := NewX2;
TCustomSynEdit(SynEdit).Invalidate; InvalidateSynLines(FCtrlMouseLine, FCtrlMouseLine);
if FCtrlLinkable then if FCtrlLinkable then
FCursor := crHandPoint FCursor := crHandPoint
else else
@ -238,6 +242,21 @@ begin
end; end;
end; end;
procedure TSynEditMarkupCtrlMouseLink.DoMarkupChanged(AMarkup: TSynSelectedColor
);
begin
inherited DoMarkupChanged(AMarkup);
if FCtrlMouseLine >= 0 then
InvalidateSynLines(FCtrlMouseLine, FCtrlMouseLine);
end;
procedure TSynEditMarkupCtrlMouseLink.DoEnabledChanged(Sender: TObject);
begin
inherited DoEnabledChanged(Sender);
if FCtrlMouseLine >= 0 then
InvalidateSynLines(FCtrlMouseLine, FCtrlMouseLine);
end;
function TSynEditMarkupCtrlMouseLink.GetMarkupAttributeAtRowCol(const aRow: Integer; function TSynEditMarkupCtrlMouseLink.GetMarkupAttributeAtRowCol(const aRow: Integer;
const aStartCol: TLazSynDisplayTokenBound; const AnRtlInfo: TLazSynDisplayRtlInfo): TSynSelectedColor; const aStartCol: TLazSynDisplayTokenBound; const AnRtlInfo: TLazSynDisplayRtlInfo): TSynSelectedColor;
begin begin

View File

@ -147,6 +147,7 @@ type
procedure DoTopLineChanged(OldTopLine : Integer); override; procedure DoTopLineChanged(OldTopLine : Integer); override;
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override; procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override; procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure DoEnabledChanged(Sender: TObject); override;
procedure DoTextChanged(StartLine, EndLine, ACountDiff: Integer); override; // 1 based procedure DoTextChanged(StartLine, EndLine, ACountDiff: Integer); override; // 1 based
procedure DoVisibleChanged(AVisible: Boolean); override; procedure DoVisibleChanged(AVisible: Boolean); override;
function HasVisibleMatch: Boolean; // does not check, if in visible line range. Only Count and DideSingleMatch function HasVisibleMatch: Boolean; // does not check, if in visible line range. Only Count and DideSingleMatch
@ -1968,6 +1969,11 @@ begin
FMarkupEnabled := MarkupInfo.IsEnabled; FMarkupEnabled := MarkupInfo.IsEnabled;
end; end;
procedure TSynEditMarkupHighlightAllBase.DoEnabledChanged(Sender: TObject);
begin
Invalidate;
end;
function TSynEditMarkupHighlightAllBase.GetMatchCount: Integer; function TSynEditMarkupHighlightAllBase.GetMatchCount: Integer;
begin begin
Result := fMatches.Count; Result := fMatches.Count;

View File

@ -46,6 +46,7 @@ type
procedure MarkupChangedIntern(AMarkup: TObject); procedure MarkupChangedIntern(AMarkup: TObject);
protected protected
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override; procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure DoEnabledChanged(Sender: TObject); override;
public public
constructor Create(ASynEdit : TSynEditBase; ASelection: TSynEditSelection); constructor Create(ASynEdit : TSynEditBase; ASelection: TSynEditSelection);
destructor Destroy; override; destructor Destroy; override;
@ -106,6 +107,11 @@ begin
InvalidateSynLines(p1.y, p2.y); InvalidateSynLines(p1.y, p2.y);
end; end;
procedure TSynEditMarkupSelection.DoEnabledChanged(Sender: TObject);
begin
DoMarkupChanged(nil);
end;
constructor TSynEditMarkupSelection.Create(ASynEdit : TSynEditBase; ASelection: TSynEditSelection); constructor TSynEditMarkupSelection.Create(ASynEdit : TSynEditBase; ASelection: TSynEditSelection);
begin begin
inherited Create(ASynEdit); inherited Create(ASynEdit);

View File

@ -42,6 +42,7 @@ type
procedure SetVisibleSpecialChars(AValue: TSynVisibleSpecialChars); procedure SetVisibleSpecialChars(AValue: TSynVisibleSpecialChars);
protected protected
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override; procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure DoEnabledChanged(Sender: TObject); override;
function IsSpecial(pos: Integer): Boolean; inline; function IsSpecial(pos: Integer): Boolean; inline;
public public
constructor Create(ASynEdit : TSynEditBase); constructor Create(ASynEdit : TSynEditBase);
@ -73,7 +74,13 @@ end;
procedure TSynEditMarkupSpecialChar.DoMarkupChanged(AMarkup: TSynSelectedColor); procedure TSynEditMarkupSpecialChar.DoMarkupChanged(AMarkup: TSynSelectedColor);
begin begin
inherited DoMarkupChanged(AMarkup); inherited DoMarkupChanged(AMarkup);
FHasMarkup := AMarkup.IsEnabled; FHasMarkup := RealEnabled;
SynEdit.Invalidate;
end;
procedure TSynEditMarkupSpecialChar.DoEnabledChanged(Sender: TObject);
begin
FHasMarkup := RealEnabled;
SynEdit.Invalidate; SynEdit.Invalidate;
end; end;

View File

@ -52,6 +52,7 @@ type
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override; procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
procedure DoTextChanged(StartLine, EndLine, ACountDiff: Integer); override; procedure DoTextChanged(StartLine, EndLine, ACountDiff: Integer); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override; procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure DoEnabledChanged(Sender: TObject); override;
public public
constructor Create(ASynEdit: TSynEditBase); constructor Create(ASynEdit: TSynEditBase);
destructor Destroy; override; destructor Destroy; override;
@ -122,6 +123,11 @@ begin
InvalidateLineHighlight; InvalidateLineHighlight;
end; end;
procedure TSynEditMarkupSpecialLine.DoEnabledChanged(Sender: TObject);
begin
InvalidateLineHighlight;
end;
function TSynEditMarkupSpecialLine.RealEnabled: Boolean; function TSynEditMarkupSpecialLine.RealEnabled: Boolean;
begin begin
Result := Enabled and Result := Enabled and

View File

@ -56,6 +56,7 @@ type
procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override; procedure DoLinesInWindoChanged(OldLinesInWindow : Integer); override;
procedure DoTextChanged(StartLine, EndLine, ACountDiff: Integer); override; procedure DoTextChanged(StartLine, EndLine, ACountDiff: Integer); override;
procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override; procedure DoMarkupChanged(AMarkup: TSynSelectedColor); override;
procedure DoEnabledChanged(Sender: TObject); override;
procedure DoVisibleChanged(AVisible: Boolean); override; procedure DoVisibleChanged(AVisible: Boolean); override;
procedure InvalidateCurrentHighlight; procedure InvalidateCurrentHighlight;
public public
@ -331,6 +332,12 @@ begin
InvalidateCurrentHighlight; InvalidateCurrentHighlight;
end; end;
procedure TSynEditMarkupWordGroup.DoEnabledChanged(Sender: TObject);
begin
FForceInvalidate := True;
InvalidateCurrentHighlight;
end;
procedure TSynEditMarkupWordGroup.DoVisibleChanged(AVisible: Boolean); procedure TSynEditMarkupWordGroup.DoVisibleChanged(AVisible: Boolean);
begin begin
inherited DoVisibleChanged(AVisible); inherited DoVisibleChanged(AVisible);