Editor optimizations

This commit is contained in:
Burak Kaan Köse
2026-02-08 10:35:24 +01:00
parent ad9b94d407
commit 22c6452227
4 changed files with 63 additions and 56 deletions
@@ -133,6 +133,7 @@ public sealed partial class WebViewEditorControl : Control, IDisposable
private const string PART_WebView = "WebView";
private WebView2 _chromium = null!;
private bool _disposedValue;
private bool? _lastAppliedDarkTheme;
private readonly TaskCompletionSource<bool> _domLoadedTask = new();
public WebViewEditorControl()
@@ -153,8 +154,9 @@ public sealed partial class WebViewEditorControl : Control, IDisposable
private async Task InitializeComponent()
{
Environment.SetEnvironmentVariable("WEBVIEW2_DEFAULT_BACKGROUND_COLOR", "00FFFFFF");
Environment.SetEnvironmentVariable("WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS", "--enable-features=OverlayScrollbar,msOverlayScrollbarWinStyle,msOverlayScrollbarWinStyleAnimation");
WebViewExtensions.EnsureWebView2Environment();
_chromium.CoreWebView2Initialized -= ChromiumInitialized;
_chromium.CoreWebView2Initialized += ChromiumInitialized;
await _chromium.EnsureCoreWebView2Async();
@@ -218,7 +220,7 @@ public sealed partial class WebViewEditorControl : Control, IDisposable
int composerFontSize = _preferencesService.ComposerFontSize;
var readerFont = _preferencesService.ReaderFont;
int readerFontSize = _preferencesService.ReaderFontSize;
return await _chromium.ExecuteScriptFunctionAsync("initializeJodit", false,
return await _chromium.ExecuteScriptFunctionAsync("initializeJodit",
JsonSerializer.Serialize(fonts, BasicTypesJsonContext.Default.ListString),
JsonSerializer.Serialize(composerFont, BasicTypesJsonContext.Default.String),
JsonSerializer.Serialize(composerFontSize, BasicTypesJsonContext.Default.Int32),
@@ -233,16 +235,24 @@ public sealed partial class WebViewEditorControl : Control, IDisposable
_chromium.CoreWebView2.SetVirtualHostNameToFolderMapping("app.editor", editorBundlePath, CoreWebView2HostResourceAccessKind.Allow);
_chromium.Source = new Uri("https://app.editor/editor.html");
_chromium.CoreWebView2.DOMContentLoaded -= DomLoaded;
_chromium.CoreWebView2.DOMContentLoaded += DomLoaded;
_chromium.CoreWebView2.WebMessageReceived -= ScriptMessageReceived;
_chromium.CoreWebView2.WebMessageReceived += ScriptMessageReceived;
}
public async Task UpdateEditorThemeAsync()
public async Task UpdateEditorThemeAsync(bool force = false)
{
await _domLoadedTask.Task;
if (IsEditorDarkMode)
var isDark = IsEditorDarkMode;
if (!force && _lastAppliedDarkTheme == isDark) return;
_lastAppliedDarkTheme = isDark;
if (isDark)
{
_chromium.CoreWebView2.Profile.PreferredColorScheme = CoreWebView2PreferredColorScheme.Dark;
await _chromium.ExecuteScriptFunctionSafeAsync("SetDarkEditor");