mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	Windows: Fix focus assignment when clicking WebView with external parent (fixes issue #3031)
This commit is contained in:
		| @@ -103,7 +103,10 @@ patches = [ | ||||
|     # | ||||
|     # Support configuration of RWHVGuest device scale factor. | ||||
|     # https://bitbucket.org/chromiumembedded/cef/issues/2078 | ||||
|     'name': 'views_widget_180_1481_1565_1677_1749', | ||||
|     # | ||||
|     # Windows: Fix focus assignment when clicking WebView with external parent. | ||||
|     # https://bitbucket.org/chromiumembedded/cef/issues/3031 | ||||
|     'name': 'views_widget', | ||||
|   }, | ||||
|   { | ||||
|     # Allow specification of a custom WebContentsView. | ||||
|   | ||||
| @@ -73,7 +73,7 @@ index 5b2aa87a53fa..302626b947c6 100644 | ||||
|    FRIEND_TEST_ALL_PREFIXES( | ||||
|        BrowserSideFlingBrowserTest, | ||||
| diff --git content/browser/renderer_host/render_widget_host_view_event_handler.cc content/browser/renderer_host/render_widget_host_view_event_handler.cc
 | ||||
| index b49d2f96efec..080a49940263 100644
 | ||||
| index b49d2f96efec..d6308880de1b 100644
 | ||||
| --- content/browser/renderer_host/render_widget_host_view_event_handler.cc
 | ||||
| +++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
 | ||||
| @@ -37,6 +37,10 @@
 | ||||
| @@ -102,6 +102,24 @@ index b49d2f96efec..080a49940263 100644 | ||||
|  #endif | ||||
|    synthetic_move_position_ = center_in_screen; | ||||
|  } | ||||
| @@ -985,6 +997,17 @@ bool RenderWidgetHostViewEventHandler::MatchesSynthesizedMovePosition(
 | ||||
|  } | ||||
|   | ||||
|  void RenderWidgetHostViewEventHandler::SetKeyboardFocus() { | ||||
| +#if defined(OS_WIN)
 | ||||
| +  if (host_view_->HasExternalParent() &&
 | ||||
| +      window_ && window_->delegate()->CanFocus()) {
 | ||||
| +    aura::WindowTreeHost* host = window_->GetHost();
 | ||||
| +    if (host) {
 | ||||
| +      gfx::AcceleratedWidget hwnd = host->GetAcceleratedWidget();
 | ||||
| +      if (!(::GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_NOACTIVATE))
 | ||||
| +        ::SetFocus(hwnd);
 | ||||
| +    }
 | ||||
| +  }
 | ||||
| +#endif
 | ||||
|    // TODO(wjmaclean): can host_ ever be null? | ||||
|    if (host_ && set_focus_on_mouse_down_or_key_event_) { | ||||
|      set_focus_on_mouse_down_or_key_event_ = false; | ||||
| diff --git content/public/browser/render_widget_host_view.h content/public/browser/render_widget_host_view.h
 | ||||
| index beba7a3a40b8..941acdfbff8b 100644
 | ||||
| --- content/public/browser/render_widget_host_view.h
 | ||||
		Reference in New Issue
	
	Block a user