@@ -26,6 +26,7 @@ public class ChromiumWebBrowser : Control, IWebBrowserInternal, IWinFormsWebBrow
2626 public IDownloadHandler DownloadHandler { get ; set ; }
2727 public ILifeSpanHandler LifeSpanHandler { get ; set ; }
2828 public IMenuHandler MenuHandler { get ; set ; }
29+ public IFocusHandler FocusHandler { get ; set ; }
2930
3031 public bool CanGoForward { get ; private set ; }
3132 public bool CanGoBack { get ; private set ; }
@@ -54,6 +55,8 @@ public ChromiumWebBrowser(string address)
5455 Address = address ;
5556
5657 Dock = DockStyle . Fill ;
58+
59+ FocusHandler = new DefaultFocusHandler ( this ) ;
5760 }
5861
5962 protected override void Dispose ( bool disposing )
@@ -208,11 +211,6 @@ void IWebBrowserInternal.OnFrameLoadEnd(string url, bool isMainFrame, int httpSt
208211 }
209212 }
210213
211- void IWebBrowserInternal . OnTakeFocus ( bool next )
212- {
213- SelectNextControl ( this , next , true , true , true ) ;
214- }
215-
216214 void IWebBrowserInternal . OnConsoleMessage ( string message , string source , int line )
217215 {
218216 var handler = ConsoleMessage ;
@@ -358,5 +356,31 @@ private void ResizeBrowser()
358356 managedCefBrowserAdapter . Resize ( Width , Height ) ;
359357 }
360358 }
359+
360+ #region DefaultFocusHandler
361+ private class DefaultFocusHandler : IFocusHandler
362+ {
363+ private ChromiumWebBrowser browser ;
364+
365+ public DefaultFocusHandler ( ChromiumWebBrowser browser )
366+ {
367+ this . browser = browser ;
368+ }
369+
370+ public void OnGotFocus ( )
371+ {
372+ }
373+
374+ public bool OnSetFocus ( CefFocusSource source )
375+ {
376+ return false ;
377+ }
378+
379+ public void OnTakeFocus ( bool next )
380+ {
381+ browser . BeginInvoke ( new MethodInvoker ( ( ) => browser . SelectNextControl ( browser , next , true , true , true ) ) ) ;
382+ }
383+ }
384+ #endregion
361385 }
362386}
0 commit comments