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