@@ -375,31 +375,39 @@ namespace CefSharp
375375
376376 void ClientAdapter::OnGotFocus (CefRefPtr<CefBrowser> browser)
377377 {
378- auto winFormsControl = dynamic_cast <IWinFormsWebBrowser^>((IWebBrowserInternal^)_browserControl);
379- if (winFormsControl != nullptr )
380- {
381- winFormsControl->OnGotFocus ();
382- }
378+ IFocusHandler^ handler = _browserControl->FocusHandler ;
379+
380+ if (handler == nullptr )
381+ {
382+ return ;
383+ }
384+
385+ handler->OnGotFocus ();
383386 }
384387
385- bool ClientAdapter::OnSetFocus (CefRefPtr<CefBrowser> browser, FocusSource source)
388+ bool ClientAdapter::OnSetFocus (CefRefPtr<CefBrowser> browser, FocusSource source)
386389 {
387- auto winFormsControl = dynamic_cast <IWinFormsWebBrowser^>((IWebBrowserInternal^)_browserControl);
388- if (winFormsControl == nullptr )
389- {
390- return false ;
391- }
390+ IFocusHandler^ handler = _browserControl->FocusHandler ;
392391
393- return winFormsControl->OnSetFocus ((CefFocusSource)source);
392+ if (handler == nullptr )
393+ {
394+ // Allow the focus to be set by default.
395+ return false ;
396+ }
397+
398+ return handler->OnSetFocus ((CefFocusSource)source);
394399 }
395400
396401 void ClientAdapter::OnTakeFocus (CefRefPtr<CefBrowser> browser, bool next)
397402 {
398- auto winFormsControl = dynamic_cast <IWinFormsWebBrowser^>((IWebBrowserInternal^)_browserControl);
399- if (winFormsControl != nullptr )
400- {
401- winFormsControl->OnTakeFocus (next);
402- }
403+ IFocusHandler^ handler = _browserControl->FocusHandler ;
404+
405+ if (handler == nullptr )
406+ {
407+ return ;
408+ }
409+
410+ handler->OnTakeFocus (next);
403411 }
404412
405413 bool ClientAdapter::OnJSDialog (CefRefPtr<CefBrowser> browser, const CefString& origin_url, const CefString& accept_lang,
0 commit comments