IDE: editor display options, allow to force pixel/point size for font (negative size). Issue #30085

git-svn-id: trunk@52408 -
This commit is contained in:
martin 2016-05-30 03:23:32 +00:00
parent 3f338479ba
commit 91c8da3f8c

View File

@ -25,7 +25,7 @@ unit editor_display_options;
interface
uses
Classes, SysUtils, Graphics, Dialogs, StdCtrls, Spin, LCLType, SynEdit,
Classes, SysUtils, Graphics, Dialogs, StdCtrls, Spin, LCLType, Controls, LCLProc, SynEdit,
SynEditMouseCmds, EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf,
IDEUtils, editor_general_options, editor_color_options, IDEProcs,
SynGutterLineNumber, SynGutterLineOverview, SynGutter, SourceSynEditor,
@ -166,23 +166,35 @@ end;
procedure TEditorDisplayOptionsFrame.EditorFontSizeSpinEditChange(Sender: TObject);
var
NewVal, a: Integer;
s: TCaption;
begin
NewVal := EditorFontSizeSpinEdit.Value;
if (NewVal < 0) and (NewVal > -EditorOptionsMinimumFontSize) then
begin
// Skip to minimum positive value. Will trigger OnChange again.
SetEditorFontSizeSpinEditValue(EditorOptionsMinimumFontSize);
s := EditorFontSizeSpinEdit.Text;
if copy(trim(s),1,1) = '-' then begin
if EditorFontSizeSpinEdit.MinValue > 0 then begin
EditorFontSizeSpinEdit.MinValue := -100;
EditorFontSizeSpinEdit.MaxValue := -EditorOptionsMinimumFontSize;
EditorFontSizeSpinEdit.Text := s;
end
else
if EditorFontSizeSpinEdit.Value > -EditorOptionsMinimumFontSize then
EditorFontSizeSpinEdit.Value := -EditorOptionsMinimumFontSize;
end
else
begin
if (NewVal > 0) and not FUpdatingFontSizeRange then
else begin
if EditorFontSizeSpinEdit.MinValue < 0 then begin
EditorFontSizeSpinEdit.MaxValue := 100;
EditorFontSizeSpinEdit.MinValue := EditorOptionsMinimumFontSize;
with GeneralPage do
for a := Low(PreviewEdits) to High(PreviewEdits) do
if PreviewEdits[a] <> nil then
PreviewEdits[a].Font.Size := NewVal;
EditorFontSizeSpinEdit.Text := s;
end
else
if EditorFontSizeSpinEdit.Value < EditorOptionsMinimumFontSize then
EditorFontSizeSpinEdit.Value := EditorOptionsMinimumFontSize;
end;
NewVal := EditorFontSizeSpinEdit.Value;
with GeneralPage do
for a := Low(PreviewEdits) to High(PreviewEdits) do
if PreviewEdits[a] <> nil then
PreviewEdits[a].Font.Size := NewVal;
end;
procedure TEditorDisplayOptionsFrame.ComboboxOnExit(Sender: TObject);
@ -319,10 +331,14 @@ end;
procedure TEditorDisplayOptionsFrame.SetEditorFontSizeSpinEditValue(FontSize: Integer);
begin
FUpdatingFontSizeRange := True;
if FontSize < 0 then
EditorFontSizeSpinEdit.MinValue := -EditorFontSizeSpinEdit.MaxValue
else
if FontSize < 0 then begin
EditorFontSizeSpinEdit.MinValue := -100;
EditorFontSizeSpinEdit.MaxValue := -EditorOptionsMinimumFontSize;
end
else begin
EditorFontSizeSpinEdit.MaxValue := 100;
EditorFontSizeSpinEdit.MinValue := EditorOptionsMinimumFontSize;
end;
FUpdatingFontSizeRange := False;
EditorFontSizeSpinEdit.Value := FontSize;
end;