Skip to content

Commit a9a3d52

Browse files
committed
ClientAdapter::OnSetFocus - When DevTools is opened, OnSetFocus is called before OnAfterCreated
The causes GetBrowserWrapper to return null when DevTools is opened, for now we'll just create the wrapper and pass it directly (wrapper is disposed when it goes out of scope).
1 parent 279413f commit a9a3d52

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

CefSharp.Core/Internals/ClientAdapter.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -993,9 +993,12 @@ namespace CefSharp
993993
return false;
994994
}
995995

996-
auto browserWrapper = GetBrowserWrapper(browser->GetIdentifier(), browser->IsPopup());
996+
//For DevTools (which is hosted as a popup) OnSetFocus is called before OnAfterCreated so we don't
997+
// have a reference to the standard popup IBrowser wrapper, so we just pass a
998+
// short term reference.
999+
CefSharpBrowserWrapper browserWrapper(browser);
9971000

998-
return handler->OnSetFocus(_browserControl, browserWrapper, (CefFocusSource)source);
1001+
return handler->OnSetFocus(_browserControl, %browserWrapper, (CefFocusSource)source);
9991002
}
10001003

10011004
void ClientAdapter::OnTakeFocus(CefRefPtr<CefBrowser> browser, bool next)

CefSharp/Handler/IFocusHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public interface IFocusHandler
2121
/// Called when the browser component is requesting focus.
2222
/// </summary>
2323
/// <param name="chromiumWebBrowser">the ChromiumWebBrowser control</param>
24-
/// <param name="browser">the browser object</param>
24+
/// <param name="browser">the browser object, do not keep a reference to this object outside of this method</param>
2525
/// <param name="source">Indicates where the focus request is originating from.</param>
2626
/// <returns>Return false to allow the focus to be set or true to cancel setting the focus.</returns>
2727
bool OnSetFocus(IWebBrowser chromiumWebBrowser, IBrowser browser, CefFocusSource source);

0 commit comments

Comments
 (0)