diff --git a/CefSharp.Wpf/ChromiumWebBrowser.cs b/CefSharp.Wpf/ChromiumWebBrowser.cs
index 1e522c924b..375060c2aa 100644
--- a/CefSharp.Wpf/ChromiumWebBrowser.cs
+++ b/CefSharp.Wpf/ChromiumWebBrowser.cs
@@ -138,6 +138,12 @@ public class ChromiumWebBrowser : Control, IRenderWebBrowser, IWpfWebBrowser
///
private int disposeSignaled;
+ ///
+ /// Hack to work around issue https://github.com/cefsharp/CefSharp/issues/2779
+ /// Enabled by default
+ ///
+ public bool EnableResizeHackForIssue2779 { get; set; }
+
///
/// Gets a value indicating whether this instance is disposed.
///
@@ -513,6 +519,8 @@ public ChromiumWebBrowser(string initialAddress)
[MethodImpl(MethodImplOptions.NoInlining)]
private void NoInliningConstructor()
{
+ EnableResizeHackForIssue2779 = true;
+
//Initialize CEF if it hasn't already been initialized
if (!Cef.IsInitialized)
{
@@ -1759,7 +1767,10 @@ private void OnWindowStateChanged(object sender, EventArgs e)
}
case WindowState.Minimized:
{
- resizeHackForIssue2779Enabled = true;
+ if (EnableResizeHackForIssue2779)
+ {
+ resizeHackForIssue2779Enabled = true;
+ }
if (browser != null)
{
@@ -1929,7 +1940,7 @@ private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArg
TaskContinuationOptions.OnlyOnRanToCompletion,
TaskScheduler.FromCurrentSynchronizationContext());
}
- else
+ else if (EnableResizeHackForIssue2779)
{
resizeHackForIssue2779Enabled = true;
}
@@ -2386,35 +2397,38 @@ private bool InternalIsBrowserInitialized()
private void ResizeHackFor2779()
{
- const int delayInMs = 50;
-
- Task.Run(async () =>
+ if (EnableResizeHackForIssue2779)
{
- await Task.Delay(delayInMs);
+ const int delayInMs = 50;
- if (browser != null)
+ Task.Run(async () =>
{
- resizeHackForIssue2779Size = new Structs.Size(viewRect.Width - 1, viewRect.Height - 1);
- browser.GetHost().WasResized();
- }
+ await Task.Delay(delayInMs);
- await Task.Delay(delayInMs);
+ if (browser != null)
+ {
+ resizeHackForIssue2779Size = new Structs.Size(viewRect.Width - 1, viewRect.Height - 1);
+ browser.GetHost().WasResized();
+ }
- if (browser != null)
- {
- resizeHackForIssue2779Size = null;
- browser.GetHost().WasResized();
- }
+ await Task.Delay(delayInMs);
- await Task.Delay(delayInMs);
+ if (browser != null)
+ {
+ resizeHackForIssue2779Size = null;
+ browser.GetHost().WasResized();
+ }
- if (browser != null)
- {
- resizeHackForIssue2779Enabled = false;
+ await Task.Delay(delayInMs);
- browser.GetHost().Invalidate(PaintElementType.View);
- }
- });
+ if (browser != null)
+ {
+ resizeHackForIssue2779Enabled = false;
+
+ browser.GetHost().Invalidate(PaintElementType.View);
+ }
+ });
+ }
}
}
}