You've already forked lazarus-ccr
richmemo: win32 fix style selection on internal change.
modified Internal change. Only allow if styles is fully modified. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4526 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -845,16 +845,24 @@ var
|
|||||||
j : Integer;
|
j : Integer;
|
||||||
l : Integer;
|
l : Integer;
|
||||||
p : TFontParams;
|
p : TFontParams;
|
||||||
|
allowInternalChange: Boolean;
|
||||||
|
fp : TFontParams;
|
||||||
|
const
|
||||||
|
AllFontStyles : TFontStyles = [fsBold, fsItalic, fsUnderline, fsStrikeOut];
|
||||||
begin
|
begin
|
||||||
if not HandleAllocated then HandleNeeded;
|
if not HandleAllocated then HandleNeeded;
|
||||||
|
|
||||||
if (ModifyMask = []) or (TextLength = 0) then Exit;
|
if (ModifyMask = []) or (TextLength = 0) then Exit;
|
||||||
|
|
||||||
if TWSCustomRichMemoClass(WidgetSetClass).isInternalChange(Self, ModifyMask) then
|
allowInternalChange:=(not (tmm_Styles in ModifyMask)) or (AddFontStyle+RemoveFontStyle=AllFontStyles);
|
||||||
|
|
||||||
|
if allowInternalChange and (TWSCustomRichMemoClass(WidgetSetClass).isInternalChange(Self, ModifyMask)) then
|
||||||
begin
|
begin
|
||||||
// more effecient from OS view
|
// more effecient from OS view
|
||||||
|
fp:=fnt;
|
||||||
|
if tmm_Styles in ModifyMask then fp.Style:=AddFontStyle;
|
||||||
TWSCustomRichMemoClass(WidgetSetClass).SetTextAttributesInternal(Self,
|
TWSCustomRichMemoClass(WidgetSetClass).SetTextAttributesInternal(Self,
|
||||||
TextStart, TextLength, ModifyMask, fnt);
|
TextStart, TextLength, ModifyMask, fp);
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -383,6 +383,8 @@ class function TRichEditManager.SetSelectedTextStyle(RichEditWnd: Handle;
|
|||||||
var
|
var
|
||||||
w : WPARAM;
|
w : WPARAM;
|
||||||
fmt : TCHARFORMAT2;
|
fmt : TCHARFORMAT2;
|
||||||
|
const
|
||||||
|
CFM_STYLESONLY = CFM_BOLD or CFM_ITALIC or CFM_UNDERLINE or CFM_STRIKEOUT or CFM_SUBSCRIPT or CFM_SUPERSCRIPT;
|
||||||
begin
|
begin
|
||||||
if RichEditWnd = 0 then begin
|
if RichEditWnd = 0 then begin
|
||||||
Result := false;
|
Result := false;
|
||||||
@ -411,7 +413,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if not useMask or (tmm_Styles in AModifyMask) then begin
|
if not useMask or (tmm_Styles in AModifyMask) then begin
|
||||||
fmt.dwMask := fmt.dwMask or CFM_EFFECTS or CFM_SUBSCRIPT or CFM_SUPERSCRIPT;
|
fmt.dwMask := fmt.dwMask or CFM_STYLESONLY;
|
||||||
fmt.dwEffects := FontStylesToEffects(Params.Style) or VScriptPosToEffects(Params.VScriptPos);
|
fmt.dwEffects := FontStylesToEffects(Params.Style) or VScriptPosToEffects(Params.VScriptPos);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user