Skip to content

Commit

Permalink
fix Dispose
Browse files Browse the repository at this point in the history
  • Loading branch information
AigioL committed Jul 12, 2022
1 parent 02146ed commit 25690db
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 25 deletions.
2 changes: 1 addition & 1 deletion src/Avalonia.WebView2/Avalonia.WebView2.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
This package is necessary for Avalonia applications. To learn more about package versions checkout https://aka.ms/wv2-packageversion. To learn best practices checkout: https://aka.ms/wv2-bestpractices.
</Description>
<PackageTags>Web WebView Native native package Edge avalonia avaloniaui dotnet framework core Webview2</PackageTags>
<Version>1.0.1264.42-preview.220712.9</Version>
<Version>1.0.1264.42-preview.220713.10</Version>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
</PropertyGroup>

Expand Down
57 changes: 33 additions & 24 deletions src/Avalonia.WebView2/WebView2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -178,17 +178,23 @@ void UnsubscribeHandlersAndCloseController(bool browserCrashed = false)
if (!_browserCrashed)
{
#if !DISABLE_WEBVIEW2_CORE
CoreWebView2!.NavigationCompleted -= new EventHandler<CoreWebView2NavigationCompletedEventArgs>(CoreWebView2_NavigationCompleted);
CoreWebView2.NavigationStarting -= new EventHandler<CoreWebView2NavigationStartingEventArgs>(CoreWebView2_NavigationStarting);
CoreWebView2.SourceChanged -= new EventHandler<CoreWebView2SourceChangedEventArgs>(CoreWebView2_SourceChanged);
CoreWebView2.WebMessageReceived -= new EventHandler<CoreWebView2WebMessageReceivedEventArgs>(CoreWebView2_WebMessageReceived);
CoreWebView2.ContentLoading -= new EventHandler<CoreWebView2ContentLoadingEventArgs>(CoreWebView2_ContentLoading);
CoreWebView2.DOMContentLoaded -= new EventHandler<CoreWebView2DOMContentLoadedEventArgs>(CoreWebView2_DOMContentLoaded);
CoreWebView2.ProcessFailed -= new EventHandler<CoreWebView2ProcessFailedEventArgs>(CoreWebView2_ProcessFailed);
_coreWebView2Controller!.ZoomFactorChanged -= new EventHandler<object>(CoreWebView2Controller_ZoomFactorChanged);
//_coreWebView2Controller.MoveFocusRequested -= new EventHandler<CoreWebView2MoveFocusRequestedEventArgs>(CoreWebView2Controller_MoveFocusRequested);
_coreWebView2Controller.AcceleratorKeyPressed -= new EventHandler<CoreWebView2AcceleratorKeyPressedEventArgs>(CoreWebView2Controller_AcceleratorKeyPressed);
_coreWebView2Controller.Close();
if (CoreWebView2 != null)
{
CoreWebView2.NavigationCompleted -= new EventHandler<CoreWebView2NavigationCompletedEventArgs>(CoreWebView2_NavigationCompleted);
CoreWebView2.NavigationStarting -= new EventHandler<CoreWebView2NavigationStartingEventArgs>(CoreWebView2_NavigationStarting);
CoreWebView2.SourceChanged -= new EventHandler<CoreWebView2SourceChangedEventArgs>(CoreWebView2_SourceChanged);
CoreWebView2.WebMessageReceived -= new EventHandler<CoreWebView2WebMessageReceivedEventArgs>(CoreWebView2_WebMessageReceived);
CoreWebView2.ContentLoading -= new EventHandler<CoreWebView2ContentLoadingEventArgs>(CoreWebView2_ContentLoading);
CoreWebView2.DOMContentLoaded -= new EventHandler<CoreWebView2DOMContentLoadedEventArgs>(CoreWebView2_DOMContentLoaded);
CoreWebView2.ProcessFailed -= new EventHandler<CoreWebView2ProcessFailedEventArgs>(CoreWebView2_ProcessFailed);
}
if (_coreWebView2Controller != null)
{
_coreWebView2Controller.ZoomFactorChanged -= new EventHandler<object>(CoreWebView2Controller_ZoomFactorChanged);
//_coreWebView2Controller.MoveFocusRequested -= new EventHandler<CoreWebView2MoveFocusRequestedEventArgs>(CoreWebView2Controller_MoveFocusRequested);
_coreWebView2Controller.AcceleratorKeyPressed -= new EventHandler<CoreWebView2AcceleratorKeyPressedEventArgs>(CoreWebView2Controller_AcceleratorKeyPressed);
_coreWebView2Controller.Close();
}
#endif
}
#if !DISABLE_WEBVIEW2_CORE
Expand Down Expand Up @@ -387,25 +393,25 @@ async Task InitCoreWebView2Async(CoreWebView2Environment? environment = null, Co
//sender._coreWebView2Controller.MoveFocusRequested += new EventHandler<CoreWebView2MoveFocusRequestedEventArgs>(sender.CoreWebView2Controller_MoveFocusRequested);
sender._coreWebView2Controller.AcceleratorKeyPressed += new EventHandler<CoreWebView2AcceleratorKeyPressedEventArgs>(sender.CoreWebView2Controller_AcceleratorKeyPressed);
sender._coreWebView2Controller.ZoomFactorChanged += new EventHandler<object>(sender.CoreWebView2Controller_ZoomFactorChanged);
sender.CoreWebView2!.NavigationCompleted += new EventHandler<CoreWebView2NavigationCompletedEventArgs>(sender.CoreWebView2_NavigationCompleted);
sender.CoreWebView2.NavigationStarting += new EventHandler<CoreWebView2NavigationStartingEventArgs>(sender.CoreWebView2_NavigationStarting);
sender.CoreWebView2.SourceChanged += new EventHandler<CoreWebView2SourceChangedEventArgs>(sender.CoreWebView2_SourceChanged);
sender.CoreWebView2.WebMessageReceived += new EventHandler<CoreWebView2WebMessageReceivedEventArgs>(sender.CoreWebView2_WebMessageReceived);
sender.CoreWebView2.ContentLoading += new EventHandler<CoreWebView2ContentLoadingEventArgs>(sender.CoreWebView2_ContentLoading);
sender.CoreWebView2.DOMContentLoaded += new EventHandler<CoreWebView2DOMContentLoadedEventArgs>(sender.CoreWebView2_DOMContentLoaded);
sender.CoreWebView2.ProcessFailed += new EventHandler<CoreWebView2ProcessFailedEventArgs>(sender.CoreWebView2_ProcessFailed);
sender._coreWebView2Controller.CoreWebView2.NavigationCompleted += new EventHandler<CoreWebView2NavigationCompletedEventArgs>(sender.CoreWebView2_NavigationCompleted);
sender._coreWebView2Controller.CoreWebView2.NavigationStarting += new EventHandler<CoreWebView2NavigationStartingEventArgs>(sender.CoreWebView2_NavigationStarting);
sender._coreWebView2Controller.CoreWebView2.SourceChanged += new EventHandler<CoreWebView2SourceChangedEventArgs>(sender.CoreWebView2_SourceChanged);
sender._coreWebView2Controller.CoreWebView2.WebMessageReceived += new EventHandler<CoreWebView2WebMessageReceivedEventArgs>(sender.CoreWebView2_WebMessageReceived);
sender._coreWebView2Controller.CoreWebView2.ContentLoading += new EventHandler<CoreWebView2ContentLoadingEventArgs>(sender.CoreWebView2_ContentLoading);
sender._coreWebView2Controller.CoreWebView2.DOMContentLoaded += new EventHandler<CoreWebView2DOMContentLoadedEventArgs>(sender.CoreWebView2_DOMContentLoaded);
sender._coreWebView2Controller.CoreWebView2.ProcessFailed += new EventHandler<CoreWebView2ProcessFailedEventArgs>(sender.CoreWebView2_ProcessFailed);
if (sender.Focusable)
sender._coreWebView2Controller.MoveFocus(CoreWebView2MoveFocusReason.Programmatic);

sender.CoreWebView2InitializationCompleted?.Invoke(sender, new CoreWebView2InitializationCompletedEventArgs());

if (sender._source != null)
{
sender.CoreWebView2.Navigate(sender._source.AbsoluteUri);
sender._coreWebView2Controller.CoreWebView2.Navigate(sender._source.AbsoluteUri);
}
else if (sender._htmlSource != null)
{
sender.CoreWebView2.NavigateToString(sender._htmlSource);
sender._coreWebView2Controller.CoreWebView2.NavigateToString(sender._htmlSource);
}
}
catch (Exception ex)
Expand Down Expand Up @@ -487,7 +493,7 @@ protected override void OnGotFocus(GotFocusEventArgs e)
#if !DISABLE_WEBVIEW2_CORE
try
{
_coreWebView2Controller!.MoveFocus(_lastMoveFocusReason);
_coreWebView2Controller.MoveFocus(_lastMoveFocusReason);
}
catch (InvalidOperationException ex)
{
Expand Down Expand Up @@ -741,7 +747,7 @@ public void Reload()
#if !DISABLE_WEBVIEW2_CORE
if (CoreWebView2 != null)
{
CoreWebView2!.Reload();
CoreWebView2.Reload();
}
#endif
}
Expand Down Expand Up @@ -911,7 +917,9 @@ void CoreWebView2_WebMessageReceived(object? sender, CoreWebView2WebMessageRecei

void CoreWebView2_SourceChanged(object? sender, CoreWebView2SourceChangedEventArgs e)
{
_source = new Uri(CoreWebView2!.Source);
var source = CoreWebView2?.Source;
if (_source == null || _source.AbsoluteUri != source)
_source = new Uri(source);
var sourceChanged = SourceChanged;
if (sourceChanged == null)
return;
Expand Down Expand Up @@ -945,7 +953,8 @@ void CoreWebView2_ProcessFailed(object? sender, CoreWebView2ProcessFailedEventAr
#if !DISABLE_WEBVIEW2_CORE
void CoreWebView2Controller_ZoomFactorChanged(object? sender, object e)
{
_zoomFactor = _coreWebView2Controller!.ZoomFactor;
if (_coreWebView2Controller != null)
_zoomFactor = _coreWebView2Controller.ZoomFactor;
var zoomFactorChanged = ZoomFactorChanged;
if (zoomFactorChanged == null)
return;
Expand Down

0 comments on commit 25690db

Please sign in to comment.