Avalonia.TextMate - Review Updates

-Remove apply window updates bool.
-Remove duplicated CurrentHighlightRenderer Background/border settings, this is replaced with a new call for but doesn't answer the review note fully.
This commit is contained in:
Natestah 2024-07-04 06:54:02 -07:00
Родитель 600f2a2368
Коммит c765a9262d
5 изменённых файлов: 67 добавлений и 66 удалений

Просмотреть файл

@ -3,6 +3,9 @@ using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Controls.Platform;
using Avalonia.Markup.Xaml;
using System;
using System.ComponentModel;
using Avalonia.Styling;
using AvaloniaEdit.Demo.ViewModels;
namespace AvaloniaEdit.Demo
{
@ -17,13 +20,12 @@ namespace AvaloniaEdit.Demo
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
{
var window = new MainWindow();
desktopLifetime.MainWindow = window;
//PlatformManager.CreateEmbeddableWindow().Crea
if (window.DataContext is MainWindowViewModel mainWindowViewModel)
{
mainWindowViewModel.PropertyChanged +=MainWindowViewModelOnPropertyChanged;
}
}
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewLifetime)
{
@ -40,5 +42,16 @@ namespace AvaloniaEdit.Demo
base.OnFrameworkInitializationCompleted();
}
private void MainWindowViewModelOnPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (DataContext is not MainWindowViewModel mainWindowViewModel) return;
if (e.PropertyName == nameof(MainWindowViewModel.SelectedTheme))
{
RequestedThemeVariant = mainWindowViewModel.SelectedTheme.ThemeName.ToString().Contains("light")
? ThemeVariant.Light
: ThemeVariant.Dark;
}
}
}
}

Просмотреть файл

@ -154,6 +154,11 @@ namespace AvaloniaEdit.Demo
{
_customMargin.SetDefaultBackgroundBrush();
}
//Applying the Editor background to the whole window for demo sake.
e.ApplyBrushAction("editor.background",brush => Background = brush);
e.ApplyBrushAction("editor.foreground",brush => Foreground = brush);
}
private void Caret_PositionChanged(object sender, EventArgs e)

Просмотреть файл

@ -82,7 +82,7 @@ namespace AvaloniaEdit.TextMate
return true;
}
public void SetTheme(IRawTheme theme, bool applyWindowProperties = true)
public void SetTheme(IRawTheme theme)
{
_textMateRegistry.SetTheme(theme);
@ -93,29 +93,7 @@ namespace AvaloniaEdit.TextMate
_editorModel?.InvalidateViewPortLines();
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime
{
MainWindow: Window window
})
{
_guiColorDictionary = registryTheme.GetGuiColorDictionary();
var themeName = theme.GetName();
// Applies to the application on a whole.. Some might want to opt out of this for their own setups.
if (applyWindowProperties)
{
if (themeName != null && themeName.ToLower().Contains("light"))
{
Application.Current.RequestedThemeVariant = ThemeVariant.Light;
}
else
{
Application.Current.RequestedThemeVariant = ThemeVariant.Dark;
}
ApplyBrushAction("editor.background",brush =>window.Background = brush);
ApplyBrushAction("editor.foreground",brush =>window.Foreground = brush);
}
ApplyBrushAction("editor.background",brush =>_editor.Background = brush);
ApplyBrushAction("editor.foreground",brush =>_editor.Foreground = brush);
@ -138,11 +116,9 @@ namespace AvaloniaEdit.TextMate
_editor.TextArea.TextView.CurrentLineBorder = new Pen(brush); // Todo: VS Code didn't seem to have a border but it might be nice to have that option. For now just make it the same..
}))
{
_editor.TextArea.TextView.CurrentLineBackground = new SolidColorBrush(CurrentHighlightRendererDefaultBackground);
_editor.TextArea.TextView.CurrentLineBorder = new Pen(new SolidColorBrush(CurrentHighlightRendererDefaultBorder));
_editor.TextArea.TextView.SetDefaultHighlightLineColors();
}
//Todo: looks like the margin doesn't have a active line highlight, would be a nice addition
if (!ApplyBrushAction("editorLineNumber.foreground",
brush => _editor.LineNumbersForeground = brush))
@ -152,11 +128,7 @@ namespace AvaloniaEdit.TextMate
AppliedTheme?.Invoke(this,this);
}
}
//These come out of CurrentHighlightRenderer sealed class.
public static readonly Color CurrentHighlightRendererDefaultBackground = Color.FromArgb(22, 20, 220, 224);
public static readonly Color CurrentHighlightRendererDefaultBorder = Color.FromArgb(52, 0, 255, 110);
public void Dispose()
{

Просмотреть файл

@ -37,6 +37,12 @@ namespace AvaloniaEdit.Rendering
#region Properties
public void SetDefaultColors()
{
BorderPen = new ImmutablePen(new ImmutableSolidColorBrush(DefaultBorder), 1);
BackgroundBrush = new ImmutableSolidColorBrush(DefaultBackground);
}
public int Line {
get { return _line; }
set {

Просмотреть файл

@ -2099,5 +2099,10 @@ namespace AvaloniaEdit.Rendering
}
Size IScrollable.Viewport => _scrollViewport;
public void SetDefaultHighlightLineColors()
{
_currentLineHighlightRenderer?.SetDefaultColors();
}
}
}