From 91c8da3f8c17e57c701fd301074a5d7883d3d22b Mon Sep 17 00:00:00 2001 From: martin Date: Mon, 30 May 2016 03:23:32 +0000 Subject: [PATCH] IDE: editor display options, allow to force pixel/point size for font (negative size). Issue #30085 git-svn-id: trunk@52408 - --- ide/frames/editor_display_options.pas | 50 ++++++++++++++++++--------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/ide/frames/editor_display_options.pas b/ide/frames/editor_display_options.pas index 613efeec83..891fd6d59c 100644 --- a/ide/frames/editor_display_options.pas +++ b/ide/frames/editor_display_options.pas @@ -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;