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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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