diff --git a/ide/editoroptions.pp b/ide/editoroptions.pp index 7d99606597..a6660941df 100644 --- a/ide/editoroptions.pp +++ b/ide/editoroptions.pp @@ -985,7 +985,6 @@ type procedure WriteColorScheme(const LanguageName, SynColorScheme: String); procedure ReadHighlighterSettings(Syn: TSrcIDEHighlighter; SynColorScheme: String); - procedure WriteHighlighterSettings; procedure ReadHighlighterFoldSettings(Syn: TSrcIDEHighlighter); procedure ReadDefaultsForHighlighterFoldSettings(Syn: TSrcIDEHighlighter); @@ -3137,6 +3136,8 @@ begin end; FMultiWinEditAccessOrder.LoadFromXMLConfig(XMLConfig, 'EditorOptions/MultiWin/'); + UserColorSchemeGroup.LoadFromXml(XMLConfig, 'EditorOptions/Color/', + ColorSchemeFactory, 'EditorOptions/Display/'); except on E: Exception do @@ -3349,6 +3350,7 @@ begin end; FMultiWinEditAccessOrder.SaveToXMLConfig(XMLConfig, 'EditorOptions/MultiWin/'); + UserColorSchemeGroup.SaveToXml(XMLConfig, 'EditorOptions/Color/', ColorSchemeFactory); InvalidateFileStateCache; XMLConfig.Flush; @@ -3545,10 +3547,6 @@ begin if (SynColorScheme = '') or (Syn.LanguageName = '') then exit; - // reset all to defaults - UserColorSchemeGroup.LoadFromXml(XMLConfig, 'EditorOptions/Color/', - ColorSchemeFactory, 'EditorOptions/Display/'); - Scheme := UserColorSchemeGroup.ColorSchemeGroup[SynColorScheme]; if Scheme = nil then exit; @@ -3559,11 +3557,6 @@ begin LangScheme.ApplyTo(Syn); end; -procedure TEditorOptions.WriteHighlighterSettings; -begin - UserColorSchemeGroup.SaveToXml(XMLConfig, 'EditorOptions/Color/', ColorSchemeFactory); -end; - procedure TEditorOptions.ReadHighlighterFoldSettings(Syn: TSrcIDEHighlighter); var ConfName: String; @@ -3807,8 +3800,6 @@ var i: Integer; j: Integer; begin - UserColorSchemeGroup.LoadFromXml(XMLConfig, 'EditorOptions/Color/', - ColorSchemeFactory, 'EditorOptions/Display/'); // general options ASynEdit.Options := fSynEditOptions; ASynEdit.Options2 := fSynEditOptions2; diff --git a/ide/frames/editor_color_options.pas b/ide/frames/editor_color_options.pas index 5325c06dad..8ec5649f00 100644 --- a/ide/frames/editor_color_options.pas +++ b/ide/frames/editor_color_options.pas @@ -93,6 +93,8 @@ type procedure ComboBoxOnChange(Sender: TObject); procedure ComboBoxOnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private + FTempColorSchemeSettings: TColorSchemeFactory; + FDialog: TAbstractOptionsEditorDialog; FCurHighlightElement: TColorSchemeAttribute; @@ -126,6 +128,7 @@ type function DoSynEditMouse(var AnInfo: TSynEditMouseActionInfo; HandleActionProc: TSynEditMouseActionHandler): Boolean; public + constructor Create(TheOwner : TComponent); override; destructor Destroy; override; function GetTitle: String; override; @@ -317,7 +320,7 @@ begin XMLConfig.SetValue('Lazarus/ColorSchemes/Names/Item1/Value', NewName); NewScheme := TColorScheme.Create(NewName); - NewScheme.Assign(EditorOpts.UserColorSchemeGroup.ColorSchemeGroup[ColorSchemeComboBox.Text]); + NewScheme.Assign(FTempColorSchemeSettings.ColorSchemeGroup[ColorSchemeComboBox.Text]); NewScheme.SaveToXml(XMLConfig, 'Lazarus/ColorSchemes/',nil); NewScheme.Free; @@ -934,7 +937,7 @@ var NewColorScheme: TColorSchemeLanguage; begin // Modfiy directly => will be re-read form XML if canceled - SchemeGrp := EditorOpts.UserColorSchemeGroup.ColorSchemeGroup[ColorScheme]; + SchemeGrp := FTempColorSchemeSettings.ColorSchemeGroup[ColorScheme]; if SchemeGrp = nil then exit; @@ -1022,8 +1025,15 @@ begin Result := True; end; +constructor TEditorColorOptionsFrame.Create(TheOwner: TComponent); +begin + inherited Create(TheOwner); + FTempColorSchemeSettings := TColorSchemeFactory.Create; +end; + destructor TEditorColorOptionsFrame.Destroy; begin + FreeAndNil(FTempColorSchemeSettings); FFileExtensions.Free; FColorSchemes.Free; inherited Destroy; @@ -1101,6 +1111,7 @@ begin with AOptions as TEditorOptions do begin + FTempColorSchemeSettings.Assign(UserColorSchemeGroup); UseSyntaxHighlightCheckBox.Checked := UseSyntaxHighlight; with LanguageComboBox do @@ -1153,7 +1164,7 @@ begin FColorSchemes.Values[FColorSchemes.Names[i]]); // Write from userFactory - WriteHighlighterSettings; + UserColorSchemeGroup.Assign(FTempColorSchemeSettings); end; end;