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,24 +166,36 @@ 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 end
else else
begin if EditorFontSizeSpinEdit.Value > -EditorOptionsMinimumFontSize then
if (NewVal > 0) and not FUpdatingFontSizeRange then EditorFontSizeSpinEdit.Value := -EditorOptionsMinimumFontSize;
end
else begin
if EditorFontSizeSpinEdit.MinValue < 0 then begin
EditorFontSizeSpinEdit.MaxValue := 100;
EditorFontSizeSpinEdit.MinValue := EditorOptionsMinimumFontSize; EditorFontSizeSpinEdit.MinValue := EditorOptionsMinimumFontSize;
EditorFontSizeSpinEdit.Text := s;
end
else
if EditorFontSizeSpinEdit.Value < EditorOptionsMinimumFontSize then
EditorFontSizeSpinEdit.Value := EditorOptionsMinimumFontSize;
end;
NewVal := EditorFontSizeSpinEdit.Value;
with GeneralPage do with GeneralPage do
for a := Low(PreviewEdits) to High(PreviewEdits) do for a := Low(PreviewEdits) to High(PreviewEdits) do
if PreviewEdits[a] <> nil then if PreviewEdits[a] <> nil then
PreviewEdits[a].Font.Size := NewVal; PreviewEdits[a].Font.Size := NewVal;
end; end;
end;
procedure TEditorDisplayOptionsFrame.ComboboxOnExit(Sender: TObject); procedure TEditorDisplayOptionsFrame.ComboboxOnExit(Sender: TObject);
var var
@ -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;